
Un outil AWS pour vous aider à créer une évaluation ponctuelle de votre compte AWS à l'aide de Prowler.
La cybersécurité reste un sujet très important et une source de préoccupation pour de nombreux DSI, RSSI et leurs clients. Pour répondre à ces préoccupations majeures, AWS a développé un ensemble principal de services que les clients devraient utiliser pour protéger leurs comptes. Les revues Amazon GuardDuty, AWS Security Hub, AWS Config et AWS Well-Architected aident les clients à maintenir une posture de sécurité solide sur leurs comptes AWS. Comme de plus en plus d'organisations déploient leurs solutions dans le cloud, surtout si elles le font rapidement, et qu'elles n'ont pas encore mis en œuvre les services AWS recommandés, il peut être nécessaire de réaliser une évaluation rapide de la sécurité de l'environnement cloud.
Nous avons développé une solution peu coûteuse, facile à déployer, sécurisée et rapide pour fournir à nos clients un rapport d'évaluation de sécurité. Ces rapports sont générés à l'aide du projet open source Prowler. Prowler effectue une évaluation de sécurité à un instant donné sur la base des bonnes pratiques AWS et peut aider à identifier rapidement les zones de risque potentielles dans l'environnement déployé d'un client. Si vous souhaitez effectuer ces évaluations en continu, AWS recommande d'activer la norme Foundational Security Best Practices de Security Hub. Si vous souhaitez intégrer vos résultats d'évaluation Prowler à Security Hub, vous pouvez suivre les instructions de la Documentation Prowler.
Note : Prowler n'est pas une solution détenue par AWS. Les clients doivent évaluer Prowler de manière indépendante avant d'exécuter cette solution. Toutes les dépendances associées à Prowler doivent être maintenues à jour. Cette solution installe une version épinglée de Prowler (actuellement 5.41.0) à partir de l'installateur de paquets pip, afin qu'une modification du format de sortie de Prowler ne puisse pas interrompre une analyse sans avertissement. Pour passer à une version plus récente, modifiez la ligne
pip3 install prowler==dans2-sat2-codebuild-prowler.yaml.
📕 Pour des instructions détaillées plus approfondies, consultez le module 2 de l'atelier SHIP.
La solution est déployée avec AWS CloudFormation. Lors du déploiement, un projet AWS CodeBuild et un compartiment Amazon S3 pour stocker les rapports générés par Prowler sont créés. Une fonction AWS Lambda est ensuite utilisée pour démarrer le projet AWS CodeBuild.
Les valeurs par défaut des paramètres (saisie utilisateur) exécuteront une analyse de base sur un compte unique. Cependant, vous pouvez choisir différents paramètres pour exécuter des analyses plus étendues ou pour analyser plusieurs comptes. Le processus de déploiement prend moins de 5 minutes. Les modèles AWS CloudFormation de la solution sont fournis pour examen dans ce dépôt Github.
Une fois le modèle déployé, le projet CodeBuild s'exécutera. L'évaluation par défaut prend environ 5 minutes. Le temps nécessaire pour réaliser une évaluation de sécurité varie en fonction du nombre de ressources et des options d'analyse sélectionnées. À la fin des évaluations, les rapports sont livrés dans le compartiment S3 créé.

SATv2 peut être personnalisé en mettant à jour les paramètres CloudFormation. Cette section résume les options disponibles et fournit un lien vers la section contenant plus d'informations.
| Paramètre | Description | Plus d'informations |
|---|---|---|
| ProwlerScanType | Spécifiez le type d'analyse à effectuer. La sélection de full sans spécifier de ProwlerOptions différentes effectuera une analyse complète. Pour effectuer une vérification spécifique, choisissez Full et ajoutez -c à ProwlerOptions. | Types d'analyse |
| MultiAccountScan | Définissez ce paramètre sur true si vous souhaitez analyser tous les comptes de votre organisation. Vous devez avoir déployé le modèle prérequis pour provisionner un rôle, ou spécifier un ProwlerRole différent avec les autorisations appropriées. | Analyse multi-comptes |
| Reporting | Définissez ce paramètre sur true si vous souhaitez résumer les rapports Prowler dans un seul fichier csv. Ceci est utile lors de l'analyse de plusieurs comptes. | Résumé des rapports |
| EmailAddress | Spécifiez une adresse si vous souhaitez recevoir un e-mail à la fin de l'évaluation. | Notifications |
| Paramètres avancés | ||
| ConcurrentAccountScans | Pour les analyses multi-comptes, spécifiez le nombre de comptes à analyser simultanément. Ceci est utile pour les grandes organisations comptant de nombreux comptes. La sélection de plus de trois modifie la taille de l'instance CodeBuild et peut entraîner des coûts supplémentaires. | |
| CodeBuildTimeout | Définissez le délai d'expiration du travail CodeBuild. La valeur par défaut est de 300 minutes (5 heures). | |
| MultiAccountListOverride | Spécifiez une liste de comptes séparés par des espaces à analyser. Laisser ce champ vide analysera tous les comptes de votre organisation. Assurez-vous d'avoir défini le paramètre MultiAccountScan ci-dessus sur true si vous souhaitez analyser des comptes spécifiques. Si vous ne pouvez pas fournir un accès ListAccount délégué, vous pouvez fournir le paramètre MultiAccountListOverride. | Analyse multi-comptes |
| ProwlerOptions | Spécifiez les paramètres pour Prowler. Le --role et l'ARN seront automatiquement ajoutés à la fin des paramètres que vous spécifiez. Ceci peut également être utilisé pour spécifier une seule vérification. | Analyse complète |
| ProwlerRole | Le rôle que Prowler doit assumer pour effectuer l'analyse. Modifiez ceci si vous souhaitez spécifier votre propre rôle avec des autorisations différentes. |
Vous pouvez utiliser ce projet pour exécuter Prowler sur plusieurs comptes d'une organisation AWS, ou sur un compte unique. Nous fournissons des instructions pour utiliser AWS CloudShell ou la console AWS. Choisissez une option pour commencer.
Pour exécuter la solution d'évaluation de sécurité en libre-service (SATv2) sur un compte unique, suivez les instructions ci-dessous. Vous pouvez choisir d'utiliser l'AWS CLI ou la console AWS.
Connectez-vous à votre compte AWS.
Dans la barre de navigation, choisissez AWS CloudShell.
Pour télécharger le modèle CloudFormation, saisissez la commande suivante.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml
Pour créer un compartiment S3 afin de préparer le modèle, saisissez les commandes suivantes. Le modèle dépasse 51 200 octets, CloudFormation exige donc qu'il soit téléchargé sur S3 plutôt que transmis en ligne.
TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION
aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION
Pour déployer le modèle CloudFormation, saisissez la commande suivante. L'option --s3-bucket télécharge le modèle dans le compartiment avant de créer la pile.
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2 \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET
Une fois la pile créée, vous pouvez supprimer le compartiment de préparation. Il sert uniquement à transmettre le modèle à CloudFormation.
aws s3 rb s3://$TEMPLATE_BUCKET --force
La solution d'évaluation de sécurité en libre-service (SAT) prend également en charge les analyses multi-comptes. Vous devez déployer un rôle prérequis sur chaque compte que vous souhaitez analyser. Pour exécuter SATv2 sur plusieurs comptes, suivez les instructions ci-dessous. Vous pouvez choisir d'utiliser l'AWS CLI ou la console AWS.
Ces instructions supposent que vous disposez déjà des prérequis pour les opérations de jeux de piles. Pour plus d'informations, consultez le Guide de l'utilisateur AWS CloudFormation.
Note : Les StackSets ne s'appliquent pas au compte de gestion. Pour évaluer le compte de gestion, déployez le 1-sat2-member-role en tant que pile CloudFormation.
Connectez-vous à votre compte de gestion AWS.
Dans la barre de navigation, choisissez AWS CloudShell.
Identifiez le compte à partir duquel vous exécuterez l'analyse Prowler. Les clients utilisent généralement un compte d'outillage de sécurité ou un compte d'audit. Notez l'ID du compte pour le paramètre ProwlerAccountID.
Pour télécharger le modèle CloudFormation, saisissez la commande suivante.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/1-sat2-member-roles.yaml
Déployez le modèle CloudFormation via les StackSets CloudFormation. Mettez à jour les paramètres suivants :
aws cloudformation create-stack-set --template-body file://1-sat2-member-roles.yaml \
--stack-set-name sat2-member-roles \
--permission-model SERVICE_MANAGED \
--auto-deployment Enabled=true,RetainStacksOnAccountRemoval=false \
--capabilities CAPABILITY_NAMED_IAM \
--parameters ParameterKey=ProwlerAccountID,ParameterValue=<aws-account-id> \
--region <region>
Utilisez la commande suivante pour créer des instances de pile pour chaque compte de votre organisation. Vous pouvez cibler une OU spécifique ou l'OU racine. Mettez à jour les paramètres suivants :
aws cloudformation create-stack-instances --stack-set-name sat2-member-roles \
--deployment-targets OrganizationalUnitIds='["<root-ou>"]' \
--regions '["<region>"]' \
--operation-preferences FailureTolerancePercentage=100,MaxConcurrentPercentage=100 \
--region <region>
Déterminez si vous disposez d'un administrateur délégué ou d'une politique de ressources déjà existante pour votre compte Prowler. Une seule option est nécessaire et la politique de ressources est encouragée car elle est plus granulaire.
Note : Les politiques de ressources ne sont pas disponibles dans GovCloud, vous devrez donc utiliser un administrateur délégué.
7a. Votre compte Prowler peut déjà disposer d'une délégation. Vous pouvez utiliser les commandes suivantes pour vérifier :
aws organizations list-delegated-administrators
7b. Votre compte Prowler peut déjà disposer d'une politique de ressources. Vous pouvez utiliser les commandes suivantes pour vérifier :
aws organizations describe-resource-policy
Si vous ne disposez pas d'un administrateur délégué ou d'une politique de ressources, vous pouvez utiliser les commandes suivantes pour ajouter l'accès approprié.
Note : Si vous ne pouvez pas fournir un accès ListAccount délégué, vous pouvez fournir le paramètre MultiAccountListOverride dans le modèle
2-sat2-codebuild-prowler.
Note : Si vous utilisez GovCloud, utilisez l'étape 8a pour créer un administrateur délégué. Si vous utilisez une région commerciale, utilisez l'étape 8b pour fournir un accès au moindre privilège à ListAccounts.
8a. Utilisez la commande suivante pour déléguer un administrateur si vous n'en avez pas déjà un. Remplacez <aws-account-id> par l'ID du compte à partir duquel vous exécuterez Prowler.
aws organizations register-delegated-administrator <aws-account-id>
8b. Utilisez les commandes suivantes pour ajouter une politique de ressources.
Remplacez <aws-account-id> par l'ID du compte à partir duquel vous exécuterez Prowler.
aws organizations put-resource-policy --content \
'{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<aws-account-id>:root"
},
"Action": [
"organizations:ListAccounts",
"organizations:DescribeAccount",
"organizations:ListTagsForResource",
"organizations:ListParents",
"organizations:DescribeOrganizationalUnit"
],
"Resource": "*"
}
]
}'
Note :
ListParentset sont ce qui remplit les colonnes et dans les résultats. Si vous les omettez, le reste de l'analyse fonctionne toujours, mais ces deux colonnes reviennent vides.
Note : Assurez-vous d'avoir basculé sur le compte que vous avez spécifié pour exécuter Prowler.
Pour télécharger le modèle, ouvrez AWS CloudShell dans le compte Prowler et saisissez la commande suivante.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml
Pour créer un compartiment S3 afin de préparer le modèle, saisissez les commandes suivantes. Le modèle dépasse 51 200 octets, CloudFormation exige donc qu'il soit téléchargé sur S3 plutôt que transmis en ligne.
TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION
aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION
Pour déployer le modèle dans le compte Prowler. Définissez MultiAccountScan sur true pour analyser tous les comptes de votre organisation. L'option --s3-bucket télécharge le modèle dans le compartiment avant de créer la pile.
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides MultiAccountScan=true
Une fois la pile créée, vous pouvez supprimer le compartiment de préparation. Il sert uniquement à transmettre le modèle à CloudFormation.
aws s3 rb s3://$TEMPLATE_BUCKET --force
Téléchargez les fichiers 1-sat2-member-roles.yaml et 2-sat2-codebuild-prowler.yaml.
Déployez le modèle CloudFormation via les StackSets CloudFormation. Mettez à jour les paramètres suivants :
Dans le volet de navigation, choisissez StackSets.
Choisissez Create StackSet.
Pour Permissions, laissez Service-managed permissions sélectionné.
Sous Specify template, sélectionnez Upload a template file.
Choisissez 1-sat2-member-roles.yaml que vous avez téléchargé à l'étape 1-1.
Choisissez Next.
Pour Stack name, saisissez sat2-member-role.
Pour Parameters, saisissez ce qui suit :
Choisissez Next.
Sur la page Configure StackSet options, choisissez Next.
Sur la page Set deployment options, saisissez ce qui suit :
Choisissez Next.
Sur la page Review, cochez la case I acknowledge that AWS CloudFormation might create IAM resources. et choisissez Submit.
Déterminez si vous disposez d'un administrateur délégué ou d'une politique de ressources déjà existante pour le compte dans lequel vous souhaitez déployer Prowler. Il est recommandé d'exécuter Prowler depuis votre compte d'outillage de sécurité (Audit). Pour mettre à jour ou vérifier que le compte d'audit dispose des autorisations pour ListAccounts, suivez ces étapes.
Accédez à la console AWS Organization.
Dans le volet de navigation, choisissez Settings.
Pour Delegated administrator for AWS Organizations, incluez la déclaration suivante.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<aws-account-id>:root"
},
"Action": [
"organizations:ListAccounts",
"organizations:DescribeAccount",
"organizations:ListTagsForResource",
"organizations:ListParents",
"organizations:DescribeOrganizationalUnit"
],
"Resource": "*"
}
]
}
Remarque :
ListParentsetDescribeOrganizationalUnitsont ce qui remplit les colonnesaccount_ou_uidetaccount_ou_namedans les résultats. Si vous les omettez, le reste de l'analyse fonctionne toujours, mais ces deux colonnes reviennent vides.
Accédez à la console AWS CloudFormation dans le compte à partir duquel vous exécuterez l'outil (ProwlerAccountID).
Dans le volet de navigation, choisissez Stacks.
Choisissez Create stack.
Sous Specify template, sélectionnez Upload a template file.
Choisissez 2-sat2-codebuild-prowler.yaml que vous avez téléchargé à l'étape 1-1.
Choisissez Next.
Pour Stack name, saisissez sat2-prowler.
Dans la section Parameters, pour MultiAccountScan, sélectionnez true.
Vous pouvez éventuellement activer le reporting pour obtenir un résumé de tous les comptes dans un seul fichier csv. Pour Reporting, sélectionnez true.
Choisissez Next.
Sur la page Configure stack options, choisissez Next.
Sur la page Review SAS, cochez la case I acknowledge that AWS CloudFormation might create IAM resources. et choisissez Submit.
Après le déploiement de la solution, une fonction Lambda démarre le projet CodeBuild. Une fois le projet CodeBuild terminé, les résultats de Prowler seront téléchargés vers le bucket Amazon S3 créé. Si vous avez configuré les notifications, vous recevrez un e-mail lorsque l'analyse Prowler sera terminée. Si vous avez configuré le reporting, vous disposerez d'un fichier csv consolidé dans le dossier /reports.
Si vous n'avez pas configuré d'alertes par e-mail, vous pouvez suivre la progression depuis la console CodeBuild.
Pour examiner les résultats, suivez ces étapes.
Accédez à la console Amazon S3 dans le compte où vous avez déployé Prowler.
Sélectionnez le bucket qui commence par sat2-prowler-prowlerfindingsbucket-
Choisissez le dossier correspondant au format de sortie souhaité, puis les dossiers scan_date= et scan_time= pour l'exécution que vous souhaitez examiner.
Chaque format de sortie possède son propre dossier de niveau supérieur, et chaque exécution écrit dans un sous-dossier scan_date=YYYY-MM-DD/scan_time=HHMMSS en dessous. L'heure correspond à l'heure UTC du début de l'analyse :
csv/scan_date=2026-09-01/scan_time=204955/ Résultats CSV de Prowler, tels qu'écrits
html/scan_date=2026-09-01/scan_time=204955/ Rapports HTML par compte
json/scan_date=2026-09-01/scan_time=204955/ JSON par compte
ocsf-json/scan_date=2026-09-01/scan_time=204955/ JSON OCSF par compte
parquet/scan_date=2026-09-01/scan_time=204955/ La copie interrogée par Athena
compliance/scan_date=2026-09-01/scan_time=204955/ CSV de conformité, lorsqu'ils sont produits
reports/ CSV consolidé et tableau de bord
Chaque exécution possède son propre dossier, donc relancer la solution ne mélange jamais les nouveaux résultats avec les anciens, y compris lorsque vous l'exécutez plusieurs fois le même jour. Les exécutions précédentes sont conservées afin que vous puissiez les comparer.
Pour chaque compte, il y aura 4 types de fichiers (csv, html, json, json-ocsf) au format prowler-output-<aws-account-id>-<datetime>.
Sélectionnez l'un des objets html.
Choisissez Open.

Une nouvelle fenêtre s'ouvrira avec votre rapport. Vous pouvez utiliser les filtres pour identifier et prioriser les résultats.

Si vous avez activé le reporting, un tableau de bord html statique se trouvera dans le dossier reporting.
Remarque : Ne partagez votre URL pré-signée avec personne. Une URL pré-signée utilise des identifiants de sécurité pour accorder une autorisation limitée dans le temps de télécharger des objets. L'URL peut être saisie dans un navigateur ou utilisée par un programme pour télécharger l'objet. Les identifiants utilisés par l'URL pré-signée sont ceux de l'utilisateur AWS qui a généré l'URL. Pour plus d'informations, consultez Partage d'objets avec des URL pré-signées.
Prowler dispose d'un tableau de bord intégré pour examiner les résultats. Pour utiliser le tableau de bord Prowler, Prowler doit être installé localement et vous devez télécharger les résultats de Prowler localement.
Vous devez disposer de l'interface de ligne de commande (CLI) AWS et d'identifiants valides. Pour plus d'informations, consultez le guide de l'utilisateur de l'interface de ligne de commande AWS.
Installez Prowler. Pour plus d'informations, consultez les instructions d'installation de Prowler.
pip install prowler
Obtenez le nom du bucket Amazon S3. Le nom du bucket se trouve dans la console CloudFormation en tant que ressource ProwlerFindingsBucket. Vous pouvez également accéder à la console S3 et rechercher un bucket au format {stack_name}-prowlerfindingsbucket-{ID}
Téléchargez les CSV et les données de conformité depuis S3. Si vous n'avez pas effectué d'analyse complète, vous n'aurez peut-être pas de données de conformité. Remplacez {bucket_name} par le nom de votre bucket, et {scan_date} et {scan_time} par l'exécution que vous souhaitez charger, par exemple 2026-09-01 et 204955. Pour lister les exécutions disponibles, utilisez aws s3 ls s3://{bucket_name}/csv/scan_date={scan_date}/.
aws s3 sync s3://{bucket_name}/compliance/scan_date={scan_date}/scan_time={scan_time}/ output/compliance/
aws s3 sync s3://{bucket_name}/csv/scan_date={scan_date}/scan_time={scan_time}/ output/
Remarque : Synchronisez une exécution à la fois. Le tableau de bord Prowler lit
output/*.csvet ne recherche pas dans les sous-dossiers. Copier les dossiersscan_date=eux-mêmes dansoutput/produira donc un tableau de bord vide. Charger deux exécutions à la fois afficherait chaque résultat deux fois.
Exécutez le tableau de bord. Utilisez la commande suivante pour lancer le tableau de bord. Par défaut, il démarrera sur http://127.0.0.1:11666/.
prowler dashboard
Par défaut, SAT2 exécute une analyse de base qui comprend 13 contrôles. Vous pouvez choisir d'exécuter une analyse intermédiaire ou complète en sélectionnant une autre valeur pour le paramètre ProwlerScanType.
Par exemple, une analyse d'un seul compte utilisant l'option d'analyse intermédiaire utiliserait cette commande :```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml
--stack-name sat2-prowler
--capabilities CAPABILITY_NAMED_IAM
--s3-bucket $TEMPLATE_BUCKET
--parameter-overrides ProwlerScanType=Intermediate
>Remarque : L'option `--s3-bucket` est requise car le modèle dépasse 51 200 octets, la taille maximale que CloudFormation accepte en ligne. `$TEMPLATE_BUCKET` est le bucket de préproduction créé lors des étapes de déploiement CloudShell ci-dessus. Cela s'applique à chaque exemple de `aws cloudformation deploy` dans ce README.
Des vérifications sont fréquemment ajoutées ; pour voir les dernières vérifications, exécutez la commande `prowler aws --list-checks`. Un exemple a été fourni ci-dessous pour chaque niveau de vérification.
### Analyse de base
Pour voir la liste des vérifications, consultez [basic checks](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/basic_checks.txt).
- Vérification manuelle - Maintenir les coordonnées de contact à jour.
- Trouver les runtimes Lambda obsolètes.
- S'assurer que CloudTrail est activé dans toutes les régions.
- S'assurer que AWS Config est activé dans toutes les régions.
- S'assurer qu'aucun groupe de sécurité n'autorise le trafic entrant depuis 0.0.0.0/0 ou ::/0 vers un port quelconque.
- Vérifier si GuardDuty est activé.
- S'assurer que la politique de mots de passe IAM exige au moins une lettre minuscule.
- S'assurer que la politique de mots de passe IAM exige au moins un chiffre.
- S'assurer que la politique de mots de passe IAM exige au moins un symbole.
- S'assurer que la politique de mots de passe IAM exige au moins une lettre majuscule.
- S'assurer que le MFA est activé pour le compte racine.
- S'assurer que les clés d'accès sont renouvelées tous les 90 jours ou moins.
- S'assurer qu'il n'y a aucun bucket S3 ouvert à Tout le monde ou à tout utilisateur AWS.
### Analyse intermédiaire
Pour voir la liste des vérifications, consultez [intermediate checks](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/intermediate_checks.txt).
Cette analyse ajoutera `--severity critical high` aux options d'analyse Prowler. Avec cette sélection, Prowler exécutera toutes les vérifications de sécurité dont la gravité est critique ou élevée.
### Analyse complète
Pour voir la liste des vérifications, consultez [full checks](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/full_checks.txt).
Cette option n'ajoute aucun paramètre supplémentaire à l'analyse Prowler. Elle entraînera l'exécution de plus de 500 vérifications par Prowler.
Vous pouvez également utiliser l'analyse complète pour personnaliser l'analyse comme vous le souhaitez.
Pour **ProwlerScanType**, choisissez **Full**.
Pour **ProwlerOptions**, ajoutez la vérification. Par exemple, pour vérifier uniquement si GuardDuty est activé, saisissez :
`aws --ignore-exit-code-3 -c guardduty_is_enabled`
## Notifications
Vous pouvez éventuellement spécifier une adresse e-mail dans le paramètre EmailAddress lors du déploiement du modèle CloudFormation. Cela créera un sujet SNS et enverra un e-mail lorsque le travail CodeBuild sera terminé.
Cela peut être utile lors de l'exécution d'analyses plus longues ou sur plusieurs comptes.
Par exemple, une analyse d'un seul compte avec notifications par e-mail utiliserait cette commande :```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides [email protected]
Avec ou sans le paramètre facultatif EmailAddress défini, vous pouvez consulter la progression dans la console CodeBuild.
Accédez à la console CodeBuild.
Dans le volet de navigation, sous Build, choisissez Build projects.
Choisissez le projet de build qui commence par ProwlerCodeBuild-.
Sous Build history, vous verrez la dernière exécution.

Vous pouvez éventuellement choisir Start build pour exécuter une autre analyse avec les options que vous avez choisies lors du déploiement de la solution.
Vous pouvez éventuellement activer le rapport pour résumer plusieurs résultats d'analyse Prowler dans un seul fichier. Cela peut être utile lors de l'exécution de Prowler sur plusieurs comptes dans une organisation AWS. La fonctionnalité de résumé du rapport est désactivée par défaut. Pour activer le rapport, définissez le paramètre Reporting sur true lors du déploiement du modèle CloudFormation. Cela créera un WorkGroup Athena, une table Glue et exécutera automatiquement une requête pour consolider les résultats. Le fichier csv résumé se trouve dans le même compartiment S3 que les résultats Prowler, dans le dossier /reports.
Si vous spécifiez une adresse e-mail alors que le rapport est activé, vous recevrez un deuxième e-mail lorsque la requête Athena sera terminée.
Athena interroge la copie parquet/ des résultats plutôt que le CSV de Prowler. Le projet CodeBuild convertit chaque CSV en Parquet avant de le téléverser, et la table Glue prowler pointe vers parquet/.
La conversion existe parce que Prowler 5.17.0 et versions ultérieures incluent du markdown multiligne dans leurs métadonnées de vérification, de sorte que les champs DESCRIPTION, RISK et REMEDIATION_* contiennent des sauts de ligne. Prowler cite correctement ces champs, mais Athena lit le CSV via TextInputFormat de Hive, qui divise les enregistrements sur les sauts de ligne avant l'exécution de tout SerDe. Une table adossée à un CSV renvoie donc une ligne par ligne physique au lieu d'une ligne par résultat, et supprime silencieusement les colonnes qui suivent le premier champ multiligne. Parquet n'utilise pas les sauts de ligne comme délimiteurs d'enregistrement, de sorte que le texte survit intact. Parquet compresse également fortement le texte de remédiation répété, ce qui rend les requêtes moins coûteuses : un ensemble de CSV de 116 Mo devient environ 3 Mo de Parquet.
Le dossier csv/ est laissé exactement tel que Prowler l'a écrit, de sorte que le tableau de bord Prowler et tout outil CSV existant continuent de fonctionner.
La table est partitionnée sur scan_date et scan_time, de sorte que chaque exécution de la solution obtient sa propre partition. Deux conséquences en découlent :
/reports ne couvre que l'exécution la plus récente, de sorte que la ré-exécution de la solution ne compte jamais deux fois les résultats, et les résultats qui n'existent plus ne persistent pas dans le rapport.scan_date et scan_time sont des colonnes normales, vous pouvez donc comparer les résultats entre les exécutions. La requête enregistrée Prowler scan trend fait cela, une ligne par exécution.Le partitionnement sur la seule date ne suffit pas. Une deuxième analyse le même jour écrirait dans la même partition, et ses résultats seraient fusionnés avec ceux de l'exécution précédente plutôt que de les remplacer. Tout résultat que la nouvelle analyse ne signale plus, parce qu'une ressource a été supprimée, qu'un compte a quitté l'organisation, qu'un rôle membre a cessé de fonctionner ou que le type d'analyse a été réduit, apparaîtrait toujours dans le rapport et semblerait actuel.
Les nouvelles partitions sont enregistrées automatiquement : la Lambda de rapport exécute MSCK REPAIR TABLE avant d'exécuter la requête de consolidation, de sorte qu'il n'y a aucun crawler à planifier ni rien à ajouter à la main.
Si vous écrivez vos propres requêtes Athena, limitez-les à une seule exécution, sinon vous agrégerez toutes les analyses du compartiment à la fois. Les deux clés sont à largeur fixe, de sorte que leur comparaison concaténée ordonne les exécutions chronologiquement :```sql SELECT severity, count(*) FROM "{bucket_name}"."prowler" WHERE status = 'FAIL' AND concat(scan_date, scan_time) = ( SELECT max(concat(scan_date, scan_time)) FROM "{bucket_name}"."prowler" ) GROUP BY severity
Pour interroger une journée entière sur l’ensemble de ses exécutions, filtrez uniquement sur `scan_date`.
>Remarque : Si vous mettez à niveau un déploiement qui utilisait l’ancienne structure basée uniquement sur `scan_date`, les résultats antérieurs à la mise à niveau ne sont pas visibles dans la nouvelle table, car leurs chemins S3 ne comportent pas de niveau `scan_time=`. Les données restent intactes dans S3. Soit vous laissez la prochaine analyse repeupler la table, soit vous déplacez les anciens fichiers dans un dossier `scan_time=`, par exemple `aws s3 mv s3://{bucket_name}/parquet/scan_date={scan_date}/ s3://{bucket_name}/parquet/scan_date={scan_date}/scan_time=000000/ --recursive`, puis exécutez `MSCK REPAIR TABLE prowler` dans Athena.
Par exemple, une analyse multi-comptes avec rapports et alertes e-mail activés utiliserait cette commande :```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides MultiAccountScan=true Reporting=true [email protected]

Deux requêtes enregistrées sont créées à titre d'exemple :
| Requête enregistrée | Ce qu'elle affiche |
|---|---|
| Prowler organization summary | Échecs de contrôles sur chaque compte évalué, pour l'analyse la plus récente. |
| Prowler scan trend | Échecs de contrôles par date d'analyse et gravité, pour comparer les exécutions dans le temps. |
Pour consulter et exécuter une requête, suivez ces étapes :
Accédez à la console Amazon Athena.
Choisissez le groupe de travail qui commence par sat2-prowler-*.
Choisissez l'onglet Requêtes enregistrées.
Sélectionnez la requête que vous souhaitez exécuter en choisissant l'ID.

Choisissez Exécuter pour lancer la requête.

| Contrôle | Atténuation |
|---|---|
| Vérifier si les opérations d'API invoquées par les fonctions Lambda sont enregistrées par CloudTrail. | CloudTrail est une configuration au niveau du compte AWS. CloudTrail doit être activé indépendamment de SATv2. |
| Activer la protection contre la suppression pour les piles CloudFormation | SATv2 est conçu pour être exécuté à un moment donné, puis supprimé. Si la pile est supprimée, les résultats sont toujours conservés dans le bucket S3. |
| Vérifier si les groupes de journaux CloudWatch sont protégés par AWS KMS. | Les données des groupes de journaux sont toujours chiffrées dans CloudWatch Logs. Par défaut, CloudWatch Logs utilise le chiffrement côté serveur pour les données de journaux au repos. La clé KMS gérée par le client n'est pas configurée pour réduire les coûts. |
| Vérifier si les groupes de journaux CloudWatch ont une politique de conservation de jours spécifiques. | La conservation des groupes de journaux est définie sur 7 jours par conception. Ce contrôle recherche les groupes de journaux avec une conservation inférieure à un an. |
| Vérifier si les buckets S3 ont le chiffrement KMS activé. | Tous les buckets Amazon S3 ont un chiffrement configuré par défaut, et les objets sont automatiquement chiffrés à l'aide du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). La clé KMS gérée par le client n'est pas configurée pour réduire les coûts. |
| Vérifier si la suppression MFA des buckets S3 n'est pas activée. | Les résultats de l'évaluation Prowler peuvent être régénérés et ne nécessitent pas la suppression MFA. |
| Vérifier si les buckets S3 ont le verrouillage d'objet activé | Les résultats de l'évaluation Prowler peuvent être régénérés et ne nécessitent pas le verrouillage d'objet S3. |
| Vérifier si les buckets S3 ont la journalisation des accès serveur activée | Les résultats de l'évaluation Prowler ne nécessitent pas la journalisation des accès serveur. |
Après avoir exécuté la solution, vous devez supprimer les piles CloudFormation pour retirer les ressources qui ne sont plus nécessaires. Le bucket S3 contenant les résultats de l'analyse Prowler sera conservé.
Pour supprimer la solution d'évaluation de sécurité de votre compte, suivez ces étapes.
Accédez à la console AWS CloudFormation dans le compte à partir duquel vous avez exécuté l'outil (ProwlerAccountID).
Dans le volet de navigation, choisissez Piles.
Choisissez la pile sat2-prowler.
Choisissez Supprimer.
Si vous avez déployé le StackSet de rôles membres pour analyser plusieurs comptes, suivez ces étapes.
Accédez à la console AWS CloudFormation dans le compte où vous avez créé le StackSet de rôles membres.
Dans le volet de navigation, choisissez StackSets.
Choisissez le StackSet sat2-member-roles.
Choisissez Actions, puis Supprimer les piles du StackSet.
Spécifiez le même ID d'unité organisationnelle AWS que celui utilisé lors de la création du StackSet.
Pour Spécifier les régions, choisissez Ajouter toutes les régions.
Choisissez Suivant, puis Soumettre.
Une fois la modification terminée, vous pouvez supprimer le StackSet.
Choisissez le StackSet sat2-member-roles.
Choisissez Actions, puis Supprimer le StackSet.
Si vous souhaitez supprimer le bucket Amazon S3 contenant les résultats de l'analyse, suivez les étapes du guide de l'utilisateur Amazon S3 pour supprimer les objets et le bucket. Si vous exécutez à nouveau la solution, un nouveau bucket S3 sera créé pour vos résultats.
Consultez CONTRIBUTING pour plus d'informations.
Ce projet est sous licence Apache-2.0.
DescribeOrganizationalUnitaccount_ou_uidaccount_ou_name