

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 AWS Organizations les politiques sous forme de code en utilisant AWS CodePipeline Amazon Bedrock
<a name="manage-organizations-policies-as-code"></a>

*André Cavalcante et Mariana Pessoa de Queiroz, Amazon Web Services*

## Résumé
<a name="manage-organizations-policies-as-code-summary"></a>

Vous pouvez utiliser *les politiques d'autorisation* AWS Organizations pour configurer et gérer de manière centralisée l'accès des principaux et des ressources dans vos comptes de membres. Les [politiques de contrôle des services (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) définissent les autorisations maximales disponibles pour les rôles Gestion des identités et des accès AWS (IAM) et les utilisateurs de votre organisation. Les [politiques de contrôle des ressources (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) définissent le maximum d'autorisations disponibles pour les ressources de votre organisation.

Ce modèle vous permet de gérer SCPs et d'assimiler l'infrastructure RCPs sous forme de code (IaC) que vous déployez par le biais d'un pipeline d'intégration et de déploiement continus (CI/CD). En utilisant AWS CloudFormation ou Hashicorp Terraform pour gérer ces politiques, vous pouvez réduire la charge associée à la création et à la maintenance de plusieurs politiques d'autorisation.

Ce modèle inclut les fonctionnalités suivantes :
+ Vous créez, supprimez et mettez à jour les politiques d'autorisation à l'aide de *fichiers manifestes* (`scp-management.json`et`rcp-management.json`).
+ Vous travaillez avec des garde-corps plutôt que des politiques. Vous définissez vos barrières de sécurité et leurs cibles dans les fichiers manifestes.
+ Le pipeline, qui utilise AWS CodeBuild AWS CodePipeline, fusionne et optimise les garde-fous contenus dans les fichiers manifestes. Pour chaque instruction du fichier manifeste, le pipeline combine les barrières de sécurité en un seul SCP ou RCP, puis l'applique aux cibles définies.
+ AWS Organizations applique les politiques à vos cibles. Une *cible* peut être une Compte AWS unité organisationnelle (UO), un environnement (qui est un groupe de comptes ou OUs que vous définissez dans le `environments.json` fichier) ou un groupe de comptes partageant un [AWS tag](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html).
+ Amazon Bedrock lit les journaux du pipeline et résume tous les changements de politique.
+ Le pipeline nécessite une approbation manuelle. L'approbateur peut consulter le résumé élaboré par Amazon Bedrock, qui l'aide à comprendre les modifications.

## Conditions préalables et limitations
<a name="manage-organizations-policies-as-code-prereqs"></a>

**Conditions préalables**
+ Plusieurs Comptes AWS entités gérées en tant qu'organisation dans AWS Organizations. Pour plus d'informations, consultez la section [Création d'une organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html).
+ Les fonctionnalités SCP et RCP sont activées dans. AWS Organizations Pour plus d'informations, consultez la section [Activation d'un type de politique](https://docs.aws.amazon.com/organizations/latest/userguide/enable-policy-type.html).
+ [La version 1.9.8 ou ultérieure de Terraform est installée.](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ Si vous ne déployez pas cette solution via un pipeline Terraform, le fichier d'état Terraform doit être stocké [dans](https://developer.hashicorp.com/terraform/language/backend/s3) un bucket Amazon Simple Storage Service (Amazon S3) dans Compte AWS lequel vous déployez le pipeline de gestion des politiques.
+ [La version 3.13.3 ou ultérieure de Python est installée.](https://www.python.org/downloads/)

**Limites**
+ Vous ne pouvez pas utiliser ce modèle pour gérer SCPs ou RCPs qui a été créé en dehors de ce CI/CD pipeline. Toutefois, vous pouvez recréer les politiques existantes par le biais du pipeline. Pour plus d'informations, consultez la section *Migration des politiques existantes vers le pipeline* dans la section [Informations supplémentaires](#manage-organizations-policies-as-code-additional) de ce modèle.
+ Le nombre de comptes et OUs les politiques de chaque compte sont soumis aux [quotas et aux limites de service](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_reference_limits.html) pour AWS Organizations.
+ Ce modèle ne peut pas être utilisé pour configurer [des politiques de gestion](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_management_policies.html) AWS Organizations, telles que des politiques de sauvegarde, des politiques de balises, des politiques d'applications de chat ou des politiques déclaratives.

## Architecture
<a name="manage-organizations-policies-as-code-architecture"></a>

Le schéma suivant montre le flux de travail du pipeline de gestion des politiques et de ses ressources associées.

![Publication SCPs et RCPs via un pipeline de gestion des politiques.](https://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/372a1ace-5b2e-4f93-9f88-b5b0519ded48/images/a2cceb99-2b93-48e0-b072-bc61a572201f.png)


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

1. Un utilisateur valide les modifications apportées aux fichiers `scp-management.json` ou aux fichiers `rcp-management.json` manifestes dans la branche principale du référentiel distant.

1. La modification de la `main` branche initie le pipeline. AWS CodePipeline

1. CodePipeline lance le `Validate-Plan` CodeBuild projet. Ce projet utilise un script Python dans le référentiel distant pour valider les politiques et les fichiers manifestes de politiques. Ce CodeBuild projet effectue les opérations suivantes :

   1. Vérifie que les fichiers manifestes SCP et RCP contiennent une instruction unique IDs ()`Sid`.

   1. Utilise les scripts `scp-policy-processor/main.py` et `rcp-policy-processor/main.py` Python pour concaténer les glissières de sécurité du dossier des barres de sécurité en une seule politique RCP ou SCP. Il combine des rambardes qui ont les mêmes caractéristiques`Resource`,`Action`, et. `Condition`

   1. Utilisée AWS Identity and Access Management Access Analyzer pour valider la politique finale optimisée. S'il y a des découvertes, le pipeline s'arrête.

   1. Crée `scps.json` des `rcps.json` fichiers, que Terraform utilise pour créer des ressources.

   1. Exécute la `terraform plan` commande, qui crée un plan d'exécution Terraform.

1. (Facultatif) Le `Validate-Plan` CodeBuild projet utilise le `bedrock-prompt/prompt.py` script pour envoyer une invite à Amazon Bedrock. Vous définissez l'invite dans le `bedrock-prompt/prompt.txt` fichier. Amazon Bedrock utilise Anthropic Claude Sonnet 3.5 pour générer un résumé des modifications proposées en analysant les logs Terraform et Python.

1. CodePipeline utilise une rubrique Amazon Simple Notification Service (Amazon SNS) afin d'informer les approbateurs que les modifications doivent être révisées. Si Amazon Bedrock a généré un résumé des modifications, la notification inclut ce résumé.

1. Un approbateur de politique approuve l'action dans. CodePipeline Si Amazon Bedrock a généré un résumé des modifications, l'approbateur peut consulter le résumé CodePipeline avant de l'approuver.

1. CodePipeline lance le `Apply` CodeBuild projet. Ce projet utilise Terraform pour appliquer les modifications du RCP et du SCP dans. AWS Organizations

Le modèle IaC associé à cette architecture déploie également les ressources suivantes qui prennent en charge le pipeline de gestion des politiques :
+ Un compartiment Amazon S3 pour stocker les CodePipeline artefacts et les scripts, tels que `scp-policy-processor/main.py` et `bedrock-prompt/prompt.py`
+ Une clé AWS Key Management Service (AWS KMS) qui chiffre les ressources créées par cette solution

## Outils
<a name="manage-organizations-policies-as-code-tools"></a>

**Services AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service d'intelligence artificielle entièrement géré qui met à disposition de nombreux modèles de base très performants via une API unifiée.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)est 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 CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)vous 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.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)est un service de gestion de comptes qui vous aide à Comptes AWS en regrouper plusieurs au sein d'une organisation que vous créez et gérez de manière centralisée.
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à Services AWS.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 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.

**Autres outils**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil IaC qui vous aide à utiliser du code pour provisionner et gérer l'infrastructure et les ressources du cloud.

**Référentiel de code**

Le code de ce modèle est disponible dans le [organizations-policy-pipeline](https://github.com/aws-samples/organizations-policy-pipeline) GitHub référentiel. Les fichiers clés contenus dans le `sample-repository` dossier sont les suivants :
+ Le `environments` dossier `environments.json` contient une liste d'environnements. Les *environnements* sont un groupe de cibles et ils peuvent contenir Compte AWS IDs des unités organisationnelles (OUs).
+ Dans le `rcp-management` dossier :
  + Le `guardrails` dossier contient les rambardes individuelles pour votre RCPs
  + Le `policies` dossier contient la personne RCPs
  + Le fichier `rcp-management.json` manifeste vous permet de gérer les barrières de sécurité RCP complètes et leurs RCPs cibles associées.
+ Dans le `scp-management` dossier :
  + Le `guardrails` dossier contient les rambardes individuelles pour votre SCPs
  + Le `policies` dossier contient la personne SCPs
  + Le fichier `scp-management.json` manifeste vous permet de gérer les barrières SCP complètes et leurs SCPs cibles associées.
+ Le `utils` dossier contient des scripts qui peuvent vous aider à migrer vos fichiers actuels SCPs et vous RCPs permettre de les gérer tout au long du pipeline. Pour plus d'informations, consultez la section [Informations supplémentaires](#manage-organizations-policies-as-code-additional) de ce modèle.

## Bonnes pratiques
<a name="manage-organizations-policies-as-code-best-practices"></a>
+ Avant de configurer le pipeline, nous vous recommandons de vérifier que vous n'avez pas atteint les limites de vos AWS Organizations [quotas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_reference_limits.html).
+ Nous vous recommandons d'utiliser le compte AWS Organizations de gestion uniquement pour les tâches qui doivent être effectuées dans ce compte. Pour plus d'informations, consultez la section [Meilleures pratiques pour le compte de gestion](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html#bp_mgmt-acct_use-mgmt).

## Épopées
<a name="manage-organizations-policies-as-code-epics"></a>

### Configurer le compte cible
<a name="set-up-the-target-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créer un référentiel . | Créez un référentiel à partir duquel votre équipe des opérations de sécurité gérera les politiques. Utilisez l'un des fournisseurs de référentiels tiers pris en AWS CodeConnections [charge](https://docs.aws.amazon.com/dtconsole/latest/userguide/supported-versions-connections.html). | DevOps ingénieur | 
| Déléguer l'administration des politiques. | Déléguez l'administration des AWS Organizations politiques au compte membre sur lequel vous déployez le pipeline. Pour obtenir des instructions, voir [Créer une politique de délégation basée sur les ressources](https://docs.aws.amazon.com/organizations/latest/userguide/orgs-policy-delegate.html) avec. AWS Organizations Pour un exemple de politique, voir *Exemple de stratégie de délégation basée sur les ressources* dans la section [Informations supplémentaires](#manage-organizations-policies-as-code-additional) de ce modèle. | Administrateur AWS | 
| (Facultatif) Activez le modèle de base. | Si vous souhaitez générer des résumés des modifications de politique, autorisez l'accès au modèle de base Anthropic Claude 3.5 Sonnet dans Amazon Bedrock, Compte AWS là où vous déployez le pipeline. Pour obtenir des instructions, consultez [Ajouter ou supprimer l'accès aux modèles de fondation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html). | AWS général | 

### Déployer les ressources pour le pipeline
<a name="deploy-the-resources-for-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Entrez la commande suivante pour cloner le [organizations-policy-pipeline ](https://github.com/aws-samples/organizations-policy-pipeline)référentiel à partir de GitHub :<br />`git clone https://github.com/aws-samples/organizations-policy-pipeline.git` | DevOps ingénieur | 
| Définissez votre méthode de déploiement. | 1. Dans le référentiel cloné, ouvrez le `variables.tf` fichier.<br />2. Pour`project_name`, entrez le préfixe que vous souhaitez appliquer aux noms des ressources déployées.<br />3. Pour`provider_type`, entrez le fournisseur du référentiel distant. Des valeurs valides sont fournies dans le fichier.<br />4. Pour`full_repository_name`, entrez le nom du référentiel distant.<br />5. Pour`branch_name`, entrez le nom de la branche Git que vous utiliserez pour déployer les politiques. Un push ou une fusion dans cette branche démarre le pipeline. Il s'agit généralement de la branche principale.<br />6. Pour`terraform_version`, entrez la version de Terraform que vous utilisez.<br />7. Pour`enable_bedrock`, entrez `true` si vous souhaitez qu'Amazon Bedrock récapitule les modifications. Entrez `false` si vous ne souhaitez pas générer de résumé des modifications.<br />8. Pour`tags`, entrez les paires clé-valeur que vous souhaitez attribuer sous forme de balises aux ressources déployées.<br />9. Enregistrez et fermez le fichier `variables.tf`. | DevOps ingénieur | 
| Déployez le pipeline. | 1. Entrez la commande suivante pour créer un plan et passer en revue les modifications :<pre>terraform plan</pre><br />2. Entrez la commande suivante pour appliquer le plan et créer l'infrastructure du pipeline :<pre>terraform apply</pre> | DevOps ingénieur, Terraform | 
| Connectez le référentiel distant. | À l'étape précédente, Terraform a créé une CodeConnections connexion au référentiel tiers. Dans la [console AWS Developer Tools](https://console.aws.amazon.com/codesuite/settings/connections), modifiez le statut de la connexion de `PENDING` à`AVAILABLE`. Pour obtenir des instructions, voir [Mettre à jour une connexion en attente](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html). | AWS DevOps | 
| Abonnez-vous à la rubrique Amazon SNS. | Terraform a créé une rubrique Amazon SNS. Abonnez un point de terminaison au sujet et confirmez l'abonnement afin que les approbateurs reçoivent des notifications concernant les actions d'approbation en attente dans le pipeline. Pour obtenir des instructions, consultez [la section Création d'un abonnement à une rubrique Amazon SNS.](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) | AWS général | 

### Définissez vos garde-fous et vos politiques
<a name="define-your-guardrails-and-policies"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Remplissez le référentiel distant. | Depuis le dépôt cloné, copiez le contenu du `sample-repository` dossier dans votre dépôt distant. Cela inclut les `utils` dossiers `environments` `rcp-management``scp-management`,, et. | DevOps ingénieur | 
| Définissez vos environnements. | 1. Dans le `environments` dossier, ouvrez le `environments.json` fichier. Il s'agit du fichier dans lequel vous définissez la cible Comptes AWS et OUs pour votre RCPs et SCPs.<br />2. Supprimez les exemples d'environnements.<br />3. Ajoutez vos environnements cibles au format suivant :<pre>[<br />    {<br />        "ID": "<environment-name>",<br />        "Target": [<br />            "<ou-name>:<ou-id>",<br />            "<account-name>:<account-id>"<br />        ]<br />    }<br />]</pre><br />Où :`<environment-name>`est le nom que vous attribuez au groupe OUs de comptes AWS. Vous pouvez utiliser ce nom dans le fichier manifeste pour définir l'endroit où vous souhaitez appliquer vos politiques.`<ou-name>`est le nom de l'unité d'organisation cible.`<ou-id>`est l'ID de l'unité d'organisation cible.`<account-name>`est le nom de la cible Compte AWS.`<account-id>`est l'ID de la cible Compte AWS.<br />Pour des exemples, consultez le [référentiel de code source](https://github.com/aws-samples/organizations-policy-pipeline/blob/main/sample-repository/environments/environments.json).<br />4. Enregistrez et fermez le fichier `environments.json`. | DevOps ingénieur | 
| Définissez vos rambardes. | 1. Accédez au `rcp-management/guardrails` dossier de votre référentiel distant. Il s'agit du dossier dans lequel vous définissez les barrières de sécurité pour votre fichier manifeste RCP. Chaque garde-corps doit figurer dans un dossier individuel. Les fichiers Guardrail peuvent contenir une ou plusieurs instructions.Vous pouvez utiliser le même garde-fou dans plusieurs instructions des fichiers manifestes pour SCPs et. RCPs Si vous modifiez le garde-corps, toutes les politiques qui incluent ce garde-corps sont affectées.<br />2. Supprimez tous les exemples de garde-corps copiés depuis le référentiel du code source.<br />3. Créez un nouveau fichier .json et donnez-lui un nom descriptif.<br />4. Ouvrez le fichier .json que vous avez créé.<br />5. Définissez le garde-corps au format suivant :<pre>[<br />    {<br />        "Sid": "<guardrail-name>",<br />        "Effect": "<effect-value>",<br />        "Action": [<br />            "<action-name>"<br />        ],<br />        "Resource": "<resource-arn>",<br />        "Condition": {<br />            "<condition-operator>": {<br />                "<condition-key>": [<br />                    "<condition-value>"<br />                ]<br />            }<br />        }<br />    }<br />]</pre><br />Où :`<guardrail-name>`est un nom unique pour le garde-corps. Ce nom ne peut être utilisé pour aucun autre garde-corps.`<effect-value>`doit être `Allow` ou`Deny`. Pour plus d'informations, consultez la section [Effet](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html).`<action-name>`doit être le nom valide d'une action prise en charge par le service. Pour plus d'informations, consultez la section [Action](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html).`<resource-arn>`est le nom de ressource Amazon (ARN) de la ressource à laquelle s'applique le garde-corps. Vous pouvez également utiliser des caractères génériques, tels que `*` ou`?`. Pour plus d'informations, consultez la section [Ressource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html).`<condition-operator>`est un opérateur de condition valide. Pour plus d'informations, consultez la section [Opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html).`<condition-key>`est une clé de contexte de condition globale valide ou une clé de contexte spécifique à un service. Pour plus d'informations, consultez la section [Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html).`<condition-value>`est la valeur spécifique utilisée dans une condition pour évaluer si un garde-corps s'applique. Pour plus d'informations, consultez la section [Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html).<br />Par exemple, les garde-corps RCP, consultez le référentiel de [code source](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/rcp-management/guardrails).<br />6. Enregistrez et fermez le fichier .json.<br />7. Répétez ces étapes pour créer autant de garde-corps RCP que nécessaire.<br />8. Répétez ces étapes dans le `scp-management/guardrails` dossier pour créer autant de garde-corps que nécessaire pour votre. SCPs Par exemple, les garde-corps SCP, consultez le référentiel du [code source](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/scp-management/guardrails). | DevOps ingénieur | 
| Définissez vos politiques. | 1. Accédez au `rcp-management/policies` dossier de votre référentiel distant. Il s'agit du dossier dans lequel vous définissez les politiques complètes pour votre fichier manifeste RCP. Chaque politique doit être un fichier individuel.Si vous modifiez une politique dans ce dossier, les modifications de stratégie affectent tous les comptes ou tous les comptes OUs auxquels cette politique est appliquée, comme défini dans le fichier manifeste.<br />2. Supprimez tous les exemples de politiques copiés depuis le référentiel de code source.<br />3. Créez un nouveau fichier .json et donnez-lui un nom descriptif.<br />4. Ouvrez le fichier .json que vous avez créé.<br />5. Définissez le RCP. Par exemple RCPs, consultez le [référentiel de code source](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/rcp-management/policies) ou consultez les [exemples de politiques de contrôle des ressources](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps_examples.html) dans la AWS Organizations documentation.<br />6. Enregistrez et fermez le fichier .json.<br />7. Répétez ces étapes pour en créer RCPs autant que nécessaire.<br />8. Répétez ces étapes dans le `scp-management/policies` dossier pour en créer SCPs autant que nécessaire. Par exemple SCPs, consultez le [référentiel de code source](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/scp-management/policies) ou consultez les [exemples de politiques de contrôle des services](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) dans la AWS Organizations documentation. | DevOps ingénieur | 

### Utiliser le fichier manifeste pour gérer les politiques
<a name="use-the-manifest-file-to-manage-the-policies"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les fichiers manifestes. | 1. Dans le `rcp-management` dossier, ouvrez le `rcp-management.json` fichier. Il s'agit du fichier dans lequel vous définissez les garde-fous RCP qui RCPs s'appliquent pleinement à vos environnements cibles. Pour un exemple de ce fichier, consultez le [référentiel de code source](https://github.com/aws-samples/organizations-policy-pipeline/blob/main/sample-repository/rcp-management/rcp-management.json).<br />2. Supprimez l'exemple de déclaration.<br />3. Ajoutez une nouvelle déclaration au format suivant :<pre>[<br />    {<br />        "SID": "<statement-name>",<br />        "Target": {<br />            "Type": "<target-type>",<br />            "ID": "<target-name>"<br />        },<br />        "Guardrails": [<br />            "<guardrail-name>"<br />        ],<br />        "Policy": "<policy-name>",<br />        "Comments": "<comment-text>"<br />    }<br />]</pre><br />Où :`<statement-name>`est un nom unique pour la déclaration.`<target-type>`est le type de cible auquel vous souhaitez appliquer la politique. Les valeurs valides sont `Account`, `OU`, `Environment` ou `Tag`.`<target-name>`est l'identifiant de la cible à laquelle vous souhaitez appliquer la politique. Indiquez l'un des éléments suivants :Pour un Compte AWS, entrez l'identifiant sous la forme`<account-name>:<account-id>`.Pour une unité d'organisation, entrez l'identifiant sous la forme`<OU-name>:<ou-id>`.Pour un environnement, entrez le nom unique que vous avez défini dans le `environments.json` fichier.Pour une balise, entrez la paire clé-valeur sous la forme. `<tag-key>:<tag-value>``<guardrail-name>`est le nom unique du garde-corps RCP que vous avez défini dans le dossier. `rcp-management/guardrails` Vous pouvez ajouter plusieurs rambardes dans cet élément. Vous pouvez laisser ce champ vide si vous ne souhaitez pas installer de garde-corps.`<policy-name>`est le nom unique du RCP que vous avez défini dans le `rcp-management/policies` dossier. Vous ne pouvez ajouter qu'une seule politique dans cet élément. Vous pouvez laisser ce champ vide si vous ne souhaitez pas appliquer de politique.`<comment-text>`est une description que vous pouvez saisir à des fins de documentation. Ce champ n'est pas utilisé pendant le traitement du pipeline. Vous pouvez laisser ce champ vide si vous ne souhaitez pas ajouter de commentaire.<br />4. Répétez ces étapes pour ajouter autant d'instructions que nécessaire à configurer RCPs pour votre organisation.<br />5. Enregistrez et fermez le fichier `rcp-management.json`.<br />6. Dans le `scp-management` dossier, répétez ces étapes dans le `scp-management.json` fichier. Il s'agit du fichier dans lequel vous définissez les garde-corps SCP qui SCPs s'appliquent pleinement à vos environnements cibles. Pour un exemple de ce fichier, consultez le [référentiel de code source](https://github.com/aws-samples/organizations-policy-pipeline/blob/main/sample-repository/scp-management/scp-management.json). | DevOps ingénieur | 
| Démarrez le pipeline. | Validez et envoyez les modifications à la branche du référentiel distant que vous avez définie dans le `variables.tf` fichier. Il s'agit généralement de la `main` branche. Le CI/CD pipeline démarre automatiquement. En cas d'erreur de pipeline, consultez la section [Dépannage](#manage-organizations-policies-as-code-troubleshooting) de ce modèle. | DevOps ingénieur | 
| Approuvez les modifications. | Lorsque le `Validate-Plan` CodeBuild projet est terminé, les approbateurs des politiques reçoivent une notification via la rubrique Amazon SNS que vous avez précédemment configurée. Procédez comme suit :1. Ouvrez le message de notification.<br />2. Le cas échéant, consultez le résumé des modifications apportées aux politiques.<br />3. Suivez les instructions de la section [Approuver ou rejeter une action d'approbation dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-approve-or-reject.html). | AWS général, approbateur de politiques | 
| Validez le déploiement. | 1. Connectez-vous à la [AWS Organizations console](https://console.aws.amazon.com/organizations/v2) avec le compte dont vous êtes l'administrateur délégué AWS Organizations.<br />2. Sur la page **Politiques de contrôle des services**, vérifiez que les politiques SCPs que vous avez créées sont répertoriées.<br />3. Choisissez un SCP géré via le pipeline et confirmez qu'il s'applique aux cibles prévues.<br />4. Sur la page **Politiques de contrôle des ressources**, vérifiez que celles RCPs que vous avez créées sont répertoriées.<br />5. Choisissez un RCP géré via le pipeline et vérifiez qu'il s'applique aux cibles prévues. | AWS général | 

## Résolution des problèmes
<a name="manage-organizations-policies-as-code-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Erreurs de fichiers manifestes dans la `Validate-Plan` phase du pipeline | Un message « Erreurs de pipeline lors de la phase de validation et de planification pour les fichiers manifestes » apparaît dans la sortie du pipeline en cas d'erreur dans les `rcp-management.json` fichiers `scp-management.json` ou. Les erreurs possibles incluent un nom d'environnement incorrect, des champs ou des valeurs dupliqués SIDs ou non valides. Procédez comme suit :1. Suivez les instructions de la section [Afficher les détails de la version dans AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/view-build-details.html).<br />2. Dans le journal de construction, recherchez l'erreur de validation. L'erreur fournit plus d'informations sur la cause de l'échec de la compilation.<br />3. Mettez à jour le fichier .json correspondant.<br />4. Validez et transférez le fichier mis à jour vers le référentiel distant. Le pipeline redémarre.<br />5. Surveillez l'état pour confirmer que l'erreur de validation est résolue. | 
| Conclusions d'IAM Access Analyzer au `Validate-Plan` cours de la phase du pipeline | Un message « Résultats trouvés dans IAM Access Analyzer pendant la phase de validation et de planification » apparaît dans la sortie du pipeline en cas d'erreur dans le garde-fou ou dans les définitions des politiques. Ce modèle utilise IAM Access Analyzer pour valider la politique finale. Procédez comme suit :1. Suivez les instructions de la section [Afficher les détails de la version dans AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/view-build-details.html).<br />2. Dans le journal de compilation, recherchez l'erreur de validation d'IAM Access Analyzer. L'erreur fournit plus d'informations sur la cause de l'échec de la compilation. Pour plus d'informations sur les types de recherche, consultez la [référence de vérification de validation des politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).<br />3. Mettez à jour le fichier .json correspondant au garde-corps ou à la politique.<br />4. Validez et transférez le fichier mis à jour vers le référentiel distant. Le pipeline redémarre.<br />5. Surveillez l'état pour confirmer que l'erreur de validation est résolue. | 

## Ressources connexes
<a name="manage-organizations-policies-as-code-resources"></a>
+ [Référence des éléments de politique JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) (documentation IAM)
+ [Politiques de contrôle des ressources](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (AWS Organizations documentation)
+ [Politiques de contrôle des services](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (AWS Organizations documentation)
+ [Ajouter ou supprimer l'accès aux modèles de fondation Amazon Bedrock (documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html) Amazon Bedrock)
+ [Approuver ou rejeter une action d'approbation dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-approve-or-reject.html) (CodePipeline documentation)

## Informations supplémentaires
<a name="manage-organizations-policies-as-code-additional"></a>

**Exemple de politique de délégation basée sur les ressources**

Voici un exemple de politique de délégation basée sur les ressources pour. AWS Organizations Il permet au compte d'administrateur délégué de gérer SCPs et RCPs pour l'organisation. Dans l'exemple de politique suivant, remplacez-le `<MEMBER_ACCOUNT_ID>` par l'ID du compte sur lequel vous déployez le pipeline de gestion des politiques.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DelegationToAudit",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<MEMBER_ACCOUNT_ID>:root"
      },
      "Action": [
        "organizations:ListTargetsForPolicy",
        "organizations:CreatePolicy",
        "organizations:DeletePolicy",
        "organizations:AttachPolicy",
        "organizations:DetachPolicy",
        "organizations:DisablePolicyType",
        "organizations:EnablePolicyType",
        "organizations:UpdatePolicy",
        "organizations:DescribeEffectivePolicy",
        "organizations:DescribePolicy",
        "organizations:DescribeResourcePolicy"
      ],
      "Resource": "*"
    }
  ]
}
```

**Migration des politiques existantes vers le pipeline**

Si vous en avez SCPs un existant ou RCPs que vous souhaitez migrer et gérer via ce pipeline, vous pouvez utiliser les scripts Python dans le `sample-repository/utils` dossier du référentiel de code. Ces scripts incluent :
+ `check-if-scp-exists-in-env.py`— Ce script vérifie si une politique spécifiée s'applique à des cibles dans un environnement spécifique, que vous définissez dans le `environments.json` fichier. Entrez la commande suivante pour exécuter ce script :

  ```
  python3 check-if-scp-exists-in-env.py \
     --policy-type <POLICY_TYPE> \
     --policy-name <POLICY_NAME> \
     --env-id <ENV_ID>
  ```

  Remplacez le texte suivant dans cette commande :
  + `<POLICY_TYPE>` est `scp` ou `rcp`
  + `<POLICY_NAME>`est le nom du SCP ou du RCP
  + `<ENV_ID>`est l'ID de l'environnement que vous avez défini dans le `environments.json` fichier
+ `create-environments.py`— Ce script crée un fichier environments.json en fonction de l'environnement actuel SCPs et RCPs de votre environnement. Cela exclut les politiques déployées via AWS Control Tower. Entrez la commande suivante pour exécuter ce script, où se `<POLICY_TYPE>` trouve `scp` ou `rcp` :

  ```
  python create-environments.py --policy-type <POLICY_TYPE>
  ```
+ `verify-policies-capacity.py`— Ce script vérifie chaque environnement que vous définissez afin de déterminer la capacité restante pour chaque quota AWS Organizations lié aux politiques. Vous définissez les environnements à archiver dans le `environments.json` fichier. Entrez la commande suivante pour exécuter ce script, où se `<POLICY_TYPE>` trouve `scp` ou `rcp` :

  ```
  python verify-policies-capacity.py --policy-type <POLICY_TYPE>
  ```