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 pivoter automatiquement les clés IAM d'accès des utilisateurs à grande échelle avec AWS Organizations and AWS Secrets Manager
Créé par Tracy Hickey (AWS), Gaurav Verma (AWS), Laura Seletos (), Michael Davie (AWS) et Arvind Patel () AWS AWS
Récapitulatif
ImportantIl est AWSrecommandé d'utiliser des rôles AWS Identity and Access Management (IAM) plutôt que des IAM utilisateurs 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 de longue durée AWSAPI. 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 (AmazonEC2) ou de IAMRoles 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 API informations d'identification modifiées. |
Les clés d'accès sont des informations d'identification à long terme pour un IAM utilisateur. La rotation régulière de vos IAM informations d'identification permet d'empêcher un ensemble de clés d'IAMaccès compromis d'accéder aux composants de votre AWS compte. La rotation IAM des informations d'identification est également un élément important des meilleures pratiques de sécurité dans IAM.
Ce modèle vous permet de faire pivoter automatiquement les clés d'IAMaccès à l'aide de AWS CloudFormation modèles fournis dans le référentiel de rotation des GitHub IAM clés
Le modèle prend en charge le déploiement dans un ou plusieurs comptes. Si vous utilisez AWS Organizations, cette solution identifie tous les AWS comptes de votre IDs 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 IAM rôle assumé pour exécuter localement les fonctions de rotation sur plusieurs comptes que vous sélectionnez.
Les nouvelles clés IAM d'accès 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 IAMprincipal 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 AWS compte sur lequel 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 centralisée par e-mail est envoyée au propriétaire du AWS compte.
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 AWS compte actif.
AWSOrganisations, configurées et configurées (voir didacticiel).
Autorisations permettant d'interroger AWS des Organisations depuis votre compte de gestion. Pour plus d'informations, consultez la section AWSOrganizations and service-linked roles dans la documentation AWS Organizations.
IAMPrincipal autorisé à lancer le AWS CloudFormation modèle et les ressources associées. Pour plus d'informations, consultez la section Accorder des autorisations autogérées dans la AWS CloudFormation documentation.
Un compartiment Amazon Simple Storage Service (Amazon S3) existant pour déployer les ressources.
Amazon Simple Email Service (AmazonSES) est sorti du sandbox. Pour plus d'informations, consultez la section Moving out of the Amazon SES sandbox dans la SES documentation Amazon.
Si vous choisissez d'exécuter Lambda dans un cloud privé virtuel (VPC), les ressources suivantes, qui doivent être créées avant d'exécuter le modèle principal CloudFormation :
Une VPC.
Un sous-réseau
Points de terminaison pour AmazonSES, AWS Systems Manager, AWS Security Token Service (AWSSTS), 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 GitHub IAM clés
pour créer ces points de terminaison.)
L'utilisateur et le mot de passe du Simple Mail Transfer Protocol (SMTP) sont stockés dans les paramètres (SSMparamètres) de AWS Systems Manager. 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 les AWS Organisations pour obtenir une liste de tous les AWS comptesIDs, noms de comptes et e-mails relatifs aux comptes.
La fonction
account_inventory
Lambda lance une fonctionaccess_key_auto_rotation
Lambda pour chaque ID de AWS compte et lui transmet les métadonnées pour un traitement supplémentaire.La fonction
access_key_auto_rotation
Lambda utilise un IAM rôle supposé pour accéder à l'ID du AWS compte. Le script Lambda exécute un audit auprès de tous les utilisateurs et de leurs clés IAM d'accès dans le compte.Si l'âge de la clé d'IAMaccès 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'IAMaccès 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 IAM principal 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'identifiant du AWS compte, 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 AWS régions. 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 IAM d'accès 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 GitHub IAM clésASA-iam-key-auto-rotation-iam-assumed-roles.yaml
CloudFormation modèle dans 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 AWS ressources et des applications que vous utilisez AWS en temps réel.
AWSIdentity 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.
AWSLambda est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner 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.
AWSOrganizations est un service de gestion de comptes qui vous aide à consolider plusieurs AWS comptes au sein d'une organisation que vous créez et gérez de manière centralisée.
AWSSecrets Manager vous permet de remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un API appel à 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 (AmazonSES) vous aide à envoyer et à recevoir des e-mails en utilisant vos propres adresses e-mail et domaines.
Amazon Simple Notification Service (AmazonSNS) 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 (AmazonVPC) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d'AWS.
VPCLes points de terminaison Amazon fournissent une interface permettant de se connecter à des services alimentés par AWS PrivateLink, notamment de nombreux AWS services. Pour chaque sous-réseau que vous spécifiez à partir de votreVPC, 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 AWS CloudFormation modèles, les scripts Python et la documentation du runbook requis sont disponibles dans le référentiel de rotation des GitHub IAM clés
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 VPC un (définissez |
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Choisissez votre compartiment S3 de déploiement. | Connectez-vous à la console AWS de gestion de votre compte, ouvrez la console Amazon S3 | Architecte du cloud |
Pour cloner le référentiel. | Clonez le référentiel de rotation des GitHub IAM clés | 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 VPC points de terminaison. | Cette tâche est facultative.
| Architecte du cloud |
Ressources connexes
Bonnes pratiques de sécurité dans IAM (IAMdocumentation)
AWSOrganisations et rôles liés aux services (documentation des AWS organisations)
Sélection d'un modèle de pile (CloudFormation documentation)
Travailler avec AWS CloudFormation StackSets (CloudFormation documentation)