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.
Faites automatiquement pivoter les clés d'accès utilisateur IAM à grande échelle avec AWS Organizations et AWS Secrets Manager
Créée par Tracy Hickey (AWS), Gaurav Verma (AWS), Laura Seletos (AWS), Michael Davie (AWS) et Arvind Patel (AWS)
Récapitulatif
ImportantEn tant que bonne pratique, AWS vous recommande d'utiliser des rôles AWS Identity and Access Management (IAM) plutôt que des utilisateurs IAM dotés d'informations d'identification à long terme, telles que des clés d'accès. L'approche décrite dans ce modèle est destinée uniquement aux implémentations existantes qui nécessitent des informations d'identification d'API AWS de longue durée. Pour ces implémentations, nous vous recommandons tout de même d'envisager des options d'utilisation d'informations d'identification à court terme, telles que l'utilisation de profils d'instance Amazon Elastic Compute Cloud (Amazon EC2) ou d'IAM Roles Anywhere. L'approche décrite dans cet article concerne uniquement les cas où vous ne pouvez pas passer immédiatement à l'utilisation d'informations d'identification à court terme et où vous avez besoin d'une rotation des informations d'identification à long terme selon un calendrier. Avec cette approche, vous êtes responsable de la mise à jour périodique du code ou de la configuration de votre ancienne application afin d'utiliser les informations d'identification d'API modifiées. |
Les clés d'accès sont des informations d'identification à long terme pour un utilisateur IAM. La rotation régulière de vos informations d'identification IAM permet d'empêcher un ensemble compromis de clés d'accès IAM d'accéder aux composants de votre compte AWS. La rotation des informations d'identification IAM est également un élément important des meilleures pratiques de sécurité en matière d'IAM.
Ce modèle vous permet de faire pivoter automatiquement les clés d'accès IAM à l'aide de CloudFormation modèles AWS, qui sont fournis dans le référentiel de rotation des clés GitHub IAM
Le modèle prend en charge le déploiement dans un ou plusieurs comptes. Si vous utilisez AWS Organizations, cette solution identifie tous les comptes AWS IDs au sein de votre organisation et évolue dynamiquement à mesure que des comptes sont supprimés ou que de nouveaux comptes sont créés. La fonction AWS Lambda centralisée utilise un rôle IAM supposé pour exécuter localement les fonctions de rotation sur plusieurs comptes que vous sélectionnez.
Les nouvelles clés d'accès IAM sont générées lorsque les clés d'accès existantes datent de 90 jours.
Les nouvelles clés d'accès sont stockées en tant que secret dans AWS Secrets Manager. Une politique basée sur les ressources permet uniquement au principal IAM spécifié d'accéder au secret et de le récupérer. Si vous choisissez de stocker les clés dans le compte de gestion, les clés de tous les comptes sont stockées dans le compte de gestion.
L'adresse e-mail attribuée au propriétaire du compte AWS où les nouvelles clés d'accès ont été créées reçoit une notification.
Les clés d'accès précédentes sont désactivées à 100 jours, puis supprimées à 110 jours.
Une notification par e-mail centralisée est envoyée au propriétaire du compte AWS.
Les fonctions Lambda et Amazon exécutent CloudWatch automatiquement ces actions. Vous pouvez ensuite récupérer la nouvelle paire de clés d'accès et la remplacer dans votre code ou dans vos applications. Les périodes de rotation, de suppression et de désactivation peuvent être personnalisées.
Conditions préalables et limitations
Au moins un compte AWS actif.
AWS Organizations, configuré et configuré (voir le didacticiel).
Autorisations pour interroger AWS Organizations depuis votre compte de gestion. Pour plus d'informations, consultez AWS Organizations and service-linked roles dans la documentation AWS Organizations.
Un responsable IAM autorisé à lancer le CloudFormation modèle AWS et les ressources associées. Pour plus d'informations, consultez la section Accorder des autorisations autogérées dans la CloudFormation documentation AWS.
Un compartiment Amazon Simple Storage Service (Amazon S3) existant pour déployer les ressources.
Amazon Simple Email Service (Amazon SES) a quitté le sandbox. Pour plus d'informations, consultez la section Sortir du sandbox d'Amazon SES dans la documentation Amazon SES.
Si vous choisissez d'exécuter Lambda dans un cloud privé virtuel (VPC), les ressources suivantes doivent être créées avant d'exécuter le modèle principal : CloudFormation
Un VPC.
Un sous-réseau
Points de terminaison pour Amazon SES, AWS Systems Manager, AWS Security Token Service (AWS STS), Amazon S3 et AWS Secrets Manager. (Vous pouvez exécuter le modèle de point de terminaison fourni dans le référentiel de rotation des clés GitHub IAM
pour créer ces points de terminaison.)
L'utilisateur et le mot de passe SMTP (Simple Mail Transfer Protocol) stockés dans les paramètres d'AWS Systems Manager (paramètres SSM). Les paramètres doivent correspondre aux paramètres du CloudFormation modèle principal.
Architecture
Pile technologique
Amazon CloudWatch
Amazon EventBridge
IAM
AWS Lambda
AWS Organizations
Amazon S3
Architecture
Les diagrammes suivants montrent les composants et les flux de travail de ce modèle. La solution prend en charge deux scénarios de stockage des informations d'identification : dans un compte membre et dans le compte de gestion.
Option 1 : Stocker les informations d'identification dans un compte membre

Option 2 : Stocker les informations d'identification dans le compte de gestion

Les diagrammes montrent le flux de travail suivant :
Un EventBridge événement lance une fonction
account_inventory
Lambda toutes les 24 heures.Cette fonction Lambda interroge AWS Organizations pour obtenir la liste de tous les comptes IDs, noms de comptes et e-mails relatifs aux comptes AWS.
La fonction
account_inventory
Lambda lance une fonctionaccess_key_auto_rotation
Lambda pour chaque ID de compte AWS et lui transmet les métadonnées pour un traitement supplémentaire.La fonction
access_key_auto_rotation
Lambda utilise un rôle IAM supposé pour accéder à l'ID de compte AWS. Le script Lambda exécute un audit de tous les utilisateurs et de leurs clés d'accès IAM dans le compte.Si l'âge de la clé d'accès IAM n'a pas dépassé le seuil des meilleures pratiques, la fonction Lambda n'entreprend aucune autre action.
Si l'âge de la clé d'accès IAM dépasse le seuil des meilleures pratiques, la fonction
access_key_auto_rotation
Lambda détermine l'action de rotation à effectuer.Lorsqu'une action est requise, la fonction
access_key_auto_rotation
Lambda crée et met à jour un secret dans AWS Secrets Manager si une nouvelle clé est générée. Une politique basée sur les ressources est également créée pour autoriser uniquement le principal IAM spécifié à accéder au secret et à le récupérer. Dans le cas de l'option 1, les informations d'identification sont stockées dans Secrets Manager du compte correspondant. Dans le cas de l'option 2 (si l'StoreSecretsInCentralAccount
indicateur est défini sur True), les informations d'identification sont stockées dans Secrets Manager du compte de gestion.Une fonction
notifier
Lambda est lancée pour informer le propriétaire du compte de l'activité de rotation. Cette fonction reçoit l'ID du compte AWS, le nom du compte, l'adresse e-mail du compte et les actions de rotation effectuées.La fonction
notifier
Lambda interroge le compartiment S3 de déploiement pour un modèle d'e-mail et le met à jour dynamiquement avec les métadonnées d'activité pertinentes. L'e-mail est ensuite envoyé à l'adresse e-mail du propriétaire du compte.
Remarques :
Cette solution prend en charge la résilience dans plusieurs zones de disponibilité. Cependant, il ne prend pas en charge la résilience dans plusieurs régions AWS. Pour bénéficier d'une assistance dans plusieurs régions, vous pouvez déployer la solution dans la deuxième région et désactiver la EventBridge règle de rotation des clés. Vous pouvez ensuite activer la règle lorsque vous souhaitez exécuter la solution dans la deuxième région.
Vous pouvez exécuter cette solution en mode audit. En mode audit, les clés d'accès IAM ne sont pas modifiées, mais un e-mail est envoyé pour informer les utilisateurs. Pour exécuter la solution en mode audit, définissez l'
DryRunFlag
indicateur sur True lorsque vous exécutez le modèle de rotation des clés ou dans la variable d'environnement de la fonctionaccess_key_auto_rotation
Lambda.
Automatisation et mise à l'échelle
Les CloudFormation modèles qui automatisent cette solution sont fournis dans le référentiel de rotation des clés GitHub IAMASA-iam-key-auto-rotation-iam-assumed-roles.yaml
CloudFormation modèle sur plusieurs comptes au lieu de déployer la solution individuellement sur chaque compte membre.
Outils
Services AWS
Amazon vous CloudWatch aide à surveiller les indicateurs de vos ressources AWS et des applications que vous exécutez sur AWS en temps réel.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
AWS Lambda 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 Organizations est un service de gestion de comptes qui vous aide à consolider plusieurs comptes AWS au sein d'une organisation que vous créez et gérez de manière centralisée.
AWS Secrets Manager 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 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.
Amazon Simple Email Service (Amazon SES) vous permet d'envoyer et de recevoir des e-mails en utilisant vos propres adresses e-mail et domaines.
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.
Amazon Virtual Private Cloud (Amazon VPC) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS.
Les points de terminaison Amazon VPC fournissent une interface permettant de se connecter aux services fournis par AWS PrivateLink, y compris de nombreux services AWS. Pour chaque sous-réseau que vous spécifiez à partir de votre VPC, une interface réseau de point de terminaison est créée dans le sous-réseau et une adresse IP privée est attribuée à partir de la plage d'adresses du sous-réseau.
Code
Les CloudFormation modèles AWS, les scripts Python et la documentation du runbook requis sont disponibles dans le référentiel de rotation des clés GitHub IAM
Modèle | Déployer dans | Remarques |
| Compte de déploiement | Il s'agit du modèle principal de la solution. |
| Comptes à un ou plusieurs membres pour lesquels vous souhaitez alterner les informations d'identification | Vous pouvez utiliser des ensembles de CloudFormation piles pour déployer ce modèle sur plusieurs comptes. |
| Compte central/de gestion | Utilisez ce modèle pour tenir un inventaire des comptes dans AWS Organizations. |
| Compte de déploiement | Utilisez ce modèle pour automatiser la création de points de terminaison uniquement si vous souhaitez exécuter les fonctions Lambda dans un VPC (définissez |
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Choisissez votre compartiment S3 de déploiement. | Connectez-vous à l'AWS Management Console pour votre compte, ouvrez la console Amazon S3 | Architecte du cloud |
Pour cloner le référentiel. | Clonez le référentiel de rotation des clés GitHub IAM | Architecte du cloud |
Téléchargez les fichiers dans le compartiment S3. | Téléchargez les fichiers clonés dans votre compartiment S3. Utilisez la structure de dossiers par défaut suivante pour copier et coller tous les fichiers et répertoires clonés : NoteVous pouvez personnaliser cette structure de dossiers dans les CloudFormation modèles. | Architecte du cloud |
Modifiez le modèle d'e-mail. | Modifiez le modèle d' | Architecte du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Lancez le CloudFormation modèle pour la rotation des clés. |
| Architecte du cloud |
Lancez le CloudFormation modèle pour les rôles assumés. |
| Architecte du cloud |
Lancez le CloudFormation modèle d'inventaire des comptes. |
| Architecte du cloud |
Lancez le CloudFormation modèle pour les points de terminaison VPC. | Cette tâche est facultative.
| Architecte du cloud |
Ressources connexes
Bonnes pratiques de sécurité dans l'IAM (documentation IAM)
Organisations AWS et rôles liés aux services (documentation AWS Organizations)
Sélection d'un modèle de pile (CloudFormation documentation)
Utilisation d'AWS CloudFormation StackSets (CloudFormation documentation)