Security Hub Compliance Analyser (SHCA) génère des artefacts à l’appui de l’accréditation du système d’information du cadre de gestion des risques (RMF) du ministère de la Défense. À l'aide de la documentation fournie par Amazon Web Services, mappant les contrôles NIST800-53-Rev-5 aux ID de contrôle de sécurité AWS Security Hub, SHCA demande la conformité de l'environnement actuel à Security Hub et génère un fichier zip stocké dans Amazon S3 contenant des artefacts discrets au format CSV, JSON, OCSF fournit à SecOps des artefacts à importer dans l'outil RMF.
Security Hub avec la norme de sécurité NIST Special Publication 800-53 Revision 5 et fonctionnant pendant au moins 24 heures pour produire des résultats
** Pour plus d'informations sur l'activation de cette norme, visitez Activation et désactivation des normes de sécurité )
Tous les résultats de Security Hub sont extraits et enregistrés au format JSON.
Les résultats les plus récents de chaque identifiant de contrôle/ressource dans le JSON sont écrits dans un fichier CSV pour une meilleure analyse et une meilleure lisibilité.
Un récapitulatif de tous les contrôles est créé à partir du fichier CSV selon la méthodologie suivante
Cette étape crée un fichier pour chaque contrôle NIST SP 800-53 en fonction de l'état de ce contrôle et les stocke dans deux dossiers :
De plus, cette étape récupère et inclut divers fichiers d'un compartiment S3. Les dossiers et leur contenu sont :
Ces fichiers fournissent des données complètes sur l'état de sécurité des ressources AWS, basées sur les contrôles de sécurité automatisés NIST SP 800-53 de Security Hub.
Voici ce que vous devez installer pour utiliser le AWS CDK.
Validation de l'installation de Python 3.7 ou version ultérieure, pip, virtualenv et Node.js sous Linux
node --version
Tous les développeurs AWS CDK, même ceux travaillant avec Python, Java ou C#, ont besoin de Node.js 14.15.0 ou version ultérieure. Tous les langages pris en charge utilisent le même backend, qui s'exécute sur Node.js. Nous recommandons une version en support actif à long terme. Votre organisation peut avoir une recommandation différente.
Les autres conditions préalables dépendent du langage dans lequel vous développez les applications AWS CDK et sont les suivantes :
python3 --version
pip3 --version
virtualenv --version
wget --version
jq --version
npm install -g aws-cdk
Exécutez la commande suivante pour vérifier l'installation correcte et imprimer le numéro de version du AWS CDK.
cdk --version
Le fichier cdk.json
indique au CDK Toolkit comment exécuter l'application.
Ce projet est configuré comme un projet Python standard. Le processus d'initialisation crée également un virtualenv au sein de ce projet, stocké sous le répertoire .venv
. Pour créer le virtualenv, cela suppose qu'il existe un exécutable python3
(ou python
pour Windows) dans votre chemin avec accès au package venv
. Si, pour une raison quelconque, la création automatique du virtualenv échoue, vous pouvez créer le virtualenv manuellement.
Pour créer manuellement un virtualenv sur MacOS et Linux :
$ python3 -m venv .venv
Une fois le processus d'initialisation terminé et le virtualenv créé, vous pouvez utiliser l'étape suivante pour activer votre virtualenv.
$ source .venv/bin/activate
Si vous êtes sur une plateforme Windows, vous activerez le virtualenv comme ceci :
% .venvScriptsactivate.bat
Une fois le virtualenv activé, vous pouvez installer les dépendances requises.
$ pip install -r requirements-deploy.txt
Téléchargez AWS Lambda Layer pour AWS SDK for Pandas (AWS Wrangler) et placez-le à l'emplacement suivant : Consultez README.md pour plus d'informations.
bash update_aws_wrangler.sh
Le déploiement de piles avec AWS CDK nécessite que des compartiments Amazon S3 dédiés et d'autres conteneurs soient disponibles pour AWS CloudFormation pendant le déploiement. Leur création s'appelle le bootstrapping. Pour démarrer, exécutez :
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
À ce stade, vous pouvez désormais synthétiser le modèle CloudFormation pour ce code.
$ cdk synth
Modifiez les valeurs suivantes dans cdk.json
- "environment": "shca"
- Donnez-lui un nom descriptif pour le déploiement SHCA. Il peut s'agir de n'importe quelle valeur et n'a aucune incidence sur la fonctionnalité. Il s'agit d'étiqueter les ressources SHCA au sein du compte AWS. - "vpc_cidr": "10.30.0.0/24"
- Définit la plage CIDR pour un petit VPC créé pour l'exécution des fonctions Lambda, afin de ne pas créer les fonctions Lambda [Lambda.3] qui doivent être dans un résultat VPC. Sélectionnez une plage CIDR qui n’est pas déjà utilisée dans votre environnement. - "schedule_ Frequency_days": 7
- Ce paramètre dicte la fréquence à laquelle vous souhaitez que SHCA génère des rapports de conformité. - "send_failure_notification_email" : true
ou false
- Si true
, l'e-mail sera envoyé à l'adresse fournie dans failure_notification_email
. - "failure_notification_email" : [email protected]
- Cette adresse e-mail recevra des notifications en cas d'échec de l'exécution de SHCA.
À partir de là, vous avez deux options pour installer SHCA (CloudShell ou CDK)
Si vous n'avez pas accès à un ordinateur portable ou à un environnement de développement sur lequel vous pouvez installer les prérequis ci-dessus, le service CloudShell peut être utilisé pour déployer SHCA. De plus, en utilisant les informations d'identification temporaires d'AWS IAM Identity Center, nous pouvons utiliser un seul CloudShell dans un compte pour effectuer des appels d'API CloudFormation et déployer du code dans n'importe quel compte auquel vous avez accès.
CloudShell est approuvé par DISA pour une utilisation dans les environnements IL2-IL5, y compris les régions Commercial et GovCloud. Veuillez consulter le personnel de conformité de votre organisation pour vous assurer que CloudShell est approuvé pour une utilisation dans le déploiement AWS de votre organisation.
Téléchargez le code source comme shca-main.zip, à partir de la branche principale de ce dépôt.
Accédez au service CloudShell dans le compte AWS que vous utiliserez pour faire office d'environnement de déploiement. Assurez-vous de disposer de suffisamment d'espace dans votre CloudShell avant d'effectuer le déploiement. Si vous manquez d'espace, cela échouera.
Téléchargez le code source dans CloudShell. Décompressez les fichiers et le CD dans le répertoire shca-main
:
unzip shca-main.zip && cd shca-main
Collez les informations d'identification temporaires d'AWS IAM Identity Center pour le compte dans lequel vous souhaitez déployer SHCA . L'AWS CDK utilisera ces informations d'identification temporaires (désormais définies comme variables d'environnement) pour déployer le code dans le compte correct et ciblé, même si vous utilisez CloudShell à partir d'un autre compte.
Exécutez aws sts get-caller-identity
et vérifiez que le principal et le numéro de compte correspondent à vos valeurs attendues.
Accordez les autorisations d'exécution et exécutez ./cloud_shell_deployment.sh
chmod +x cloud_shell_deployment.sh && ./cloud_shell_deployment.sh
Entrez y
lorsque CDK vous le demande dans le shell à deux reprises .
$ cdk deploy
cdk ls
répertorie toutes les piles de l'applicationcdk synth
émet le modèle CloudFormation synthétisécdk deploy
déployez cette pile sur votre compte/région AWS par défautcdk diff
compare la pile déployée avec l'état actuelcdk docs
ouvre la documentation CDK Une fois SHCA déployé :
Accédez au service Step Functions/State Machines :
Sélectionnez YOUR-ENVIRONMENT-NAME-State-Machine
Si vous venez de déployer SHCA pour la première fois, vérifiez que la machine d'état s'est exécutée avec succès en affichant l'exécution. Si la machine d'état s'est exécutée avec succès, passez à l'étape 6 . Sinon, pour exécuter SHCA à la demande, sélectionnez « Démarrer l'exécution » :
Sélectionnez à nouveau « Démarrer l'exécution » dans la fenêtre contextuelle. Laissez toutes les valeurs par défaut.
Faites défiler vers le bas de la page et attendez que toutes les étapes se terminent avec succès. Vous verrez ce "ExecutionSucceeded" en bas une fois terminé.
Accédez à la console Amazon S3, recherchez et sélectionnez le compartiment nommé « -resources-%YOUR_ACCOUNT_NUMBER% »
Dans ce compartiment, accédez à customer/compliance_scraper/
Téléchargez le dernier fichier zip des artefacts.
Examinez les fichiers contenus dans le zip
Voir CONTRIBUTION pour plus d'informations.
Ce projet est sous licence Apache-2.0.