Journalisation centralisée et garde-fous de sécurité pour plusieurs comptes - Recommandations AWS

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

Schéma illustrant les services des trois comptes AWS.
Schémas présentant les détails des services de journalisation et de sécurité.
  1. Autres comptes enregistrés en tant que comptes enfants du compte de sécurité parent pour les services de sécurité

  2. 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âcheDescriptionCompé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 Childaccount_IAM_role_All_Accounts.yaml modèle se trouve dans le /templates/initial_deployment_templates répertoire du package. Le rôle IAM est utilisé lors des appels d'API pour le provisionnement et la configuration du reste de l'architecture. Assurez-vous que le nom du rôle IAM transmis en tant que paramètre est cohérent dans tous les comptes.

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 security_execute_child_stack_role.

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âcheDescriptionCompé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 leS3Buckets-Centralized-LoggingAccount.yaml. Le modèle se trouve dans le /templates/initial_deployment_templates répertoire du package. Les compartiments S3 stockeront tous les journaux, modèles et journaux d'accès Amazon S3. Notez les noms de tous les compartiments S3, que vous utiliserez pour modifier les fichiers de paramètres dans les étapes suivantes.

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 S3 Bucket Name for Centralized Logging in Logging Account paramètre. Ce compartiment fait office d'emplacement centralisé pour stocker les journaux AWS, tels que les journaux de flux et les CloudTrail journaux, provenant de tous les comptes. Notez à la fois le nom du compartiment et le nom de ressource Amazon (ARN).

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 S3 Bucket Name for Access Logs in Logging Account paramètre. Ce compartiment S3 stocke les journaux d'accès pour Amazon S3.

Architecte du cloud
Indiquez le nom du compartiment S3 pour le stockage des modèles.

Entrez un nom de compartiment S3 dans le S3 Bucket Name for CloudFormation Template storage in Logging Account paramètre.

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 Organization Id for Non-AMS accounts paramètre.

Architecte du cloud
TâcheDescriptionCompétences requises
Lancez le modèle security-guard-rails-codepipeline -Centralized- SecurityAccount .yml. CloudFormation

Pour déployer le pipeline CI/CD, lancez manuellement le security-guard-rails-codepipeline-Centralized-SecurityAccount.yml modèle dans le compte de sécurité parent dans us-east-1. Le modèle se trouve dans le /templates/initial_deployment_templates répertoire du package. Ce pipeline déploiera toute l'infrastructure de tous les comptes enfants.

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 S3 Bucket Name for the CloudFormation Template storage in Logging Account paramètre à l'étape 2.

Architecte du cloud
Indiquez le nom du rôle IAM à utiliser dans les comptes enfants.

Entrez le nom que vous avez indiqué pour le Name of the IAM role paramètre à l'étape 1.

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âcheDescriptionCompétences requises
Modifiez AccountList.json.

Dans le Accountlist.json fichier, qui se trouve au niveau supérieur du package, ajoutez le numéro de compte de sécurité du parent et les numéros de compte de l'enfant. Notez que le ChildAccountList champ inclut également le numéro de compte de sécurité du parent. Consultez l'exemple dans le deployment-instructions.md fichier du package.

Architecte du cloud
Modifier le fichier accounts.csv

Dans le accounts.csv fichier, qui se trouve au niveau supérieur du package, ajoutez tous les comptes enfants ainsi que l'adresse e-mail associée aux comptes. Consultez l'exemple dans le deployment-instructions.md fichier.

Architecte du cloud
Modifiez parameters.config.

Dans le parameters.config fichier, qui se trouve dans le /templates dossier, mettez à jour les six paramètres suivants :

  • pNotifyEmail: adresse e-mail que vous avez fournie lors de la configuration du pipeline (voir étape 3)

  • pstackNameLogging: nom de la CloudFormation pile pour la journalisation centralisée

  • pS3LogsBucket: nom du compartiment S3 dans lequel les journaux de tous les comptes seront stockés (voir étape 2)

  • pBucketName: l'ARN du compartiment S3 utilisé pour stocker les journaux

  • pTemplateBucketName: nom des compartiments S3 dans lesquels les modèles seront stockés (voir étape 2)

  • pAllowedAccounts: Identifiants de compte pour les comptes parent et enfant

Pour les autres paramètres, vous pouvez conserver les valeurs par défaut. Pour un exemple, consultez le deployment-instructions.md fichier contenu dans le package.

Architecte du cloud
TâcheDescriptionCompé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 deployment-instructions.md fichier du package. Pour les commandes Git de base, consultez la section Ressources associées.

Architecte du cloud
TâcheDescriptionCompé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

Ressources connexes

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip