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 AWS d'autorisations de manière dynamique à l'aide de Terraform
Vinicius Elias et Marcos Vinicius Pinto Jordão, Amazon Web Services
Récapitulatif
AWS IAM Identity Center améliore AWS Identity and Access Management (IAM) en fournissant un hub centralisé pour la gestion de l'accès par authentification unique aux applications cloud Comptes AWS et aux applications cloud. Cependant, la gestion manuelle des ensembles d'autorisations IAM Identity Center peut devenir de plus en plus complexe et source d'erreurs au fur et à mesure que votre entreprise grandit. Cette complexité peut entraîner des failles de sécurité potentielles et des frais administratifs.
Cette solution vous permet de gérer les ensembles d'autorisations via l'infrastructure en tant que code (IaC) à l'aide d'un pipeline d'intégration continue et de livraison continue (CI/CD) construit en mode natif. Services AWS Il permet une intégration fluide du mécanisme d'attribution des ensembles d'autorisations aux événements AWS Control Tower du cycle de vie ou à un environnement Account Factory for Terraform (AFT). Cette approche fournit des configurations d'identité dynamiques pour les nouvelles et les existantes Comptes AWS.
EventBridge Les règles d'Amazon surveillent les Compte AWS créations et les mises à jour, ce qui permet à vos configurations d'identité de rester synchronisées avec votre structure organisationnelle. Après avoir créé ou mis à jour des comptes dans AWS Control Tower ou AFT, le pipeline est déclenché. Il évalue un ensemble de fichiers JSON avec des définitions d'ensembles d'autorisations et des règles d'attribution. Ensuite, le pipeline applique et synchronise les paramètres sur tous les comptes.
Cette approche présente les avantages suivants :
Cohérence — Élimine la dérive manuelle des configurations au sein de votre AWS organisation
Auditabilité : conserve un historique complet de toutes les modifications apportées à la gestion des identités
Évolutivité — Applique automatiquement les configurations à mesure que votre AWS environnement se développe
Sécurité — Réduit les erreurs humaines lors de l'attribution des autorisations
Conformité — Facilite le respect des exigences réglementaires grâce à des modifications documentées et à des règles d'attribution
Conditions préalables et limitations
Un environnement multi-comptes avec AWS Control Tower et AWS Organizations configuré. Vous pouvez éventuellement utiliser AFT avec AWS Control Tower.
Un administrateur délégué du IAM Identity Center est Compte AWS chargé de recevoir la solution. Pour plus d'informations, consultez la section Administration déléguée dans la documentation d'IAM Identity Center.
Un référentiel de système de contrôle de version (VCS) pour gérer le code principal. Pour un exemple, consultez le GitHub référentiel
de la solution. AWS Ressources nécessaires à la gestion du backend Terraform, telles qu'un bucket Amazon Simple Storage Service (Amazon S3) et une table Amazon DynamoDB.
Limites
Le pipeline utilise des ressources AWS natives et l'open source Terraform. Le pipeline n'est pas prêt à faire appel à des écosystèmes tiers.
Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section AWS Services par région
. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.
Architecture
Le schéma suivant montre les composants et le flux de travail de ce modèle.

AWS Control Tower flux d'événements
La solution commence par l'intégration des événements provenant de l'un ou de l'autre AWS Control Tower ou de l'AFT. Le choix entre l'un ou l'autre service est effectué au moment de la mise en œuvre par le biais d'une définition de variable. Quelle que soit la méthode utilisée, le pipeline est déclenché chaque fois qu'un compte est créé ou mis à jour. Le pipeline réconcilie les politiques stockées dans le référentiel de gestion des ensembles d'autorisations.
Les événements du AWS Control Tower cycle de vie sont les suivants :
CreateManagedAccount
— Lorsqu'un nouveau compte est crééUpdateManagedAccount
— Lorsqu'un compte existant est mis à jour
Routage des événements
EventBridge sert de service central de traitement des événements, capturant les événements générés dans le AWS Control Tower compte. Lorsque des événements se produisent, ils EventBridge sont acheminés de manière intelligente vers un bus d'événements centralisé dans le compte de solution. AWS Control Tower les événements du cycle de vie suivent des modèles de routage distincts. Si AFT est défini comme source d'événements, le compte de gestion AFT gère les événements à la place du AWS Control Tower compte. Cette architecture axée sur les événements permet de répondre automatiquement aux changements organisationnels sans intervention manuelle.
Processus d'intégration AFT
Lorsque les événements AWS Control Tower du cycle de vie atteignent le compte de gestion de l'AFT, ils déclenchent automatiquement plusieurs processus en aval intrinsèques à l'AFT. Une fois le processus de personnalisation du compte AFT terminé, celui-ci publie un message dans la rubrique dédiée aft-notifications
Amazon Simple Notification Service (Amazon SNS). Cette rubrique déclenche la aft-new-account-forward-event
AWS Lambda fonction implémentée par cette solution. La fonction Lambda envoie l'événement au bus d'événements du compte de solution, où il est utilisé pour démarrer le pipeline.
L'infrastructure en tant que pipeline de code
Le pipeline de solutions fonctionne comme un mécanisme de déploiement entièrement automatisé. Le AWS CodePipeline service surveille en permanence les modifications apportées au référentiel. Lors de la détection de nouveaux validations, il lance automatiquement le flux de travail de déploiement et lance un processus séquentiel comprenant des phases de validation et d'exécution. Le système exécute des plan
opérations Terraform pour identifier les modifications proposées, suivies de apply
commandes Terraform pour implémenter ces modifications dans l'environnement. AWS Notamment, le pipeline fonctionne sans aucune porte d'approbation manuelle. Cette approche permet un déploiement rapide des modifications de l'infrastructure tout en maintenant l'auditabilité grâce aux journaux de pipeline et aux fichiers d'état Terraform.
Le pipeline s'appuie sur AWS CodeBuild l'exécution des opérations Terraform dans un environnement contrôlé avec les autorisations appropriées. Grâce à cette approche IaC, le pipeline peut effectuer des opérations complètes de gestion des autorisations, notamment :
Créez de nouveaux ensembles d'autorisations.
Mettez à jour les ensembles d'autorisations existants.
Supprimez les ensembles d'autorisations inutiles.
Gérez l'attribution de ces autorisations entre les comptes et les groupes au sein des AWS organisations.
Pour maintenir la cohérence de l'infrastructure et éviter les modifications contradictoires, la solution implémente le système de gestion de l'état du backend Terraform à l'aide d'un bucket Amazon S3 et d'une table Amazon DynamoDB dédiée. Cette approche fournit un emplacement de stockage permanent pour les fichiers d'état Terraform et des mécanismes de verrouillage d'état pour empêcher les modifications simultanées des mêmes ressources.
Le code principal de Terraform utilise le module AWS permission-sets
Terraform officiel. Ce module permet de gérer dynamiquement les ensembles d'autorisations dans IAM Identity Center, sur la base de modèles d'ensembles d'autorisations.
Gestion du contrôle à la source
Les modèles d'ensembles d'autorisations (fichiers JSON) résident dans un système de contrôle de version externe GitHub, tel que celui qui fournit un référentiel centralisé pour les configurations de gestion des identités. Cette approche établit une source unique de vérité pour les définitions des ensembles d'autorisations, tout en permettant un développement collaboratif grâce à des pratiques de révision de code standard. Les utilisateurs autorisés peuvent apporter des modifications à ces modèles conformément aux processus de gestion des changements organisationnels. Ces validations constituent le principal déclencheur du pipeline de déploiement automatisé, initiant le processus de mise à jour de l'infrastructure.
Pour un exemple de configuration des ensembles d'autorisations à l'aide du fichier JSON du référentiel, voir Informations supplémentaires.
Outils
Services AWS
AWS CodeBuildest un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés.
AWS CodeConnectionspermet aux AWS ressources et aux services CodePipeline, tels que la connexion à des référentiels de code externes, tels que GitHub.
AWS CodePipelinevous permet de modéliser et de configurer rapidement les différentes étapes d'une version logicielle et d'automatiser les étapes nécessaires à la publication continue des modifications logicielles.
AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
AWS Control Towervous aide à configurer et à gérer un environnement AWS multi-comptes, conformément aux meilleures pratiques prescriptives.
Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
Amazon EventBridge est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, des AWS Lambda fonctions, des points de terminaison d'invocation HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. Comptes AWS
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
AWS IAM Identity Centervous permet de gérer de manière centralisée l'accès par authentification unique (SSO) à toutes vos applications Comptes AWS et à celles du cloud.
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 Organizationsest un service de gestion de comptes qui vous aide à Comptes AWS en regrouper plusieurs au sein d'une organisation que vous créez et gérez de manière centralisée.
Amazon Simple Notification Service (Amazon SNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail. Il active les notifications push pour les événements de gestion des comptes, garantissant ainsi que les parties concernées sont informées des modifications ou actions importantes au sein du système.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
Autres outils
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 code de ce modèle est disponible dans l'organisation AWS Samples ou GitHub dans le référentiel sample-terraform-aws-permission-sets-pipeline
Bonnes pratiques
Identifiez toujours les versions des modules et fournisseurs Terraform utilisés pour exécuter le code en production.
Utilisez un outil d'analyse de code statique, tel que Checkov
, pour scanner votre code puis résoudre les problèmes de sécurité. Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections Accorder le moindre privilège et Bonnes pratiques en matière de sécurité dans la documentation IAM.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez des ressources de backend Terraform. | Si vous n'avez pas encore créé vos AWS ressources de backend Terraform, suivez les étapes suivantes pour créer un compartiment Amazon S3 (
| Administrateur AWS |
Créez un rôle multicompte. | Vous devez fournir un rôle IAM entre comptes dans la configuration du fournisseur
Cet exemple utilise la politique AdministratorAccessIAM AWS gérée. Si vous préférez, vous pouvez utiliser une politique plus spécifique. | Administrateur AWS |
Tâche | Description | Compétences requises |
---|---|---|
Créez un référentiel dédié. | Cette tâche suppose que vous utilisez GitHub. Créez un référentiel dédié pour stocker le code principal de Terraform et les fichiers JSON du modèle d'ensemble d'autorisations. | DevOps ingénieur |
Préparez le code du jeu d'autorisations. | Pour plus d'informations sur la manière dont vous pouvez structurer les fichiers suivants, consultez l'exemple de code ─ main.tf ─ outputs.tf ─ providers.jinja 3_─ modèles Copiez le contenu, conservez les | DevOps ingénieur |
Validez vos modifications. | Validez et envoyez les modifications au référentiel que vous avez créé précédemment. Enregistrez le nom du référentiel et son GitHub organisation, par exemple | DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Téléchargez le contenu. | Téléchargez (clonez) le contenu depuis le référentiel | DevOps ingénieur |
Renseignez les variables. | Créez un
Pour plus d'informations sur les options de variables supplémentaires, consultez le fichier variables.tf | DevOps ingénieur |
Ajustez la configuration du backend Terraform. | Dans le
Si vous préférez, vous pouvez utiliser votre propre configuration de backend Terraform. | DevOps ingénieur |
Ajustez la configuration du fournisseur Terraform. | Dans le
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Sélectionnez le Compte AWS. | Nous vous recommandons de déployer la solution dans le compte d'administrateur délégué d'IAM Identity Center. Toutefois, vous pouvez également le déployer dans le compte AWS Organizations de gestion. Pour vous connecter au compte sélectionné dans la même région que l'instance IAM Identity Center, utilisez le AWS CLI. Assurez-vous que le rôle IAM que vous utilisez est autorisé à assumer le rôle spécifié pour le | Administrateur AWS |
Exécutez Terraform manuellement. | Pour initialiser, planifier et appliquer les configurations, exécutez les commandes Terraform suivantes dans l'ordre indiqué :
| DevOps ingénieur |
Vérifiez les résultats du déploiement. | Dans le compte d'administrateur délégué d'IAM Identity Center, vérifiez que le | AWS DevOps |
Terminez la CodeConnections configuration. | Pour terminer la CodeConnections configuration, procédez comme suit :
Le pipeline devrait désormais avoir accès au référentiel des ensembles d'autorisations. Pour obtenir des instructions détaillées, voir Mettre à jour une connexion en attente dans la documentation de la console Developer Tools. | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Exécutez le pipeline par AWS Control Tower ou les mises à jour AFT. | Une fois qu'un compte est créé ou modifié en utilisant AWS Control Tower ou AFT (selon le type d'événements du cycle de vie que vous avez choisi), le pipeline démarre. | Administrateur AWS |
Exécutez le pipeline en modifiant le code. | Après avoir modifié le code et l'avoir validé dans la | AWS DevOps |
Exécutez le pipeline manuellement. | Pour démarrer le pipeline manuellement, utilisez la fonction de modification de version dans AWS CodePipeline. | AWS DevOps |
Résolution des problèmes
Problème | Solution |
---|---|
Accès refusé | Vérifiez que vous disposez des autorisations requises pour déployer la solution. |
CodeConnections problèmes |
|
Problèmes d'exécution du pipeline |
|
Problèmes de déploiement des ensembles d'autorisations |
|
Ressources connexes
Service AWS documentation
Gestion Comptes AWS à l'aide d'ensembles d'autorisations (documentation IAM Identity Center)
Autres ressources
AWS Module d'ensembles d'autorisations
(Terraform)
Informations supplémentaires
Fichier JSON avec un exemple d'ensemble d'autorisations
L'exemple suivant montre comment configurer un ensemble d'autorisations à l'aide du fichier JSON du référentiel :
{ "Name": "ps-billing", // Permission set identifier "Comment": "Sample permission set for billing access", // Comment to document the purpose of the permission set "Description": "Billing access in AWS", // Detailed description "SessionDuration": "PT4H", // Session duration = 4 hours (ISO 8601 format) "ManagedPolicies": [ // List of AWS IAM managed policies "arn:aws:iam::aws:policy/job-function/Billing", "arn:aws:iam::aws:policy/job-function/SupportUser", "arn:aws:iam::aws:policy/AWSSupportAccess", "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess" ], "CustomerPolicies": [], // References to IAM policies previously created "CustomPolicy": {}, // Inline IAM policy defined directly in the permission set "PermissionBoundary": { // AWS or customer managed IAM policy to be used as boundary "ManagedPolicy": "", "CustomerPolicy": "" }, "Assignments": [ // Define the assignment rules { "all_accounts": true, // Apply to ALL active AWS accounts in organization "principal": "G_BILLING_USERS", // Group/user name in Identity Center "type": "GROUP", // Can be "GROUP" or "USER" "account_id": [], // List of AWS account ID (empty since all_accounts=true) "account_ou": [], // List of AWS Organizational Unit IDs with target AWS accounts "account_tag": [] // List of tags (key:value) to match AWS Organization accounts tags } ] }
Pour plus d'informations, consultez le schéma JSON dans la documentation du module AWS Permission Sets
Astuces
Vous pouvez utiliser les blocs d'importation
Terraform pour importer un ensemble d'autorisations existant dans la solution. Vous pouvez utiliser AFT pour implémenter le pipeline AWS d'ensembles d'autorisations dans un compte délégué. Pour plus d'informations, consultez AFT Blueprints
.