Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'un rapport contenant les résultats de l'analyseur d'accès réseau relatifs à l'accès Internet entrant sur plusieurs comptes AWS
Créée par Mike Virgilio (AWS)
Récapitulatif
L'accès Internet entrant involontaire aux ressources AWS peut présenter des risques pour le périmètre de données d'une organisation. Network Access Analyzer est une fonctionnalité d'Amazon Virtual Private Cloud (Amazon VPC) qui vous aide à identifier les accès réseau non intentionnels à vos ressources sur Amazon Web Services (AWS). Vous pouvez utiliser Network Access Analyzer pour définir vos exigences en matière d'accès au réseau et pour identifier les chemins réseau potentiels qui ne répondent pas à vos exigences. Vous pouvez utiliser Network Access Analyzer pour effectuer les opérations suivantes :
Identifiez les ressources AWS accessibles sur Internet via des passerelles Internet.
Vérifiez que vos clouds privés virtuels (VPCs) sont correctement segmentés, par exemple en isolant les environnements de production et de développement et en séparant les charges de travail transactionnelles.
Network Access Analyzer analyse les conditions d' end-to-endaccessibilité du réseau et ne se limite pas à un seul composant. Pour déterminer si une ressource est accessible à Internet, Network Access Analyzer évalue la passerelle Internet, les tables de routage VPC, les listes de contrôle d'accès réseau (ACLs), les adresses IP publiques sur les interfaces réseau élastiques et les groupes de sécurité. Si l'un de ces composants empêche l'accès à Internet, Network Access Analyzer ne génère aucun résultat. Par exemple, si une instance Amazon Elastic Compute Cloud (Amazon EC2) possède un groupe de sécurité ouvert qui autorise le trafic en provenance 0/0
mais que l'instance se trouve dans un sous-réseau privé qui n'est pas routable depuis une passerelle Internet, Network Access Analyzer ne générera aucun résultat. Cela fournit des résultats très fidèles afin que vous puissiez identifier les ressources réellement accessibles depuis Internet.
Lorsque vous exécutez Network Access Analyzer, vous utilisez les étendues d'accès réseau pour définir vos exigences en matière d'accès au réseau. Cette solution identifie les chemins réseau entre une passerelle Internet et une interface réseau élastique. Dans ce modèle, vous déployez la solution dans un compte AWS centralisé de votre organisation, géré par AWS Organizations, et elle analyse tous les comptes de l'organisation, quelle que soit la région AWS.
Cette solution a été conçue avec les éléments suivants à l'esprit :
Les CloudFormation modèles AWS réduisent l'effort requis pour déployer les ressources AWS selon ce modèle.
Vous pouvez ajuster les paramètres des CloudFormation modèles et du script naa-script.sh au moment du déploiement afin de les personnaliser en fonction de votre environnement.
Les scripts Bash provisionnent et analysent automatiquement les étendues d'accès réseau pour plusieurs comptes, en parallèle.
Un script Python traite les résultats, extrait les données, puis consolide les résultats. Vous pouvez choisir de consulter le rapport consolidé contenant les résultats de Network Access Analyzer au format CSV ou dans AWS Security Hub. Un exemple de rapport CSV est disponible dans la section Informations supplémentaires de ce modèle.
Vous pouvez corriger les résultats ou les exclure des analyses futures en les ajoutant au fichier naa-exclusions.csv.
Conditions préalables et limitations
Prérequis
Un compte AWS pour l'hébergement de services et d'outils de sécurité, géré en tant que compte membre d'une organisation dans AWS Organizations. Dans ce modèle, ce compte est appelé compte de sécurité.
Dans le compte de sécurité, vous devez disposer d'un sous-réseau privé avec accès Internet sortant. Pour obtenir des instructions, consultez la section Créer un sous-réseau dans la documentation Amazon VPC. Vous pouvez établir un accès à Internet à l'aide d'une passerelle NAT ou d'un point de terminaison VPC d'interface.
Accès au compte de gestion AWS Organizations ou à un compte doté d'autorisations d'administrateur déléguées pour CloudFormation. Pour obtenir des instructions, voir Enregistrer un administrateur délégué dans la CloudFormation documentation.
Activez un accès fiable entre AWS Organizations et CloudFormation. Pour obtenir des instructions, consultez la section Activer l'accès sécurisé avec AWS Organizations dans la CloudFormation documentation.
Si vous téléchargez les résultats sur Security Hub, Security Hub doit être activé dans le compte et dans la région AWS où l' EC2 instance est mise en service. Pour plus d'informations, consultez Configuration d'AWS Security Hub.
Limites
Les chemins réseau entre comptes ne sont actuellement pas analysés en raison des limites de la fonctionnalité Network Access Analyzer.
Les comptes AWS cibles doivent être gérés en tant qu'organisation dans AWS Organizations. Si vous n'utilisez pas AWS Organizations, vous pouvez mettre à jour le CloudFormation modèle naa-execrole.yaml et le script naa-script.sh pour votre environnement. Vous fournissez plutôt une liste des comptes AWS IDs et des régions dans lesquels vous souhaitez exécuter le script.
Le CloudFormation modèle est conçu pour déployer l' EC2 instance dans un sous-réseau privé doté d'un accès Internet sortant. L'agent AWS Systems Manager (agent SSM) nécessite un accès sortant pour atteindre le point de terminaison du service Systems Manager, et vous avez besoin d'un accès sortant pour cloner le référentiel de code et installer les dépendances. Si vous souhaitez utiliser un sous-réseau public, vous devez modifier le modèle naa-resources.yaml pour associer une adresse IP élastique à l'instance. EC2
Architecture
Pile technologique cible
Analyseur d’accès réseau
EC2 Instance Amazon
Rôles dans AWS Identity and Access Management (IAM)
Compartiment Amazon Simple Storage Service (Amazon S3)
Rubrique Amazon Simple Notification Service (Amazon SNS)
AWS Security Hub (option 2 uniquement)
Architecture cible
Option 1 : accéder aux résultats dans un compartiment Amazon S3

Le schéma montre le processus suivant :
Si vous exécutez la solution manuellement, l'utilisateur s'authentifie auprès de l' EC2 instance à l'aide du Gestionnaire de session, puis exécute le script naa-script.sh. Ce script shell exécute les étapes 2 à 7.
Si vous exécutez automatiquement la solution, le script naa-script.sh démarre automatiquement selon le calendrier que vous avez défini dans l'expression cron. Ce script shell exécute les étapes 2 à 7. Pour plus d'informations, voir Automatisation et mise à l'échelle à la fin de cette section.
L' EC2 instance télécharge le dernier fichier naa-exception.csv depuis le compartiment S3. Ce fichier est utilisé ultérieurement dans le processus lorsque le script Python traite les exclusions.
L' EC2 instance assume le rôle
NAAEC2Role
IAM, qui accorde des autorisations pour accéder au compartiment S3 et pour assumer les rôlesNAAExecRole
IAM dans les autres comptes de l'organisation.L' EC2 instance assume le rôle
NAAExecRole
IAM dans le compte de gestion de l'organisation et génère une liste des comptes de l'organisation.L' EC2 instance assume le rôle
NAAExecRole
IAM dans les comptes membres de l'organisation (appelés comptes de charge de travail dans le schéma d'architecture) et effectue une évaluation de la sécurité de chaque compte. Les résultats sont stockés sous forme de fichiers JSON sur l' EC2 instance.L' EC2 instance utilise un script Python pour traiter les fichiers JSON, extraire les champs de données et créer un rapport CSV.
L' EC2 instance télécharge le fichier CSV dans le compartiment S3.
Une EventBridge règle Amazon détecte le téléchargement du fichier et utilise une rubrique Amazon SNS pour envoyer un e-mail informant l'utilisateur que le rapport est complet.
L'utilisateur télécharge le fichier CSV depuis le compartiment S3. L'utilisateur importe les résultats dans le modèle Excel et les examine.
Option 2 : accéder aux résultats dans AWS Security Hub

Le schéma montre le processus suivant :
Si vous exécutez la solution manuellement, l'utilisateur s'authentifie auprès de l' EC2 instance à l'aide du Gestionnaire de session, puis exécute le script naa-script.sh. Ce script shell exécute les étapes 2 à 7.
Si vous exécutez automatiquement la solution, le script naa-script.sh démarre automatiquement selon le calendrier que vous avez défini dans l'expression cron. Ce script shell exécute les étapes 2 à 7. Pour plus d'informations, voir Automatisation et mise à l'échelle à la fin de cette section.
L' EC2 instance télécharge le dernier fichier naa-exception.csv depuis le compartiment S3. Ce fichier est utilisé ultérieurement dans le processus lorsque le script Python traite les exclusions.
L' EC2 instance assume le rôle
NAAEC2Role
IAM, qui accorde des autorisations pour accéder au compartiment S3 et pour assumer les rôlesNAAExecRole
IAM dans les autres comptes de l'organisation.L' EC2 instance assume le rôle
NAAExecRole
IAM dans le compte de gestion de l'organisation et génère une liste des comptes de l'organisation.L' EC2 instance assume le rôle
NAAExecRole
IAM dans les comptes membres de l'organisation (appelés comptes de charge de travail dans le schéma d'architecture) et effectue une évaluation de la sécurité de chaque compte. Les résultats sont stockés sous forme de fichiers JSON sur l' EC2 instance.L' EC2 instance utilise un script Python pour traiter les fichiers JSON et extraire les champs de données à importer dans Security Hub.
L' EC2 instance importe les résultats de l'analyseur d'accès réseau dans Security Hub.
Une EventBridge règle Amazon détecte l'importation et utilise une rubrique Amazon SNS pour envoyer un e-mail informant l'utilisateur que le processus est terminé.
L'utilisateur consulte les résultats dans Security Hub.
Automatisation et évolutivité
Vous pouvez planifier cette solution pour exécuter le script naa-script.sh automatiquement selon un calendrier personnalisé. Pour définir un calendrier personnalisé, modifiez le paramètre dans le modèle naa-resources.yaml CloudFormation . CronScheduleExpression
Par exemple, la valeur par défaut de 0 0 * * 0
exécute la solution tous les dimanches à minuit. Une valeur de 0 0 * 1-12 0
exécuterait la solution à minuit le premier dimanche de chaque mois. Pour plus d'informations sur l'utilisation des expressions cron, consultez les expressions Cron et rate dans la documentation de Systems Manager.
Si vous souhaitez ajuster le calendrier une fois la NAA-Resources
pile déployée, vous pouvez modifier manuellement le calendrier cron dans/etc/cron.d/naa-schedule
.
Outils
Services AWS
Amazon Elastic Compute Cloud (Amazon EC2) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
Amazon EventBridge est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, les fonctions AWS Lambda, les points de terminaison d'appel HTTP utilisant des destinations d'API ou les bus d'événements dans d'autres comptes AWS.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
AWS Organizations est un service de gestion de comptes qui vous aide à consolider plusieurs comptes AWS au sein d'une organisation que vous créez et gérez de manière centralisée.
AWS Security Hub fournit une vue complète de votre état de sécurité dans AWS. Il vous permet également de vérifier que votre environnement AWS est conforme aux normes du secteur de la sécurité et aux meilleures pratiques.
Amazon Simple Notification Service (Amazon SNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
AWS Systems Manager vous aide à gérer vos applications et votre infrastructure exécutées dans le cloud AWS. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos ressources AWS en toute sécurité à grande échelle. Ce modèle utilise Session Manager, une fonctionnalité de Systems Manager.
Référentiel de code
Le code de ce modèle est disponible dans le référentiel d'analyse multi-comptes de GitHub Network Access Analyzer
naa-script.sh — Ce script bash est utilisé pour démarrer une analyse Network Access Analyzer de plusieurs comptes AWS, en parallèle. Comme défini dans le CloudFormation modèle naa-resources.yaml, ce script est automatiquement déployé dans le dossier de l'instance.
/usr/local/naa
EC2naa-resources.yaml — Vous utilisez ce CloudFormation modèle pour créer une pile dans le compte de sécurité de l'organisation. Ce modèle déploie toutes les ressources requises pour ce compte afin de prendre en charge la solution. Cette pile doit être déployée avant le modèle naa-execrole.yaml.
Remarque : Si cette pile est supprimée et redéployée, vous devez reconstruire l'ensemble de
NAAExecRole
piles afin de rétablir les dépendances entre comptes entre les rôles IAM.naa-execrole.yaml — Vous utilisez ce CloudFormation modèle pour créer un stack set qui déploie le rôle
NAAExecRole
IAM dans tous les comptes de l'organisation, y compris le compte de gestion.naa-processfindings.py — Le script naa-script.sh appelle automatiquement ce script Python pour traiter les sorties JSON de Network Access Analyzer, exclure toute ressource dont le fonctionnement a été vérifié dans le fichier naa-exclusions.csv, puis générer un fichier CSV contenant les résultats consolidés ou importer les résultats dans Security Hub.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Clonez le référentiel de code. |
| AWS DevOps |
Passez en revue les modèles. |
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Fournir des ressources dans le compte de sécurité. | À l'aide du modèle naa-resources.yaml, vous créez une CloudFormation pile qui déploie toutes les ressources requises dans le compte de sécurité. Pour obtenir des instructions, consultez la section Création d'une pile dans la CloudFormation documentation. Notez les points suivants lors du déploiement de ce modèle :
| AWS DevOps |
Fournissez le rôle IAM dans les comptes des membres. | Dans le compte de gestion AWS Organizations ou dans un compte doté d'autorisations d'administrateur déléguées pour CloudFormation, utilisez le modèle naa-execrole.yaml pour créer un stack set. CloudFormation Le stack set déploie le rôle
| AWS DevOps |
Attribuez le rôle IAM dans le compte de gestion. | À l'aide du modèle naa-execrole.yaml, vous créez une CloudFormation pile qui déploie le rôle
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Personnalisez le script shell. |
| AWS DevOps |
Analysez les comptes cibles. |
| AWS DevOps |
Option 1 — Récupérez les résultats depuis le compartiment S3. |
| AWS DevOps |
Option 2 — Vérifiez les résultats dans Security Hub. |
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Corriger les résultats. | Corrigez tous les résultats auxquels vous souhaitez remédier. Pour plus d'informations et pour connaître les meilleures pratiques relatives à la création d'un périmètre autour de vos identités, ressources et réseaux AWS, consultez Création d'un périmètre de données sur AWS (livre blanc AWS). | AWS DevOps |
Excluez les ressources dont les chemins réseau ont été vérifiés. | Si Network Access Analyzer génère des résultats pour des ressources qui devraient être accessibles depuis Internet, vous pouvez ajouter ces ressources à une liste d'exclusion. La prochaine fois que Network Access Analyzer s'exécutera, il ne générera aucun résultat pour cette ressource.
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Mettez à jour le script naa-script.sh. | Si vous souhaitez mettre à jour le script naa-script.sh vers la dernière version du dépôt, procédez comme suit :
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez toutes les ressources déployées. | Vous pouvez laisser les ressources déployées dans les comptes. Si vous souhaitez déprovisionner toutes les ressources, procédez comme suit :
| AWS DevOps |
Résolution des problèmes
Problème | Solution |
---|---|
Impossible de se connecter à l' EC2 instance à l'aide du gestionnaire de session. | L'agent SSM doit être capable de communiquer avec le point de terminaison Systems Manager. Procédez comme suit :
|
Lorsque vous déployez le stack set, la CloudFormation console vous invite à | Cela indique que l'accès sécurisé n'a pas été activé entre AWS Organizations et CloudFormation. Un accès sécurisé est requis pour déployer le stack set géré par les services. Cliquez sur le bouton pour activer l'accès sécurisé. Pour plus d'informations, consultez la section Activer l'accès sécurisé dans la CloudFormation documentation. |
Ressources connexes
Informations supplémentaires
Exemple de sortie de console
L'exemple suivant montre le résultat de la génération de la liste des comptes cibles et de l'analyse des comptes cibles.
[root@ip-10-10-43-82 naa]# ./naa-script.sh download: s3://naa-<account ID>-us-east-1/naa-exclusions.csv to ./naa-exclusions.csv AWS Management Account: <Management account ID> AWS Accounts being processed... <Account ID 1> <Account ID 2> <Account ID 3> Assessing AWS Account: <Account ID 1>, using Role: NAAExecRole Assessing AWS Account: <Account ID 2>, using Role: NAAExecRole Assessing AWS Account: <Account ID 3>, using Role: NAAExecRole Processing account: <Account ID 1> / Region: us-east-1 Account: <Account ID 1> / Region: us-east-1 – Detecting Network Analyzer scope... Processing account: <Account ID 2> / Region: us-east-1 Account: <Account ID 2> / Region: us-east-1 – Detecting Network Analyzer scope... Processing account: <Account ID 3> / Region: us-east-1 Account: <Account ID 3> / Region: us-east-1 – Detecting Network Analyzer scope... Account: <Account ID 1> / Region: us-east-1 – Network Access Analyzer scope detected. Account: <Account ID 1> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour Account: <Account ID 2> / Region: us-east-1 – Network Access Analyzer scope detected. Account: <Account ID 2> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour Account: <Account ID 3> / Region: us-east-1 – Network Access Analyzer scope detected. Account: <Account ID 3> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour
Exemples de rapports CSV
Les images suivantes sont des exemples de sortie CSV.

