Gérez les ensembles d'autorisations pour plusieurs comptes en utilisant Account Factory pour Terraform - 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.

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

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 AWS

  • aft-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'organisation

  • PermissionSetArn— L'ARN du jeu d'autorisations

  • PrincipalId— 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é.

Flux de travail de mise à jour des ensembles d'autorisations lors de la création ou de la mise à jour d'un compte.

Le diagramme montre le flux de travail suivant lorsque de nouveaux comptes sont créés :

  1. Un utilisateur introduit une custom_fields modification dans le aft-account-request référentiel.

  2. 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-audit Amazon 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 estINSERT, 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 estUPDATE, la solution attribue les autorisations définies aux identités cibles après leur création. Compte AWS

  3. Amazon DynamoDB Streams lance la fonction Lambda. aft_alternate_sso_extract

  4. La fonction aft_alternate_sso_extract Lambda assume un rôle AWS Identity and Access Management (IAM) dans le AWS Control Tower compte de gestion.

  5. 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-audit Amazon DynamoDB.

  6. 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-customizations ré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

  • Python est un langage de programmation informatique polyvalent.

  • Terraform est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.

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. Le code de ce modèle est disponible dans le référentiel Govern SSO Assignments for Comptes AWS using Account Factory for Terraform (AFT).

Bonnes pratiques

Épopées

TâcheDescriptionCompé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 :

  1. Téléchargez le AFTCrossAccountRole.tf fichier depuis le référentiel de GitHub code.

  2. Modifiez le AFTCrossAccountRole.tf fichier selon les besoins de votre AWS environnement.

  3. Dans Terraform, entrez les commandes suivantes pour créer ce rôle IAM :

    terraform init terraform plan terraform apply
  4. Vérifiez que le rôle a été déployé avec succès et qu'il dispose de l'accès inter-comptes attendu.

AWS DevOps, architecte du cloud

Personnalisez la solution en fonction de votre environnement.

  1. Entrez la commande suivante pour cloner les assignations Govern SSO pour Comptes AWS l'utilisation du référentiel Account Factory for Terraform (AFT) sur votre poste de travail local.

    git clone https://github.com/aws-samples/aft-custom-sso-assignment.git
  2. Dans le aft-account-provisioning-customizations/terraform dossier, ouvrez le variables.tf fichier.

  3. Modifiez les variables selon les besoins de votre environnement.

  4. Enregistrez et fermez le fichier variables.tf.

  5. Ouvrez le account-request.tf fichier dans votre aft-account-request référentiel.

  6. Modifiez les custom_fields paramètres pour définir les ensembles d'autorisations et cibler les utilisateurs et les groupes. Pour plus d'informations, consultez la section Architecture de ce modèle.

  7. Enregistrez et fermez le fichier account-request.tf.

AWS DevOps, architecte du cloud

Déployez la solution.

  1. Dans le référentiel cloné, copiez le contenu du terraform dossier, puis collez-le dans le terraform dossier du aft-account-provisioning-customizations référentiel.

  2. Dans le compte de gestion AFT, démarrez le ct-aft-account-provisioning-customizations pipeline. Cela permet de déployer la solution personnalisée. Pour obtenir des instructions, voir Démarrer un pipeline dans CodePipeline.

  3. Vérifiez que les ressources ont été déployées avec succès dans le compte de gestion AFT.

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âcheDescriptionCompé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.

  1. Ouvrez la AWS IAM Identity Center console.

  2. Dans la liste des comptes, sélectionnez le compte que vous venez de créer.

  3. Vérifiez que des ensembles d'autorisations ont été attribués pour accorder l'accès aux utilisateurs et aux groupes cibles.

AWS DevOps, architecte du cloud

Résolution des problèmes

ProblèmeSolution

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 Jira à. GitHub Pour les ServiceNow connecteurs, reportez-vous à la section Intégration avec GitHub. Vous pouvez même créer des solutions personnalisées qui obligent les utilisateurs à fournir un identifiant de ticket dans le cadre de l'approbation de la pull request. Si une demande de création d'un nouveau fichier à Compte AWS l'aide d'AFT est approuvée, cet événement peut lancer un flux de travail qui ajoute des champs personnalisés au aft-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.

Flux de travail qui utilise GitHub des actions et un outil de gestion des tickets.

Le schéma suivant illustre le flux de travail suivant :

  1. Les utilisateurs demandent l'attribution d'un ensemble d'autorisations personnalisé dans un outil de gestion des tickets, tel que Jira.

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

  3. Les opérateurs envoient le code Terraform avec les paramètres d'ensemble d'autorisations mis à jour au aft-account-request référentiel dans une branche de développement ou de fonctionnalité.

  4. 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é.

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

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

  7. 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-request pipeline AWS CodePipeline. Ce pipeline démarre la machine à états aft-account-provisioning-framework personnalisé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.