

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
<a name="govern-permission-sets-aft"></a>

*Anand Krishna Varanasi et Siamak Heshmati, Amazon Web Services*

## Résumé
<a name="govern-permission-sets-aft-summary"></a>

Ce modèle vous permet d'intégrer [AWS Control Tower Account Factory Terraform (AFT) [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)afin 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) 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
<a name="govern-permission-sets-aft-prereqs"></a>

**Conditions préalables**
+ Comptes AWS, géré par AWS Control Tower. Pour plus d'informations, consultez la section [Mise en route avec AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html).
+ 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](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html).
+ Une instance IAM Identity Center, configurée dans votre environnement. Pour plus d'informations, consultez [Getting Started with IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html).
+ Un [groupe](https://docs.aws.amazon.com/singlesignon/latest/userguide/users-groups-provisioning.html#groups-concept) IAM Identity Center actif, configuré.  Pour plus d'informations, voir [Ajouter des groupes à votre Répertoire IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html).
+ 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html) dans la documentation d'IAM Identity Center.

## Architecture
<a name="govern-permission-sets-aft-architecture"></a>

**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](https://docs.aws.amazon.com/controltower/latest/userguide/aft-architecture.html) 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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html) 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 par`PermissionSetArn`, et les paramètres des utilisateurs et des groupes doivent se terminer par`PrincipalId`. 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.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/14751255-3781-48db-a6b7-1a03e28c1020/images/d1de252d-8ac9-4f7d-a559-4ab3e852f325.png)


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.

1. 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_name`attribut 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 

1. Amazon DynamoDB Streams lance la fonction Lambda. `aft_alternate_sso_extract`

1. La fonction `aft_alternate_sso_extract` Lambda assume un rôle Gestion des identités et des accès AWS (IAM) dans le AWS Control Tower compte de gestion.

1. La fonction Lambda attribue les ensembles d'autorisations aux utilisateurs et aux groupes cibles en appelant l'API AWS SDK pour Python (Boto3) [create\$1account\$1assignment](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sso-admin/client/create_account_assignment.html) à IAM Identity Center. Il extrait l'ensemble d'autorisations et les attributions d'identité à partir de la table `aft-request-audit` Amazon DynamoDB.

1. 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](#govern-permission-sets-aft-additional) de ce modèle.

## Outils
<a name="govern-permission-sets-aft-tools"></a>

**Services AWS**
+ [Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) 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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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 Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)est 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](https://www.python.org/) est un langage de programmation informatique polyvalent.
+ [Terraform](https://www.terraform.io/) 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](https://github.com/aws-ia/terraform-aws-control_tower_account_factory). 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)](https://github.com/aws-samples/aft-custom-sso-assignment).

## Bonnes pratiques
<a name="govern-permission-sets-aft-best-practices"></a>
+ Comprenez le [modèle de responsabilitéAWS partagée](https://aws.amazon.com/compliance/shared-responsibility-model/).
+ Suivez les recommandations de sécurité pour AWS Control Tower. Pour plus d'informations, consultez [la section Sécurité dans AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/security.html).
+ Respectez le principe du moindre privilège. Pour en savoir plus, veuillez consulter [Appliquer les autorisations de moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ 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
<a name="govern-permission-sets-aft-epics"></a>

### Déploiement de la solution
<a name="deploy-the-solution"></a>


| Sous-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 :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | AWS DevOps, architecte du cloud | 
| Personnalisez la solution en fonction de votre environnement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | AWS DevOps, architecte du cloud | 
| Déployez la solution. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-connections.html) dans la AWS CodePipeline documentation. | AWS DevOps, architecte du cloud | 

### Utilisez la solution
<a name="use-the-solution"></a>


| Sous-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](https://docs.aws.amazon.com/controltower/latest/userguide/aft-provision-account.html) 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. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | AWS DevOps, architecte du cloud | 

## Résolution des problèmes
<a name="govern-permission-sets-aft-troubleshooting"></a>


| 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/connections-github.html) dans la AWS CodePipeline documentation. | 

## Informations supplémentaires
<a name="govern-permission-sets-aft-additional"></a>

**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](https://support.atlassian.com/jira-cloud-administration/docs/integrate-jira-software-with-github/) à. GitHub Pour les ServiceNow connecteurs, reportez-vous à la section [Intégration avec GitHub](https://www.servicenow.com/docs/bundle/washingtondc-it-asset-management/page/product/software-asset-management2/concept/integrate-with-github.html). 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 utilisant des GitHub actions et un outil de gestion des tickets.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/14751255-3781-48db-a6b7-1a03e28c1020/images/83763f65-32ea-4de0-932f-14a1b2d1d3ad.png)


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.

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

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

1. 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](https://aquasecurity.github.io/tfsec/v1.20.0/) et [checkov](https://www.checkov.io/). Il avertit les opérateurs de toute violation de sécurité.

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

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

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