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.
Gérez les ensembles d'autorisations pour plusieurs comptes en utilisant Account Factory pour Terraform
Anand Krishna Varanasi et Siamak Heshmati, Amazon Web Services
Récapitulatif
Ce modèle vous permet d'intégrer AWS Control Tower Account Factory Terraform (AFT) AWS IAM Identity Centerafin de configurer des autorisations pour plusieurs Comptes AWS à grande échelle. Cette approche utilise des AWS Lambda fonctions personnalisées pour automatiser l'attribution des ensembles d'autorisations Comptes AWS qui sont gérés en tant qu'organisation. Cela rationalise le processus car il ne nécessite aucune intervention manuelle de la part de l'équipe d'ingénierie de votre plateforme. Cette solution peut améliorer l'efficacité opérationnelle, la sécurité et la cohérence. Il promeut un processus d'intégration sécurisé et standardisé AWS Control Tower, ce qui le rend indispensable pour les entreprises qui privilégient l'agilité et la fiabilité de leur infrastructure cloud.
Conditions préalables et limitations
Prérequis
Comptes AWS, géré par AWS Control Tower. Pour plus d'informations, consultez la section Mise en route avec AWS Control Tower.
Account Factory pour Terraform, déployé dans un compte dédié dans votre environnement. Pour plus d'informations, consultez Deploy AWS Control Tower Account Factory pour Terraform.
Une instance IAM Identity Center, configurée dans votre environnement. Pour plus d'informations, consultez Getting Started with IAM Identity Center.
Un groupe IAM Identity Center actif, configuré. Pour plus d'informations, voir Ajouter des groupes à votre Répertoire IAM Identity Center.
Python version 3.9 ou ultérieure, installée
Limites
Cette solution ne peut être utilisée qu'avec des comptes gérés via AWS Control Tower. Cette solution est déployée à l'aide de Account Factory pour Terraform.
Ce modèle ne contient pas d'instructions pour configurer la fédération d'identité avec une source d'identité. Pour plus d'informations sur la façon de terminer cette configuration, consultez les didacticiels sur les sources d'identité IAM Identity Center dans la documentation d'IAM Identity Center.
Architecture
Présentation de l'AFT
AFT met en place un pipeline Terraform qui vous aide à approvisionner et à personnaliser vos comptes. AWS Control Tower AFT suit un GitOps modèle qui automatise les processus de provisionnement des comptes dans. AWS Control Tower Vous créez un fichier Terraform de demande de compte et vous le validez dans le référentiel. Cela lance le flux de travail AFT pour le provisionnement des comptes. Une fois le provisionnement du compte terminé, AFT peut automatiquement exécuter des étapes de personnalisation supplémentaires. Pour plus d'informations, consultez la section Architecture AFT dans la AWS Control Tower documentation.
AFT fournit les principaux référentiels suivants :
aft-account-request— Ce référentiel contient du code Terraform à créer ou à mettre à jour. Comptes AWSaft-account-customizations— Ce référentiel contient du code Terraform permettant de créer ou de personnaliser des ressources par compte.aft-global-customizations— Ce référentiel contient du code Terraform permettant de créer ou de personnaliser des ressources pour tous les comptes, à grande échelle.aft-account-provisioning-customizations— Ce référentiel gère les personnalisations appliquées uniquement à des comptes spécifiques créés et gérés par AFT. Par exemple, vous pouvez utiliser ce référentiel pour personnaliser les attributions d'utilisateurs ou de groupes dans IAM Identity Center ou pour automatiser les fermetures de comptes.
Présentation de la solution
Cette solution personnalisée inclut une machine à AWS Step Functions états et une AWS Lambda fonction qui attribue des ensembles d'autorisations aux utilisateurs et aux groupes pour plusieurs comptes. La machine d'état déployée selon ce modèle fonctionne conjointement avec la machine d'aft_account_provisioning_customizationsétat AFT préexistante. Un utilisateur soumet une demande de mise à jour des attributions d'utilisateurs et de groupes IAM Identity Center soit lors de la création d'un nouveau Compte AWS compte, soit après la création du compte. Pour ce faire, ils apportent une modification au aft-account-request référentiel. La demande de création ou de mise à jour d'un compte lance un flux dans Amazon DynamoDB Streams. Cela démarre la fonction Lambda, qui met à jour les utilisateurs et les groupes IAM Identity Center pour la cible. Comptes AWS
Voici un exemple des paramètres que vous pouvez fournir dans la fonction Lambda pour l'attribution d'ensembles d'autorisations à des utilisateurs et à des groupes cibles :
custom_fields = { "InstanceArn" = "<Organization ID>", "PermissionSetArn" = "<Permission set ARN>", "PrincipalId" = "<Principal ID>", }
Les paramètres de cette instruction sont les suivants :
InstanceArn— Le nom de ressource Amazon (ARN) de l'organisationPermissionSetArn— L'ARN du jeu d'autorisationsPrincipalId— L'identifiant d'un utilisateur ou d'un groupe dans IAM Identity Center auquel l'ensemble d'autorisations sera appliqué
Note
Vous devez créer l'ensemble d'autorisations cible, les utilisateurs et les groupes avant d'exécuter cette solution.
Bien que la InstanceArn valeur doive rester cohérente, vous pouvez modifier la fonction Lambda pour attribuer plusieurs ensembles d'autorisations à plusieurs identités cibles. Les paramètres des ensembles d'autorisations doivent se terminer parPermissionSetArn, et les paramètres des utilisateurs et des groupes doivent se terminer parPrincipalId. Vous devez définir les deux attributs. Voici un exemple de définition de plusieurs ensembles d'autorisations et de ciblage d'utilisateurs et de groupes :
custom_fields = { "InstanceArn" = "<Organization ID>", "AdminAccessPermissionSetArn" = "<Admin privileges permission set ARN>", "AdminAccessPrincipalId" = "<Admin principal ID>", "ReadOnlyAccessPermissionSetArn" = "<Read-only privileges permission set ARN>", "ReadOnlyAccessPrincipalId" = "<Read-only principal ID>", }
Le schéma suivant montre un step-by-step flux de travail expliquant comment la solution met à jour les ensembles d'autorisations pour les utilisateurs et les groupes de la cible Comptes AWS à grande échelle. Lorsque l'utilisateur lance une demande de création de compte, AFT lance la machine d'état aft-account-provisioning-framework Step Functions. Cette machine à états lance la fonction extract-alternate-sso Lambda. La fonction Lambda attribue des ensembles d'autorisations aux utilisateurs et aux groupes de la cible. Comptes AWS Ces utilisateurs ou groupes peuvent provenir de n'importe quelle source d'identité configurée dans IAM Identity Center. Okta, Active Directory ou Ping Identity sont des exemples de sources d'identité.

Le diagramme montre le flux de travail suivant lorsque de nouveaux comptes sont créés :
Un utilisateur introduit une
custom_fieldsmodification dans leaft-account-requestréférentiel.AWS CodePipeline démarre une AWS CodeBuild tâche qui enregistre les métadonnées définies par l'utilisateur dans la table
aft-request-auditAmazon DynamoDB. Cette table contient des attributs permettant d'enregistrer les métadonnées définies par l'utilisateur. L'ddb_event_nameattribut définit le type d'opération AFT :Si la valeur est
INSERT, la solution attribue les autorisations définies aux identités cibles lors de la création de la nouvelle Compte AWS identité.Si la valeur est
UPDATE, la solution attribue les autorisations définies aux identités cibles après leur création. Compte AWS
Amazon DynamoDB Streams lance la fonction Lambda.
aft_alternate_sso_extractLa fonction
aft_alternate_sso_extractLambda assume un rôle AWS Identity and Access Management (IAM) dans le AWS Control Tower compte de gestion.La fonction Lambda attribue les ensembles d'autorisations aux utilisateurs et aux groupes cibles en appelant l'API AWS SDK pour Python (Boto3) create_account_assignment
à IAM Identity Center. Il extrait l'ensemble d'autorisations et les attributions d'identité à partir de la table aft-request-auditAmazon DynamoDB.Lorsque le flux de travail Step Functions est terminé, les ensembles d'autorisations sont attribués aux identités cibles.
Automatisation et mise à l'échelle
AFT fonctionne à grande échelle en utilisant Services AWS des outils tels que CodePipeline DynamoDB et Lambda, qui sont hautement évolutifs. AWS CodeBuild Pour une automatisation supplémentaire, vous pouvez intégrer cette solution à un système de gestion des tickets ou des problèmes, tel que Jira. Pour plus d'informations, consultez la section Informations supplémentaires de ce modèle.
Outils
Services AWS
Account Factory for Terraform (AFT) est l'outil principal de cette solution. Le
aft-account-provisioning-customizationsréférentiel contient le code Terraform permettant de créer des personnalisations Comptes AWS, telles que des attributions personnalisées d'utilisateurs ou de groupes IAM Identity Center.Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
AWS Step Functionsest un service d'orchestration sans serveur qui vous aide à combiner des AWS Lambda fonctions et d'autres fonctions Services AWS pour créer des applications critiques pour l'entreprise.
Autres outils
Référentiel de code
Le référentiel de code pour AFT est disponible dans le référentiel GitHub AWS Control Tower Account Factory for Terraform
Bonnes pratiques
Comprenez le modèle de responsabilitéAWS partagée
. Suivez les recommandations de sécurité pour AWS Control Tower. Pour plus d'informations, consultez la section Sécurité dans AWS Control Tower.
Respectez le principe du moindre privilège. Pour en savoir plus, veuillez consulter Appliquer les autorisations de moindre privilège.
Créez des ensembles d'autorisations et des rôles IAM spécifiques et ciblés pour les groupes et les unités commerciales.
Épopées
| Tâche | Description | Compétences requises |
|---|---|---|
Créez un rôle IAM. | Dans le compte AWS Control Tower de gestion, utilisez Terraform pour créer un rôle IAM. Ce rôle dispose d'un accès entre comptes et d'une politique de confiance qui permet un accès fédéré depuis le fournisseur d'identité. Il est également autorisé à accorder l'accès à d'autres comptes via AWS Control Tower. La fonction Lambda assumera ce rôle. Procédez comme suit :
| AWS DevOps, architecte du cloud |
Personnalisez la solution en fonction de votre environnement. |
| AWS DevOps, architecte du cloud |
Déployez la solution. |
| AWS DevOps, architecte du cloud |
Configurez une connexion au référentiel de code. | Établissez une connexion entre le référentiel de code dans lequel vous allez stocker les fichiers de configuration et votre Compte AWS. Pour obtenir des instructions, consultez la section Ajouter des fournisseurs de sources tiers aux pipelines CodeConnections dans la AWS CodePipeline documentation. | AWS DevOps, architecte du cloud |
| Tâche | Description | Compétences requises |
|---|---|---|
Démarrez le pipeline AFT pour déployer un nouveau compte. | Suivez les instructions de la section Créer un nouveau compte auprès d'AFT afin de démarrer le pipeline qui en créera un nouveau Compte AWS dans votre AWS Control Tower environnement. Attendez que le processus de création du compte soit terminé. | AWS DevOps, architecte du cloud |
Validez les modifications. |
| AWS DevOps, architecte du cloud |
Résolution des problèmes
| Problème | Solution |
|---|---|
L'attribution des ensembles d'autorisations ne fonctionne pas. | Assurez-vous que l'ARN du groupe, l'identifiant de l'organisation et les paramètres Lambda sont corrects. Pour des exemples, consultez la section Présentation des solutions de ce modèle. |
La mise à jour du code dans le référentiel ne démarre pas le pipeline. | Ce problème est lié à la connectivité entre votre dépôt Compte AWS et le référentiel. Dans le AWS Management Console, confirmez que la connexion est active. Pour plus d'informations, consultez la section GitHub Connexions dans la AWS CodePipeline documentation. |
Informations supplémentaires
Intégration à un outil de gestion des tickets
Vous pouvez choisir d'intégrer cette solution à un outil de gestion des tickets ou des problèmes, tel que Jira ou ServiceNow. Le schéma suivant montre un exemple de flux de travail pour cette option. Vous pouvez intégrer l'outil de gestion des tickets aux référentiels de solutions AFT en utilisant les connecteurs de votre outil. Pour les connecteurs Jira, voir Intégrer Jiraaft-account-request GitHub référentiel. Vous pouvez concevoir n'importe quel flux de travail personnalisé répondant aux exigences de votre cas d'utilisation.

Le schéma suivant illustre le flux de travail suivant :
Les utilisateurs demandent l'attribution d'un ensemble d'autorisations personnalisé dans un outil de gestion des tickets, tel que Jira.
Une fois le dossier approuvé, un flux de travail commence à mettre à jour l'attribution de l'ensemble d'autorisations. (Facultatif) Vous pouvez utiliser des plugins pour automatiser cette étape de manière personnalisée.
Les opérateurs envoient le code Terraform avec les paramètres d'ensemble d'autorisations mis à jour au
aft-account-requestréférentiel dans une branche de développement ou de fonctionnalité.GitHub Les actions sont AWS CodeBuild initiées à l'aide d'un appel OpenID Connect (OIDC). CodeBuild effectue des analyses de sécurité de l'infrastructure sous forme de code (IaC) à l'aide d'outils tels que tfsec
et checkov . Il avertit les opérateurs de toute violation de sécurité. Si aucune violation n'est détectée, GitHub Actions crée une pull request automatique et attribue une révision du code aux propriétaires du code. Il crée également une balise pour la pull request.
Si le propriétaire du code approuve la révision du code, un autre flux de travail GitHub Actions démarre. Il vérifie les normes relatives aux pull requests, notamment :
Si le titre de la pull request répond aux exigences.
Si le corps de la pull request contient des numéros de dossier approuvés.
Si la pull request est correctement étiquetée.
Si les pull requests répondent aux normes, GitHub Actions lance le flux de travail du produit AFT. Il utilise les démarrages du
ct-aft-account-requestpipeline AWS CodePipeline. Ce pipeline démarre la machine à étatsaft-account-provisioning-frameworkpersonnalisés dans Step Functions. Cette machine à états fonctionne comme décrit précédemment dans la section Présentation des solutions de ce modèle.