Gérez les ensembles d'autorisations AWS IAM Identity Center sous forme de code en utilisant AWS CodePipeline - Recommandations AWS

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 AWS IAM Identity Center sous forme de code en utilisant AWS CodePipeline

Créée par Andre Cavalcante (AWS) et Claison Amorim () AWS

Référentiel de code : aws-iam-identity-center -pipeline

Environnement : Production

Technologies : sécurité, identité, conformité ; DevOps

AWSservices : AWS CodeBuild ; AWS CodeCommit AWS CodePipeline ; Centre AWS IAM d'identité

Récapitulatif

AWSIAMIdentity Center (successeur de AWS Single Sign-On) vous permet de gérer de manière centralisée l'accès par authentification unique (SSO) à tous vos AWS comptes et applications. Vous pouvez créer et gérer les identités des utilisateurs dans IAM Identity Center, ou vous pouvez connecter une source d'identité existante, telle qu'un domaine Microsoft Active Directory ou un fournisseur d'identité externe (IdP). IAMIdentity Center fournit une expérience d'administration unifiée permettant de définir, de personnaliser et d'attribuer un accès précis à votre AWS environnement à l'aide d'ensembles d'autorisations. Les ensembles d'autorisations s'appliquent aux utilisateurs et aux groupes fédérés de votre banque AWS IAM d'identités Identity Center ou de votre IdP externe.

Ce modèle vous permet de gérer les ensembles d'autorisations IAM Identity Center sous forme de code dans votre environnement multi-comptes géré en tant qu'organisation dans AWS Organizations. Avec ce modèle, vous pouvez obtenir les résultats suivants :

  • Création, suppression et mise à jour d'ensembles d'autorisations

  • Créez, mettez à jour ou supprimez des attributions d'ensembles d'autorisations pour AWS les comptes cibles, les unités organisationnelles (OUs) ou la racine de votre organisation.

Pour gérer les autorisations et les attributions IAM d'Identity Center sous forme de code, cette solution déploie un pipeline d'intégration continue et de livraison continue (CI/CD) qui utilise AWS CodeCommit, AWS CodeBuild et. AWS CodePipeline Vous gérez les ensembles d'autorisations et les attributions dans les JSON modèles que vous stockez dans le CodeCommit référentiel. Lorsque EventBridge les règles Amazon détectent une modification du référentiel ou détectent des modifications apportées aux comptes dans l'unité d'organisation cible, une fonction AWS Lambda démarre. La fonction Lambda lance le pipeline CI/CD qui met à jour les ensembles d'autorisations et les attributions dans Identity Center. IAM

Conditions préalables et limitations

Prérequis

  • Un environnement multi-comptes géré en tant qu'organisation dans AWS Organizations. Pour plus d'informations, consultez la section Création d'une organisation.

  • IAMIdentity Center, activé et configuré avec une source d'identité. Pour plus d'informations, consultez Getting Started dans la documentation IAM d'Identity Center.

  • Un compte de membre enregistré en tant qu'administrateur délégué pour IAM Identity Center. Pour obtenir des instructions, consultez la section Enregistrer un compte membre dans la documentation IAM d'Identity Center.

  • Autorisations permettant de déployer AWS CloudFormation des piles dans le compte d'administrateur délégué IAM d'Identity Center et dans le compte de gestion de l'organisation. Pour plus d'informations, consultez la section Contrôle de l'accès dans la CloudFormation documentation.

  • Un bucket Amazon Simple Storage Service (Amazon S3) dans l'administrateur délégué d'Identity Center pour télécharger le code de l'artefact. Pour obtenir des instructions, consultez la section Création d'un bucket.

  • L'identifiant du compte de gestion de l'organisation. Pour obtenir des instructions, consultez la section Trouver l'identifiant de votre AWS compte.

Limites

  • Ce modèle ne peut pas être utilisé pour gérer ou attribuer des ensembles d'autorisations pour les environnements à compte unique ou pour les comptes qui ne sont pas gérés en tant qu'organisation dans AWS Organizations.

  • Les noms des ensembles d'autorisations, les IDs attributions et les principaux types IAM d'Identity Center IDs ne peuvent pas être modifiés après le déploiement.

  • Ce modèle vous permet de créer et de gérer des autorisations personnalisées. Vous ne pouvez pas utiliser ce modèle pour gérer ou attribuer des autorisations prédéfinies.

  • Ce modèle ne peut pas être utilisé pour gérer un ensemble d'autorisations pour le compte de gestion de l'organisation.

Architecture

Pile technologique

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • AWSCentre d'identité

  • AWSLambda

  • AWSOrganisations

Architecture cible

Utilisation du pipeline CI/CD et du AWS CodeCommit dépôt pour gérer les ensembles d'autorisations dans AWS IAM Identity Center.

Le schéma suivant illustre le flux de travail suivant :

  1. Un utilisateur effectue l'une des modifications suivantes :

    1. Valide une ou plusieurs modifications apportées au CodeCommit référentiel

    2. Modifie les comptes de l'unité organisationnelle (UO) dans AWS Organizations

  2. Si l'utilisateur a apporté une modification au CodeCommit référentiel, la CodeChange EventBridge règle détecte la modification et lance une fonction Lambda dans le compte d'administrateur délégué IAM d'Identity Center. La règle ne réagit pas aux modifications apportées à certains fichiers du référentiel, tels que le README.md fichier.

    Si l'utilisateur a modifié les comptes de l'unité organisationnelle, la MoveAccount EventBridge règle détecte le changement et lance une fonction Lambda dans le compte de gestion de l'organisation.

  3. La fonction Lambda initiée démarre le pipeline CI/CD dans. CodePipeline

  4. CodePipeline lance le CodebuildTemplateValidation CodeBuild projet.

  5. Le CodebuildTemplateValidation CodeBuild projet utilise un script Python dans le CodeCommit référentiel pour valider les modèles d'ensembles d'autorisations. CodeBuild valide les éléments suivants :

    • Les noms des ensembles d'autorisations sont uniques.

    • Les instructions d'affectation IDs (Sid) sont uniques.

    • Définitions de politique dans le CustomPolicy paramètre et valides. (Cette validation utilise AWS Identity and Access Management Access Analyzer.)

    • Les Amazon Resource Names (ARNs) des politiques gérées sont valides.

  6. Le CodebuildPermissionSet CodeBuild projet utilise Python (Boto3) AWS SDK pour supprimer, créer ou mettre à jour les ensembles d'autorisations dans IAM Identity Center. Seuls les ensembles d'autorisations comportant le SSOPipeline:true tag sont concernés. Tous les ensembles d'autorisations gérés via ce pipeline possèdent cette balise.

  7. Le CodebuildAssignments CodeBuild projet utilise Terraform pour supprimer, créer ou mettre à jour les attributions dans IAM Identity Center. Les fichiers d'état du backend Terraform sont stockés dans un compartiment S3 du même compte.

  8. CodeBuild joue un lookup IAM rôle dans le compte de gestion de l'organisation. Il appelle les organisations et identitystore APIs afin de répertorier les ressources nécessaires pour accorder ou révoquer des autorisations.

  9. CodeBuild met à jour les ensembles d'autorisations et les attributions dans IAM Identity Center.

Automatisation et évolutivité

Étant donné que tous les nouveaux comptes d'un environnement multi-comptes sont déplacés vers une unité organisationnelle spécifique dans AWS Organizations, cette solution s'exécute automatiquement et accorde les ensembles d'autorisations requis à tous les comptes que vous spécifiez dans les modèles d'attribution. Aucune automatisation ou action de dimensionnement supplémentaire n'est nécessaire.

Dans les grands environnements, le nombre de API demandes adressées à IAM Identity Center peut ralentir le fonctionnement de cette solution. Terraform et Boto3 gèrent automatiquement la régulation afin de minimiser toute dégradation des performances.

Outils

AWSservices

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, quels que soient les AWS comptes et les régions.

  • 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 CodeCommitest un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git, sans avoir à gérer votre propre système de contrôle de source.

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

  • 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, les fonctions AWS Lambda, les points de terminaison HTTP d'invocation utilisant des API destinations ou les bus d'événements dans d'autres comptes. AWS

  • AWSIAMIdentity Center vous permet de gérer de manière centralisée l'accès par authentification unique (SSO) à tous vos AWS comptes et applications cloud.

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

  • AWSSDKfor Python (Boto3) est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à des AWS services.

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

Référentiel de code

Le code de ce modèle est disponible dans le référentiel aws-iam-identity-center-pipeline. Le dossier des modèles du référentiel contient des exemples de modèles pour les ensembles d'autorisations et les attributions. Il inclut également des AWS CloudFormation modèles pour déployer le pipeline CI/CD et les AWS ressources dans les comptes cibles.

Bonnes pratiques

  • Avant de commencer à modifier le jeu d'autorisations et les modèles d'attribution, nous vous recommandons de planifier des ensembles d'autorisations pour votre organisation. Déterminez quelles devraient être les autorisations, à quels comptes ou OUs ensemble d'autorisations devraient s'appliquer, et quels principaux du centre IAM d'identité (utilisateurs ou groupes) devraient être concernés par l'ensemble d'autorisations. Les noms des ensembles d'autorisations, les associations IDs et les types principaux du centre d'IAMidentité IDs ne peuvent pas être modifiés après le déploiement.

  • 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 IAM documentation.

Épopées

TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Dans un shell bash, entrez la commande suivante. Cela clone le référentiel aws-iam-identity-center-pipeline à partir de. GitHub

git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git
DevOps ingénieur

Définissez les ensembles d'autorisations.

  1. Dans le référentiel cloné, accédez au templates/permissionsets dossier, puis ouvrez l'un des modèles disponibles.

  2. Dans le Name paramètre, entrez le nom de l'ensemble d'autorisations. Cette valeur doit être unique et ne peut pas être modifiée après le déploiement.

  3. Dans le Description paramètre, décrivez brièvement l'ensemble d'autorisations, par exemple son cas d'utilisation.

  4. Dans le SessionDuration paramètre, spécifiez la durée pendant laquelle un utilisateur peut être connecté à un AWS compte. Utilisez le format de durée ISO -8601 (Wikipedia), par exemple PT4H pour 4 heures. Si aucune valeur n'est définie, la valeur par défaut dans IAM Identity Center est de 1 heure.

  5. Personnalisez les politiques de l'ensemble d'autorisations. Tous les paramètres suivants sont facultatifs et peuvent être modifiés après le déploiement. Vous devez utiliser au moins l'un des paramètres afin de définir les politiques de l'ensemble d'autorisations :

    • Dans le ManagedPolicies paramètre, entrez toutes ARNs les politiques AWS gérées que vous souhaitez attribuer.

    • Dans le CustomerManagedPolicies paramètre, entrez le nom de toutes les politiques gérées par le client que vous souhaitez attribuer. N'utilisez pas leARN.

    • Dans le PermissionBoundary paramètre, procédez comme suit pour attribuer une limite d'autorisation :

      • Si vous utilisez une politique AWS gérée comme limite d'autorisationPolicyType, entrezAWS, entrez et entrez ARN la politique. Policy

      • Si vous utilisez une politique gérée par le client comme limite d'autorisation PolicyTypeCustomer, entrezPolicy, entrez le nom de la politique. N'utilisez pas leARN.

    • Dans le CustomPolicy paramètre, définissez les politiques personnalisées et JSON formatées que vous souhaitez attribuer. Pour plus d'informations sur la structure des JSON politiques, voir Vue d'ensemble des JSON politiques.

  6. Enregistrez et fermez le modèle d'ensemble d'autorisations. Nous vous recommandons d'enregistrer le fichier sous un nom correspondant au nom de l'ensemble d'autorisations.

  7. Répétez ce processus pour créer autant d'ensembles d'autorisations que nécessaire pour votre organisation et supprimez les exemples de modèles qui ne sont pas nécessaires.

DevOps ingénieur

Définissez les missions.

  1. Dans le référentiel cloné, accédez au templates/assignments dossier, puis iam-identitycenter-assigments.json ouvrez-le. Ce fichier décrit comment vous souhaitez attribuer les ensembles d'autorisations aux AWS comptes ouOUs.

  2. Dans le SID paramètre, entrez un identifiant pour l'affectation. Cette valeur doit être unique et ne peut pas être modifiée après le déploiement.

  3. Dans le Target paramètre, définissez les comptes ou les organisations auxquels vous souhaitez appliquer l'ensemble d'autorisations. Les valeurs valides sont le compteIDs, l'unité d'organisationIDs, le nom de l'unité d'organisation ouroot. rootattribue l'ensemble d'autorisations à tous les comptes membres de l'organisation, à l'exception du compte de gestion. Entrez les valeurs entre guillemets et séparez les valeurs multiples par des virgules. Pour obtenir des instructions sur la procédure de rechercheIDs, voir Afficher les détails d'un compte ou Afficher les détails d'une unité d'organisation.

  4. Dans le PrincipalType paramètre, entrez le type de principal du centre IAM d'identité qui sera affecté par l'ensemble d'autorisations. Les valeurs valides sont USER ou GROUP. Cette valeur ne peut pas être modifiée après le déploiement.

  5. Dans le PrincipalID paramètre, entrez le nom de l'utilisateur ou du groupe dans le magasin IAM d'identités Identity Center qui sera affecté par l'ensemble d'autorisations. Cette valeur ne peut pas être modifiée après le déploiement.

  6. Dans le PermissionSetName paramètre, entrez le nom de l'ensemble d'autorisations que vous souhaitez attribuer.

  7. Répétez les étapes 2 à 6 pour créer autant d'assignations que nécessaire dans ce fichier. Il existe généralement une attribution pour chaque ensemble d'autorisations. Supprimez tous les exemples de devoirs qui ne sont pas obligatoires.

  8. Enregistrez et fermez le fichier iam-identitycenter-assigments.json.

DevOps ingénieur
TâcheDescriptionCompétences requises

Téléchargez les fichiers dans un compartiment S3.

  1. Compressez le dépôt cloné dans un fichier .zip.

  2. Connectez-vous au compte d'administrateur délégué IAM d'Identity Center.

  3. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  4. Dans le panneau de navigation de gauche, choisissez Compartiments.

  5. Choisissez le bucket que vous souhaitez utiliser pour déployer cette solution.

  6. Téléchargez le fichier .zip dans le compartiment S3 cible. Pour obtenir des instructions, consultez Chargement d'objets.

DevOps ingénieur

Déployez des ressources dans le compte d'administrateur délégué d'IAMIdentity Center.

  1. Dans le compte d'administrateur délégué IAM d'Identity Center, ouvrez la CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation/.

  2. Déployez le iam-identitycenter-pipeline.yaml modèle. Donnez un nom clair et descriptif à la pile et mettez à jour les paramètres comme indiqué. Pour obtenir des instructions, consultez la section Création d'une pile dans la CloudFormation documentation.

DevOps ingénieur

Déployez les ressources dans le compte de gestion de AWS l'organisation.

  1. Connectez-vous au compte de gestion de l'organisation.

  2. Ouvrez la CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation/.

  3. Dans la barre de navigation, choisissez le nom de la AWS région actuellement affichée. Choisissez ensuite la us-east-1 région. Cette région est requise pour que la MoveAccount EventBridge règle puisse détecter les AWS CloudTrail événements associés aux changements d'organisation.

  4. Déployez le iam-identitycenter-organization modèle. Donnez un nom clair et descriptif à la pile et mettez à jour les paramètres comme indiqué. Pour obtenir des instructions, consultez la section Création d'une pile dans la CloudFormation documentation.

DevOps ingénieur
TâcheDescriptionCompétences requises

Mettez à jour les ensembles d'autorisations et les attributions.

Lorsque la EventBridge règle MoveAccount Amazon détecte des modifications apportées aux comptes de l'organisation, le pipeline CI/CD démarre automatiquement et met à jour les ensembles d'autorisations. Par exemple, si vous ajoutez un compte à une unité d'organisation spécifiée dans le JSON fichier d'assignations, le pipeline CI/CD appliquera l'ensemble d'autorisations au nouveau compte.

Si vous souhaitez modifier les ensembles d'autorisations et les attributions déployés, mettez à jour les JSON fichiers, puis validez-les dans le CodeCommit référentiel du compte d'administrateur délégué IAM d'Identity Center. Pour obtenir des instructions, consultez la section Créer un commit dans la CodeCommit documentation.

Notez les points suivants lorsque vous utilisez le pipeline CI/CD pour gérer des ensembles d'autorisations et des associations précédemment déployés :

  • Si vous modifiez le nom d'un ensemble d'autorisations, le pipeline CI/CD supprime le jeu d'autorisations d'origine et en crée un nouveau.

  • Ce pipeline gère uniquement les ensembles d'autorisations dotés de cette SSOPipeline:true balise.

  • Vous pouvez avoir plusieurs ensembles d'autorisations et modèles d'attribution dans le même dossier du référentiel.

  • Si vous supprimez un modèle, le pipeline supprime l'attribution ou l'ensemble d'autorisations.

  • Si vous supprimez un JSON bloc d'attribution entier, le pipeline supprime l'attribution d'IAMIdentity Center.

  • Vous ne pouvez pas supprimer un ensemble d'autorisations attribué à un AWS compte. Tout d'abord, vous devez annuler l'attribution de l'ensemble d'autorisations.

DevOps ingénieur

Résolution des problèmes

ProblèmeSolution

Erreurs d'accès refusé

Vérifiez que vous disposez des autorisations requises pour déployer les CloudFormation modèles et les ressources qui y sont définies. Pour plus d'informations, consultez la section Contrôle de l'accès dans la CloudFormation documentation.

Erreurs de pipeline lors de la phase de validation

Cette erreur apparaît en cas d'erreur dans l'ensemble d'autorisations ou les modèles d'attribution.

  1. Dans CodeBuild, consultez les détails de la version.

  2. Dans le journal de génération, recherchez l'erreur de validation qui fournit plus d'informations sur la cause de l'échec de la génération.

  3. Mettez à jour l'ensemble d'autorisations ou les modèles d'attribution, puis validez-les dans le référentiel.

  4. Le pipeline CI/CD redémarre le projet. CodeBuild Surveillez l'état pour confirmer que l'erreur de validation est résolue.

Ressources connexes