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
Créée par André Cavalcante (AWS) et Mariana Pessoa de Queiroz (AWS)
Récapitulatif
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) définissent les autorisations maximales disponibles pour les rôles AWS Identity and Access Management (IAM) et les utilisateurs de votre organisation. Les politiques de contrôle des ressources (RCPs) 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
etrcp-management.json
).Vous travaillez avec des barrières de sécurité 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.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
Prérequis
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.
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.
Si vous ne déployez pas cette solution via un pipeline Terraform, le fichier d'état Terraform doit être stocké dans
un bucket Amazon Simple Storage Service (Amazon S3) dans Compte AWS lequel vous déployez le pipeline de gestion des politiques.
Limites
Vous ne pouvez pas utiliser ce modèle pour gérer SCPs ou RCPs qui a été créé en dehors de ce pipeline CI/CD. 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 de ce modèle.
Le nombre de comptes et OUs les politiques de chaque compte sont soumis aux quotas et aux limites de service pour AWS Organizations.
Ce modèle ne peut pas être utilisé pour configurer des politiques de gestion AWS Organizations, telles que des politiques de sauvegarde, des politiques de balises, des politiques d'applications de chat ou des politiques déclaratives.
Architecture
Le schéma suivant montre le flux de travail du pipeline de gestion des politiques et de ses ressources associées.

Le schéma suivant illustre le flux de travail suivant :
Un utilisateur valide les modifications apportées aux fichiers
scp-management.json
ou aux fichiersrcp-management.json
manifestes dans la branche principale du référentiel distant.La modification de la
main
branche initie le pipeline. AWS CodePipelineCodePipeline 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 :Vérifie que les fichiers manifestes SCP et RCP contiennent une instruction unique IDs ()
Sid
.Utilise les scripts
scp-policy-processor/main.py
etrcp-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êmesResource
Action
, et.Condition
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.
Crée
scps.json
desrcps.json
fichiers, que Terraform utilise pour créer des ressources.Exécute la
terraform plan
commande, qui crée un plan d'exécution Terraform.
(Facultatif) Le
Validate-Plan
CodeBuild projet utilise lebedrock-prompt/prompt.py
script pour envoyer une invite à Amazon Bedrock. Vous définissez l'invite dans lebedrock-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.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é.
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.
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
etbedrock-prompt/prompt.py
Une clé AWS Key Management Service (AWS KMS) qui chiffre les ressources créées par cette solution
Outils
Services AWS
Amazon Bedrock 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 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 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.
AWS Organizationsest 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)
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) 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
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-pipelinesample-repository
dossier sont les suivants :
Le
environments
dossierenvironments.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 RCPsLe
policies
dossier contient la personne RCPsLe 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 SCPsLe
policies
dossier contient la personne SCPsLe 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 de ce modèle.
Bonnes pratiques
Avant de configurer le pipeline, nous vous recommandons de vérifier que vous n'avez pas atteint les limites de vos AWS Organizations quotas.
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.
Épopées
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. | 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 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 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 apportées aux politiques, 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. | AWS général |
Tâche | Description | Compétences requises |
---|---|---|
Pour cloner le référentiel. | Entrez la commande suivante pour cloner le organizations-policy-pipeline
| DevOps ingénieur |
Définissez votre méthode de déploiement. |
| DevOps ingénieur |
Déployez le pipeline. |
| 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 | 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. | AWS général |
Tâche | Description | Compétences requises |
---|---|---|
Remplissez le référentiel distant. | Depuis le dépôt cloné, copiez le contenu du | DevOps ingénieur |
Définissez vos environnements. |
| DevOps ingénieur |
Définissez vos rambardes. |
| DevOps ingénieur |
Définissez vos politiques. |
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Configurez les fichiers manifestes. |
| 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 | DevOps ingénieur |
Approuvez les modifications. | Lorsque le
| AWS général, approbateur de politiques |
Validez le déploiement. |
| AWS général |
Résolution des problèmes
Problème | Solution |
---|---|
Erreurs de fichiers manifestes dans la | 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
|
Conclusions d'IAM Access Analyzer au | 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 :
|
Ressources connexes
Référence des éléments de politique JSON (documentation IAM)
Politiques de contrôle des ressources (AWS Organizations documentation)
Politiques de contrôle des services (AWS Organizations documentation)
Ajouter ou supprimer l'accès aux modèles de fondation Amazon Bedrock (documentation Amazon Bedrock)
Approuver ou rejeter une action d'approbation dans CodePipeline (CodePipeline documentation)
Informations supplémentaires
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 leenvironments.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>
estscp
ourcp
<POLICY_NAME>
est le nom du SCP ou du RCP<ENV_ID>
est l'ID de l'environnement que vous avez défini dans leenvironments.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>
trouvescp
ourcp
: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 leenvironments.json
fichier. Entrez la commande suivante pour exécuter ce script, où se<POLICY_TYPE>
trouvescp
ourcp
:python verify-policies-capacity.py --policy-type <POLICY_TYPE>