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.
Journalisation centralisée et garde-fous de sécurité pour plusieurs comptes
Créée par Ankush Verma (AWS) et Tracy (Pierce) Hickey (AWS)
Environnement : Production | Technologies : sécurité, identité, conformité ; gestion et gouvernance | Services AWS : AWS CloudFormation ; AWS Config ; Amazon ; AWS CloudWatch ; AWS CodePipeline ; Amazon GuardDuty ; AWS Lambda ; Amazon Macie ; AWS Security Hub ; Amazon S3 |
Récapitulatif
L'approche décrite dans ce modèle convient aux clients qui possèdent plusieurs comptes Amazon Web Services (AWS) auprès d'AWS Organizations et qui rencontrent aujourd'hui des difficultés lorsqu'ils utilisent AWS Control Tower, une zone d'atterrissage ou les services de distributeurs automatiques de comptes pour configurer des garde-fous de base dans leurs comptes.
Ce modèle illustre l'utilisation d'une architecture multicompte rationalisée pour configurer une journalisation centralisée et des contrôles de sécurité standardisés de manière bien structurée. À l'aide de CloudFormation modèles AWS, d'AWS CodePipeline et de scripts d'automatisation, cette configuration est déployée dans tous les comptes appartenant à une organisation.
L'architecture à comptes multiples inclut les comptes suivants :
Compte de journalisation centralisé : compte sur lequel sont stockés tous les journaux du cloud privé virtuel (VPC), les CloudTrail journaux AWS, le journal AWS Config et tous les journaux d'Amazon CloudWatch Logs (via des abonnements) provenant de tous les autres comptes.
Compte de sécurité parent : compte destiné à servir de compte parent pour les services de sécurité suivants qui gèrent plusieurs comptes.
Amazon GuardDuty
AWS Security Hub
Amazon Macie
Amazon Detective
Comptes pour enfants : les autres comptes de l'organisation. Ces comptes stockent tous les journaux utiles dans le compte de journalisation centralisé. Les comptes enfants rejoignent le compte de sécurité parent en tant que membres des services de sécurité.
Une fois que vous avez lancé le CloudFormation modèle (ci-joint), il met en service trois compartiments Amazon Simple Storage Service (Amazon S3) dans le compte de journalisation centralisé. Un compartiment est utilisé pour stocker tous les journaux liés à AWS (tels que les journaux des flux VPC et AWS Config) provenant de tous les comptes. CloudTrail Le deuxième compartiment sert à stocker les CloudFormation modèles de tous les comptes. Le troisième compartiment est destiné au stockage des journaux d'accès Amazon S3.
Un CloudFormation modèle distinct crée le pipeline qui utilise AWS CodeCommit. Une fois le code mis à jour envoyé au CodeCommit référentiel, celui-ci se charge de lancer les ressources et de configurer les services de sécurité dans tous les comptes. Pour plus d'informations sur la structure des fichiers qui seront chargés dans le CodeCommit référentiel, consultez le fichier README.md (joint).
Conditions préalables et limitations
Prérequis
Un identifiant d'organisation AWS Organizations, avec tous les comptes associés à la même organisation.
Adresse e-mail active pour recevoir les notifications Amazon Simple Notification Service (Amazon SNS).
Quotas confirmés pour les compartiments Amazon Simple Storage Service (Amazon S3) dans chacun de vos comptes. Par défaut, chaque compte possède 100 compartiments S3. Si vous avez besoin de compartiments supplémentaires, demandez une augmentation du quota avant de déployer cette solution.
Limites
Tous les comptes doivent appartenir à la même organisation. Si vous n'utilisez pas AWS Organizations, vous devez modifier certaines politiques, telles que la politique relative aux compartiments S3, afin d'autoriser l'accès depuis les rôles AWS Identity and Access Management (IAM) pour chaque compte.
Remarque : pendant le déploiement de la solution, vous devez confirmer l'abonnement Amazon SNS. Le message de confirmation est envoyé à l'adresse e-mail que vous avez fournie lors du processus de déploiement. Cela déclenchera quelques messages d'alerte par e-mail à cette adresse e-mail, car ces alarmes sont déclenchées chaque fois que des politiques de rôle IAM sont créées ou modifiées dans le compte. Pendant le processus de déploiement, vous pouvez ignorer ces messages d'alerte.
Architecture
Pile technologique cible
CloudWatch Alarmes et journaux Amazon
CodeCommit Référentiel AWS
AWS CodePipeline
AWS Config
Amazon Detective
Amazon GuardDuty
Rôles et autorisations IAM
Amazon Macie
Compartiments S3
AWS Security Hub
Amazon SNS
Architecture cible
Autres comptes enregistrés en tant que comptes enfants du compte de sécurité parent pour les services de sécurité
Résultats de sécurité provenant de tous les comptes enfants, y compris le compte parent
Ressources
Les ressources suivantes sont mises en service automatiquement lorsque le code mis à jour est transféré vers le CodeCommit référentiel de chaque compte et de chaque région AWS.
CloudFormation pile 1 — Journalisation de la pile parent
- Stack 1 imbriqué — Rôles et politiques IAM standard
- Nested Stack 2 — Configuration d'AWS Config dans le compte
- Nested Stack 3 : alarmes CloudWatch
- SecurityGroupChangesAlarm
- UnauthorizedAttemptAlarm
- RootActivityAlarm
- NetworkAclChangesAlarm
- JE SUIS UserManagementAlarm
- JE SUIS PolicyChangesAlarm
- CloudTrailChangeAlarm
- JE SUIS CreateAccessKeyAlarm
- Filtres métriques pour créer des métriques à partir CloudTrail des journaux et les utiliser pour les alarmes
- Rubrique SNS
CloudFormation pile 2 — Pile de garde-corps pour parents
- Nested Stack 1 — Fonction AWS Lambda pour configurer la politique de mot de passe du compte
- Nested Stack 2 — Règles de base d'AWS Config
- CEI- SecurityGroupsMustRestrictSshTraffic
- OpenSecurityGroupRuleCheck ainsi que la fonction Lambda pour l'évaluation des règles des groupes de sécurité
- check-ec2- for-required-tag
- check-for-unrestricted-ports
CloudFormation pile 3 — exportation CloudWatch des journaux
- Exportation CloudWatch des journaux des groupes de journaux vers Amazon S3 à l'aide d'un abonnement Amazon Kinesis
Outils
AWS CloudFormation — AWS CloudFormation utilise des modèles pour modéliser et fournir, de manière automatisée et sécurisée, toutes les ressources nécessaires à vos applications dans l'ensemble des régions et des comptes AWS.
Amazon CloudWatch — Amazon CloudWatch surveille vos ressources AWS et les applications que vous exécutez sur AWS en temps réel. Vous pouvez les utiliser CloudWatch pour collecter et suivre les métriques, qui sont des variables que vous pouvez mesurer pour vos ressources et vos applications.
AWS CodeCommit — AWS CodeCommit est un service de contrôle de version hébergé par AWS. Vous pouvez l'utiliser CodeCommit pour stocker et gérer de manière privée des actifs (tels que des documents, du code source et des fichiers binaires) dans le cloud.
AWS CodePipeline — AWS CodePipeline est un service de livraison continue que vous pouvez utiliser pour modéliser, visualiser et automatiser les étapes nécessaires à la publication de votre logiciel.
AWS Config — AWS Config fournit une vue détaillée de la configuration des ressources AWS dans votre compte AWS. Elle indique comment les ressources sont liées entre elles et comment elles ont été configurées dans le passé, pour que vous puissiez observer comment les configurations et les relations changent au fil du temps.
Amazon Detective — Amazon Detective est utilisé pour analyser, enquêter et identifier rapidement la cause première des problèmes de sécurité ou des activités suspectes. Detective collecte automatiquement les données de journal à partir de vos ressources AWS. Il utilise ensuite l'apprentissage automatique, l'analyse statistique et la théorie des graphes pour vous aider à visualiser et à mener des enquêtes de sécurité plus rapides et plus efficaces.
Amazon GuardDuty — Amazon GuardDuty est un service de surveillance continue de la sécurité qui analyse et traite les journaux de flux, les journaux d'événements de CloudTrail gestion, les journaux d'événements de CloudTrail données et les journaux du système de noms de domaine (DNS). Il utilise des flux d'intelligence de menaces, comme les listes d'adresses IP et de domaines malveillants, ainsi que le machine learning pour identifier toute activité inattendue et potentiellement non autorisée et malveillante au sein de votre environnement AWS.
AWS Identity and Access Management — AWS Identity and Access Management (IAM) est un service Web qui vous permet de contrôler en toute sécurité l'accès aux ressources AWS. Vous pouvez utiliser IAM pour contrôler les personnes qui s'authentifient (sont connectées) et sont autorisées (disposent d'autorisations) à utiliser des ressources.
Amazon Macie — Amazon Macie automatise la découverte de données sensibles, telles que les informations personnelles identifiables (PII) et les données financières, afin de vous permettre de mieux comprendre les données que votre organisation stocke dans Amazon S3.
Amazon S3 — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets hautement évolutif qui peut être utilisé pour un large éventail de solutions de stockage, notamment les sites Web, les applications mobiles, les sauvegardes et les lacs de données.
AWS Security Hub — AWS Security Hub vous fournit une vue complète de votre état de sécurité dans AWS et vous aide à vérifier que votre environnement est conforme aux normes de sécurité et aux meilleures pratiques.
Amazon SNS — Amazon Simple Notification Service (Amazon SNS) est un service géré qui permet aux éditeurs de transmettre des messages aux abonnés (également appelés producteurs et consommateurs).
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Lancez le modèle ChildAccount_IAM_Role_All_Accounts.yaml pour créer le rôle IAM dans la région CloudFormation us-east-1. | Pour créer les rôles et autorisations IAM requis, vous devez lancer manuellement ce modèle dans chaque compte, un par un (compte de journalisation centralisé, compte de sécurité parent et tous les autres comptes AWS de l'organisation) dans la région us-east-1. Le | Architecte du cloud |
Dans les paramètres du modèle, indiquez le nom du rôle IAM. | Indiquez le rôle IAM qui CodeBuild, dans le compte de sécurité parent, peut assumer dans tous les autres comptes enfants. Le nom de rôle par défaut est | Architecte du cloud |
Dans les paramètres, indiquez l'ID du compte de sécurité parent. | Le compte de sécurité parent est le compte sur lequel CodeBuild s'exécute. | Architecte du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Dans le compte de journalisation centralisé, dans us-east-1, lancez le modèle S3Buckets-Centralized- .yaml. LoggingAccount CloudFormation | Pour créer les compartiments S3 dans le compte de journalisation centralisé, lancez le | Architecte du cloud |
Dans les paramètres du modèle, indiquez le nom du compartiment S3 pour le stockage des journaux AWS. | Entrez un nom pour le | Architecte du cloud |
Indiquez le nom du compartiment S3 pour le stockage des journaux d'accès. | Entrez un nom de compartiment S3 pour le | Architecte du cloud |
Indiquez le nom du compartiment S3 pour le stockage des modèles. | Entrez un nom de compartiment S3 dans le | Architecte du cloud |
Indiquez l'identifiant de l'organisation. | Pour permettre l'accès aux compartiments S3 au sein de l'organisation, entrez l'ID de l'organisation dans le | Architecte du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Lancez le modèle security-guard-rails-codepipeline -Centralized- SecurityAccount .yml. CloudFormation | Pour déployer le pipeline CI/CD, lancez manuellement le | Architecte du cloud |
Donnez un nom au compartiment S3 qui stockera les modèles dans le compte de journalisation centralisé. | Entrez le nom du compartiment S3 que vous avez fourni pour le | Architecte du cloud |
Indiquez le nom du rôle IAM à utiliser dans les comptes enfants. | Entrez le nom que vous avez indiqué pour le | Architecte du cloud |
Fournissez une adresse e-mail active pour recevoir les notifications CodePipeline d'échec. | Entrez l'adresse e-mail que vous souhaitez utiliser pour recevoir les notifications d' CodePipeline échec et autres notifications CloudWatch liées aux alarmes. | Architecte du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Modifiez AccountList.json. | Dans le | Architecte du cloud |
Modifier le fichier accounts.csv | Dans le | Architecte du cloud |
Modifiez parameters.config. | Dans le
Pour les autres paramètres, vous pouvez conserver les valeurs par défaut. Pour un exemple, consultez le | Architecte du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Accédez au CodeCommit dépôt que vous avez créé à l'étape 3. | Dans la section Sorties de la CloudFormation pile d'infrastructure CI/CD (lancée à l'étape 3), notez le nom de l'URL du CodeCommit référentiel. Créez un accès au référentiel afin que les fichiers puissent y être transférés pour que l'infrastructure soit déployée dans tous les comptes cibles. Pour plus d'informations, consultez Configuration pour AWS CodeCommit. | Architecte du cloud |
Transférez les fichiers vers le CodeCommit référentiel. | Installez Git sur votre machine. Exécutez ensuite les commandes Git pour cloner le référentiel vide, copier les fichiers de votre ordinateur portable vers le dossier du référentiel et transférer les artefacts vers le référentiel. Vérifiez les exemples de commandes Git dans le | Architecte du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Confirmez le statut de CodePipeline et CodeBuild. | Après avoir transféré les artefacts vers le CodeCommit dépôt, vérifiez que le CodePipeline pipeline que vous avez créé à l'étape 3 a été lancé. Vérifiez ensuite les CodeBuild journaux pour confirmer le statut ou les erreurs. | Architecte du cloud |