

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.

# Centralisez la gestion des clés d'accès IAM dans AWS Organizations à l'aide de Terraform
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform"></a>

*Aarti Rajput, Chintamani Aphale, T.V.R.L. Phani Kumar Dadi, Pratap Kumar Nanda, Pradip Kumar Pandey et Mayuri Shinde, Amazon Web Services*

## Résumé
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-summary"></a>

L'application des règles de sécurité pour les clés et les mots de passe est une tâche**** essentielle pour chaque organisation. L'une des règles importantes consiste à alterner les clés AWS Identity and Access Management (IAM) à intervalles réguliers pour renforcer la sécurité. Les clés d'accès AWS sont généralement créées et configurées localement chaque fois que les équipes souhaitent accéder à AWS depuis l'interface de ligne de commande AWS**** (AWS CLI) ou depuis des applications extérieures à AWS. Pour garantir une sécurité renforcée au sein de l'entreprise, les anciennes clés de sécurité doivent être modifiées ou supprimées une fois que les exigences ont été satisfaites ou à intervalles réguliers. Le processus de gestion de la rotation des clés entre plusieurs comptes d'une organisation est long et fastidieux. Ce modèle vous permet d'automatiser le processus de rotation en utilisant Account Factory for Terraform (AFT) et les services AWS.

Le modèle offre les avantages suivants :
+ Gère votre clé d'accès IDs et vos clés d'accès secrètes sur tous les comptes de votre organisation à partir d'un emplacement central.
+ Fait automatiquement pivoter les variables `AWS_ACCESS_KEY_ID` d'`AWS_SECRET_ACCESS_KEY`environnement et.
+ Applique le renouvellement si les informations d'identification de l'utilisateur sont compromises.

Le modèle utilise Terraform pour déployer les fonctions AWS Lambda, les règles EventBridge Amazon et les rôles IAM. Une EventBridge règle s'exécute à intervalles réguliers et appelle une fonction Lambda qui répertorie toutes les clés d'accès utilisateur en fonction de leur date de création. Des fonctions Lambda supplémentaires créent un nouvel identifiant de clé d'accès et une nouvelle clé d'accès secrète, si la clé précédente est antérieure à la période de rotation que vous avez définie (par exemple, 45 jours), et en informent un administrateur de sécurité en utilisant Amazon Simple Notification Service (Amazon SNS) et Amazon Simple Email Service (Amazon SES). Les secrets sont créés dans AWS Secrets Manager pour cet utilisateur, l'ancienne clé d'accès secrète est stockée dans Secrets Manager et les autorisations d'accès à l'ancienne clé sont configurées. Pour garantir que l'ancienne clé d'accès ne soit plus utilisée, elle est désactivée après une période d'inactivité (par exemple, 60 jours, soit 15 jours après la rotation des clés dans notre exemple). Après une période tampon inactive (par exemple, 90 jours ou 45 jours après la rotation des clés dans notre exemple), les anciennes clés d'accès sont supprimées d'AWS Secrets Manager. Pour une architecture et un flux de travail détaillés, consultez la section [Architecture](#centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-architecture).

## Conditions préalables et limitations
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-prereqs"></a>
+ Une zone de landing zone pour votre organisation créée à l'aide d'[AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html) (version 3.1 ou ultérieure)
+  [Account Factory for Terraform (AFT)](https://catalog.workshops.aws/control-tower/en-US/customization/aft) configuré avec trois comptes :
  + Le [compte de gestion de l'organisation](https://catalog.workshops.aws/control-tower/en-US/customization/aft/repositories/global-customizations) gère l'ensemble de l'organisation à partir d'un emplacement central.
  + Le [compte de gestion AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft/repositories/account-customizations) héberge le pipeline Terraform et déploie l'infrastructure dans le compte de déploiement.
  + [Le compte de déploiement](https://catalog.workshops.aws/control-tower/en-US/customization/aft/repositories/provisioning-customizations) déploie cette solution complète et gère les clés IAM à partir d'un emplacement central.
+ Terraform version 0.15.0 ou ultérieure pour le provisionnement de l'infrastructure dans le compte de déploiement.
+ Adresse e-mail configurée dans [Amazon Simple Email Service (Amazon SES)](https://aws.amazon.com/ses/).
+ (Recommandé) Pour améliorer la sécurité, déployez cette solution dans un [sous-réseau privé](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) (compte de déploiement) au sein d'un [cloud privé virtuel (VPC](https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/latest)). Vous pouvez fournir les détails du VPC et du sous-réseau lorsque vous personnalisez les variables (voir *Personnaliser les paramètres du pipeline de code dans la* section [Epics](#centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-epics)).

## Architecture
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-architecture"></a>

**Référentiels AFT**

Ce modèle utilise Account Factory for Terraform (AFT) pour créer toutes les ressources AWS requises et le pipeline de code pour déployer les ressources dans un compte de déploiement. Le pipeline de code s'exécute dans deux référentiels :
+ **La personnalisation globale** contient le code Terraform qui s'appliquera à tous les comptes enregistrés auprès d'AFT.
+ **Les personnalisations de compte** contiennent du code Terraform qui s'exécutera dans le compte de déploiement.

**Détails de ressource**

Les CodePipeline tâches AWS créent les ressources suivantes dans le compte de déploiement :
+  EventBridge Règle AWS et règle configurée
+ Fonction Lambda `account-inventory`
+ Fonction Lambda `IAM-access-key-rotation`
+ Fonction Lambda `Notification`
+ Compartiment Amazon Simple Storage Service (Amazon S3) contenant un modèle d'e-mail
+ Politique IAM requise

**Architecture**

![\[Architecture pour centraliser la gestion des clés d'accès IAM dans AWS Organizations\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/0217275c-cb4c-4bdf-b105-ad9abfd4fded/images/844512f0-67b3-4d41-aaaa-fbd9e341c438.png)


Le diagramme illustre les éléments suivants :

1. Une EventBridge règle appelle la fonction `account-inventory` Lambda toutes les 24 heures.

1. La fonction `account-inventory` Lambda interroge AWS Organizations pour obtenir la liste de tous les comptes IDs, noms de comptes et e-mails relatifs aux comptes AWS. 

1. La fonction `account-inventory` Lambda lance une fonction `IAM-access-key-auto-rotation` Lambda pour chaque compte AWS et lui transmet les métadonnées pour un traitement supplémentaire.

1. La fonction `IAM-access-key-auto-rotation` Lambda utilise un rôle IAM supposé pour accéder au compte AWS. Le script Lambda exécute un audit auprès de tous les utilisateurs et de leurs clés d'accès IAM dans le compte.

1. Le seuil de rotation de la clé IAM (période de rotation) est configuré en tant que variable d'environnement lorsque la fonction `IAM-access-key-auto-rotation` Lambda est déployée. Si la période de rotation est modifiée, la fonction `IAM-access-key-auto-rotation` Lambda est redéployée avec une variable d'environnement mise à jour. Vous pouvez configurer des paramètres pour définir la période de rotation, la période d'inactivité pour les anciennes clés et le tampon inactif après lequel les anciennes clés seront supprimées (voir *Personnaliser les paramètres du pipeline de code* dans la section [Epics](#centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-epics)).

1. La fonction `IAM-access-key-auto-rotation` Lambda valide l'âge de la clé d'accès en fonction de sa configuration. Si l'âge de la clé d'accès IAM n'a pas dépassé la période de rotation que vous avez définie, la fonction Lambda n'entreprend aucune autre action.

1. Si l'âge de la clé d'accès IAM dépasse la période de rotation que vous avez définie, la fonction `IAM-access-key-auto-rotation` Lambda crée une nouvelle clé et fait pivoter la clé existante.

1. La fonction Lambda enregistre l'ancienne clé dans Secrets Manager et limite les autorisations aux utilisateurs dont les clés d'accès ne sont pas conformes aux normes de sécurité. La fonction Lambda crée également une politique basée sur les ressources qui permet uniquement au principal IAM spécifié d'accéder au secret et de le récupérer.

1. La fonction `IAM-access-key-rotation` Lambda appelle la fonction Lambda`Notification`.

1. La fonction `Notification` Lambda interroge le compartiment S3 à la recherche d'un modèle d'e-mail et génère dynamiquement des e-mails avec les métadonnées d'activité pertinentes.

1. La fonction `Notification` Lambda appelle Amazon SES pour qu'il prenne d'autres mesures.

1.  Amazon SES envoie un e-mail contenant les informations pertinentes à l'adresse e-mail du titulaire du compte.

## Outils
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-tools"></a>

**Services AWS**
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser. Ce modèle nécessite des rôles et des autorisations IAM.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à 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 Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) vous aide à remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un appel d'API à Secrets Manager pour récupérer le secret par programmation.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) vous permet d'envoyer et de recevoir des e-mails en utilisant vos propres adresses e-mail et domaines.

**Autres outils**
+ [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**

Les instructions et le code de ce modèle sont disponibles dans le référentiel de [rotation des clés d'accès GitHub IAM](https://github.com/aws-samples/centralized-iam-key-management-aws-organizations-terraform.git). Vous pouvez déployer le code dans le compte de déploiement central d'AWS Control Tower pour gérer la rotation des clés depuis un emplacement central.

## Bonnes pratiques
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-best-practices"></a>
+ Pour IAM, consultez les [meilleures pratiques de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.
+ Pour la rotation des clés, consultez les [instructions relatives à la mise à jour des clés d'accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#rotate-credentials) dans la documentation IAM.

## Épopées
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-epics"></a>

### Configuration des fichiers sources
<a name="set-up-source-files"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

### Configurer les comptes
<a name="configure-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le compte d'amorçage. | Dans le cadre du processus de [démarrage AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft/deploy), vous devriez avoir un dossier appelé `aft-bootstrap` sur votre machine locale.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 
| Configurez les personnalisations globales. | Dans le cadre de la configuration du [dossier AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft/repositories/global-customizations), vous devriez avoir un dossier appelé `aft-global-customizations` sur votre machine locale.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 
| Configurez les personnalisations du compte. | Dans le cadre de la [configuration du dossier AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft/repositories/account-customizations), vous devez être appelé dossier `aft-account-customizations` sur votre machine locale.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

### Personnaliser les paramètres du pipeline de code
<a name="customize-parameters-for-the-code-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Personnalisez les paramètres du pipeline de code autres que Terraform pour tous les comptes. | Créez un fichier appelé `input.auto.tfvars` dans le `aft-global-customizations/terraform/` dossier et fournissez les données d'entrée requises. Consultez [le fichier dans le GitHub référentiel](https://github.com/aws-samples/centralized-iam-key-management-aws-organizations-terraform/blob/main/global-account-customization/input.auto.tfvars) pour les valeurs par défaut. | DevOps ingénieur | 
| Personnalisez les paramètres du pipeline de code pour le compte de déploiement. | Créez un fichier appelé `input.auto.tfvars` dans le `aft-account-customizations/<AccountName>/terraform/` dossier et envoyez le code à AWS CodeCommit. Le transfert de code vers AWS initie CodeCommit automatiquement le pipeline de code.Spécifiez les valeurs des paramètres en fonction des exigences de votre organisation, notamment les suivantes (voir [le fichier dans le référentiel Github](https://github.com/aws-samples/centralized-iam-key-management-aws-organizations-terraform/blob/main/account-customization/input.auto.tfvars) pour les valeurs par défaut) : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

### Valider la rotation des clés
<a name="validate-key-rotation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez la solution. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

### Élargir la solution
<a name="extend-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Personnalisez la date de notification par e-mail. | Si vous souhaitez envoyer des notifications par e-mail un jour précis avant de désactiver la clé d'accès, vous pouvez mettre à jour la fonction `IAM-access-key-auto-rotation` Lambda avec les modifications suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| La tâche `account-inventory` Lambda échoue lors de la mise `AccessDenied` en liste des comptes. | Si vous rencontrez ce problème, vous devez valider les autorisations :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.html) | 

## Ressources connexes
<a name="centralize-iam-access-key-management-in-aws-organizations-by-using-terraform-resources"></a>
+ [Pratiques recommandées par Terraform (documentation](https://developer.hashicorp.com/terraform/cloud-docs/recommended-practices) Terraform)
+ [Bonnes pratiques de sécurité dans le domaine de l'IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentation IAM)
+ [Bonnes pratiques pour la rotation des clés](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#rotate-credentials) (documentation IAM)