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.
Déployez et gérez les contrôles AWS Control Tower à l'aide de Terraform
Créé par Iker Reina Fuente (AWS) et Ivan Girardi () AWS
Référentiel de code : déployez et gérez les contrôles AWS Control Tower à l'aide de Terraform | Environnement : Production | Technologies : sécurité, identité, conformité CloudNative ; infrastructure ; gestion et gouvernance |
Charge de travail : Open source | AWSservices : AWS Control Tower ; AWS Organizations |
Récapitulatif
Ce modèle décrit comment utiliser les contrôles AWS Control Tower, HashiCorp Terraform et l'infrastructure en tant que code (iAc) pour mettre en œuvre et administrer des contrôles de sécurité préventifs, de détection et proactifs. Un contrôle (également connu sous le nom de garde-corps) est une règle de haut niveau qui fournit une gouvernance continue de l'ensemble de votre environnement AWS Control Tower. Par exemple, vous pouvez utiliser des contrôles pour exiger la journalisation de vos AWS comptes, puis configurer des notifications automatiques en cas d'événements spécifiques liés à la sécurité.
AWSControl Tower vous aide à mettre en œuvre des contrôles préventifs, de détection et proactifs qui régissent vos AWS ressources et surveillent la conformité sur plusieurs AWS comptes. Chaque contrôle applique une seule règle. Dans ce modèle, vous utilisez un modèle IaC fourni pour spécifier les contrôles que vous souhaitez déployer dans votre environnement.
AWSLes contrôles de la Control Tower s'appliquent à l'ensemble d'une unité organisationnelle (UO), et le contrôle affecte tous les AWS comptes au sein de l'UO. Par conséquent, lorsque les utilisateurs effectuent une action sur n'importe quel compte de votre zone de landing zone, cette action est soumise aux contrôles qui régissent l'unité d'organisation.
La mise en œuvre des contrôles de la AWS Control Tower permet d'établir une base de sécurité solide pour votre zone AWS d'atterrissage. En utilisant ce modèle pour déployer les commandes sous forme d'iAc via Terraform, vous pouvez standardiser les commandes dans votre zone d'atterrissage et les déployer et les gérer plus efficacement.
Pour déployer les commandes AWS Control Tower sous forme d'iAc, vous pouvez également utiliser AWS Cloud Development Kit (AWSCDK) au lieu de Terraform. Pour plus d'informations, voir Déployer et gérer les commandes AWS de la Control Tower à l'aide de AWS CDK et AWS CloudFormation.
Public cible
Ce modèle est recommandé aux utilisateurs qui ont de l'expérience avec AWS Control Tower, Terraform et AWS Organizations.
Conditions préalables et limitations
Prérequis
AWSComptes actifs gérés en tant qu'organisation dans AWS Organizations and an AWS Control Tower landing zone. Pour obtenir des instructions, voir Créer une structure de compte (AWSWell-Architected
Labs). AWSInterface de ligne de commande (AWSCLI), installée et configurée.
Rôle AWS Identity and Access Management (IAM) dans le compte de gestion autorisé à déployer ce modèle. Pour plus d'informations sur les autorisations requises et un exemple de politique, consultez la section Autorisations de moindre privilège pour le IAM rôle dans la section Informations supplémentaires de ce modèle.
Autorisations permettant d'assumer le IAM rôle dans le compte de gestion.
Appliquez le contrôle basé sur la politique de contrôle des services (SCP) avec l'identifiant CT. CLOUDFORMATIONP.R. 1. Cela SCP doit être activé pour déployer des contrôles proactifs. Pour obtenir des instructions, voir Interdire la gestion des types de ressources, des modules et des hooks dans le AWS CloudFormation registre.
TerraformCLI, installé (documentation
Terraform). AWSFournisseur Terraform, configuré (documentation
Terraform). Backend Terraform, configuré
(documentation Terraform).
Versions du produit
AWSControl Tower version 3.0 ou ultérieure
Terraform version 1.5 ou ultérieure
Terraform AWS Provider version 4.67 ou ultérieure
Architecture
Architecture cible
Cette section fournit une présentation générale de cette solution et de l'architecture établie par l'exemple de code. Le schéma suivant montre les contrôles déployés sur les différents comptes de l'unité d'organisation.
AWSLes commandes de la Control Tower sont classées en fonction de leur comportement et de leurs indications.
Il existe trois principaux types de comportements de contrôle :
Les contrôles préventifs sont conçus pour empêcher les actions de se produire. Elles sont mises en œuvre avec des politiques de contrôle des services (SCPs) dans AWS Organizations. Le statut d'un contrôle préventif est soit appliqué, soit non activé. Les contrôles préventifs sont pris en charge dans toutes les AWS régions.
Les contrôles Detective sont conçus pour détecter des événements spécifiques lorsqu'ils se produisent et pour enregistrer l'action CloudTrail. Elles sont implémentées à l'aide des règles AWS Config. Le statut d'un contrôle de détection est soit clair, soit en violation, soit non activé. Les contrôles Detective ne s'appliquent que dans les AWS régions prises en charge par AWS Control Tower.
Les contrôles proactifs analysent les ressources qui seraient mises à disposition par votre entreprise AWS CloudFormation et vérifient si elles sont conformes aux politiques et aux objectifs de votre entreprise. Les ressources non conformes ne seront pas provisionnées. Ils sont implémentés avec des AWS CloudFormation crochets. Le statut d'un contrôle proactif est PASSFAIL, ou SKIP.
Les conseils de contrôle sont la pratique recommandée pour savoir comment appliquer chaque contrôle à votreOUs. AWSControl Tower propose trois catégories de conseils : obligatoires, fortement recommandés et facultatifs. Le guidage d'un contrôle est indépendant de son comportement. Pour plus d'informations, consultez la section Contrôle du comportement et instructions.
Outils
AWSservices
AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, quels que soient les AWS comptes et les régions.
AWSConfig fournit une vue détaillée des ressources de votre AWS compte et de leur configuration. Il vous aide à identifier les liens entre les ressources et l'évolution de leurs configurations au fil du temps.
AWSControl Tower vous aide à configurer et à gérer un environnement AWS multi-comptes, conformément aux meilleures pratiques prescriptives.
AWSOrganizations est un service de gestion de comptes qui vous aide à consolider plusieurs AWS comptes au sein d'une organisation que vous créez et gérez de manière centralisée.
Autres outils
HashiCorp Terraform
est un outil open source d'infrastructure sous forme de code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources cloud.
Référentiel de code
Le code de ce modèle est disponible dans le répertoire GitHub Deploy and manage AWS Control Tower control à l'aide du référentiel Terraform
Bonnes pratiques
Le IAM rôle utilisé pour déployer cette solution doit respecter le principe du moindre privilège (IAMdocumentation).
Suivez les meilleures pratiques destinées aux administrateurs AWS de Control Tower (documentation AWS Control Tower).
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Pour cloner le référentiel. | Dans un shell bash, entrez la commande suivante. Cela clone les contrôles Deploy and manage AWS Control Tower à l'aide du référentiel Terraform depuis
| DevOps ingénieur |
Modifiez le fichier de configuration du backend Terraform. |
| DevOps ingénieur, Terraform |
Modifiez le fichier de configuration du fournisseur Terraform. |
| DevOps ingénieur, Terraform |
Modifiez le fichier de configuration. |
| DevOps ingénieur, généralAWS, Terraform |
Assumez le IAM rôle dans le compte de gestion. | Dans le compte de gestion, assumez le IAM rôle autorisé à déployer le fichier de configuration Terraform. Pour plus d'informations sur les autorisations requises et un exemple de politique, consultez la section Autorisations de moindre privilège pour le IAM rôle dans la section Informations supplémentaires. Pour plus d'informations sur l'attribution d'un IAM rôle dans le AWSCLI, voir Utiliser un IAM rôle dans le AWS CLI. | DevOps ingénieur, général AWS |
Déployez le fichier de configuration. |
| DevOps ingénieur, généralAWS, Terraform |
Tâche | Description | Compétences requises |
---|---|---|
Exécutez la commande de destruction. | Entrez la commande suivante pour supprimer les ressources déployées selon ce modèle.
| DevOps ingénieur, généralAWS, Terraform |
Résolution des problèmes
Problème | Solution |
---|---|
| Le contrôle que vous essayez d'activer est déjà activé dans l'unité d'organisation cible. Cette erreur peut se produire si un utilisateur a activé manuellement le contrôle via la console AWS de gestion, via AWS Control Tower ou via AWS Organizations. Pour déployer le fichier de configuration Terraform, vous pouvez utiliser l'une des options suivantes. Option 1 : mettre à jour le fichier d'état actuel de Terraform Vous pouvez importer la ressource dans le fichier d'état actuel de Terraform. Lorsque vous réexécutez la
Option 2 : désactiver le contrôle Si vous travaillez dans un environnement hors production, vous pouvez désactiver le contrôle dans la console. Réactivez-le en répétant les étapes décrites dans Déployer la configuration dans la section Epics. Cette approche n'est pas recommandée pour les environnements de production car le contrôle sera désactivé pendant un certain temps. Si vous souhaitez utiliser cette option dans un environnement de production, vous pouvez implémenter des contrôles temporaires, tels que l'application temporaire d'un SCP dans AWS Organizations. |
Ressources connexes
AWSdocumentation
À propos des commandes (documentation AWS Control Tower)
Bibliothèque de commandes (documentation AWS Control Tower)
Déployez et gérez les commandes AWS de la Control Tower à l'aide de AWS CDK et AWS CloudFormation (AWSdirectives prescriptives)
Autres ressources
Informations supplémentaires
Exemple de fichier variables.tfvars
Voici un exemple de fichier variables.tfvars mis à jour.
controls = [ { control_names = [ "AWS-GR_ENCRYPTED_VOLUMES", ... ], organizational_unit_ids = ["ou-1111-11111111", "ou-2222-22222222"...], }, { control_names = [ "AWS-GR_SUBNET_AUTO_ASSIGN_PUBLIC_IP_DISABLED", ... ], organizational_unit_ids = ["ou-1111-11111111"...], }, ]
Autorisations avec le moindre privilège pour le IAM rôle
Ce APG modèle nécessite que vous assumiez un IAM rôle dans le compte de gestion. La meilleure pratique consiste à assumer un rôle avec des autorisations temporaires et à limiter les autorisations conformément au principe du moindre privilège. L'exemple de politique suivant autorise les actions minimales requises pour activer ou désactiver les commandes AWS de la Control Tower.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "controltower:EnableControl", "controltower:DisableControl", "controltower:GetControlOperation", "controltower:ListEnabledControls", "organizations:AttachPolicy", "organizations:CreatePolicy", "organizations:DeletePolicy", "organizations:DescribeOrganization", "organizations:DetachPolicy", "organizations:ListAccounts", "organizations:ListAWSServiceAccessForOrganization", "organizations:ListChildren", "organizations:ListOrganizationalUnitsForParent", "organizations:ListParents", "organizations:ListPoliciesForTarget", "organizations:ListRoots", "organizations:UpdatePolicy" ], "Resource": "*" } ] }