Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Gestisci AWS Organizations le policy come codice utilizzando AWS CodePipeline Amazon Bedrock
Creato da Andre Cavalcante (AWS) e Mariana Pessoa de Queiroz (AWS)
Riepilogo
Puoi utilizzare le politiche di autorizzazione per configurare e gestire centralmente AWS Organizations l'accesso ai principali e alle risorse nei tuoi account membro. Le politiche di controllo dei servizi (SCPs) definiscono le autorizzazioni massime disponibili per i ruoli e gli utenti AWS Identity and Access Management (IAM) dell'organizzazione. Le politiche di controllo delle risorse (RCPs) definiscono le autorizzazioni massime disponibili per le risorse dell'organizzazione.
Questo modello consente di gestire SCPs e utilizzare l'infrastruttura RCPs come codice (IaC) da implementare attraverso una pipeline di integrazione e distribuzione continue (CI/CD). Utilizzando AWS CloudFormation o Hashicorp Terraform per gestire queste politiche, è possibile ridurre l'onere associato alla creazione e al mantenimento di più politiche di autorizzazione.
Questo modello include le seguenti funzionalità:
È possibile creare, eliminare e aggiornare le politiche di autorizzazione utilizzando i file manifest (
scp-management.json
andrcp-management.json
).Si lavora con i guardrail anziché con le politiche. Definisci i tuoi guardrail e i loro obiettivi nei file manifest.
La pipeline, che utilizza AWS CodeBuild e AWS CodePipeline, unisce e ottimizza i guardrail nei file manifest. Per ogni istruzione nel file manifest, la pipeline combina i guardrail in un unico SCP o RCP e quindi lo applica ai target definiti.
AWS Organizations applica le politiche ai tuoi obiettivi. Un obiettivo può essere un' Account AWS unità organizzativa (OU), un ambiente (che è un gruppo di account o OUs definito nel
environments.json
file) o un gruppo di account che condividono un AWS tag.Amazon Bedrock legge i log della pipeline e riepiloga tutte le modifiche alle policy.
La pipeline richiede un'approvazione manuale. L'approvatore può consultare il riepilogo esecutivo preparato da Amazon Bedrock, che lo aiuta a comprendere le modifiche.
Prerequisiti e limitazioni
Prerequisiti
Molteplici Account AWS che vengono gestiti come organizzazione in. AWS Organizations Per ulteriori informazioni, vedere Creazione di un'organizzazione.
Le funzionalità SCP e RCP sono abilitate in. AWS Organizations Per ulteriori informazioni, vedere Abilitazione di un tipo di policy.
Se non stai distribuendo questa soluzione tramite una pipeline Terraform, il file di stato Terraform deve essere archiviato in
un bucket Amazon Simple Storage Service (Amazon S3) nella pipeline di gestione delle policy in Account AWS cui stai distribuendo.
Limitazioni
Non è possibile utilizzare questo pattern per gestire SCPs o RCPs che sono stati creati al di fuori di questa pipeline CI/CD. Tuttavia, è possibile ricreare le politiche esistenti tramite la pipeline. Per ulteriori informazioni, consulta Migrazione delle politiche esistenti nella pipeline nella sezione Informazioni aggiuntive di questo modello.
Il numero di account e OUs le politiche di ciascun account sono soggetti alle quote e ai limiti di servizio per. AWS Organizations
Questo modello non può essere utilizzato per configurare le politiche di gestione in AWS Organizations, ad esempio, le politiche di backup, le politiche dei tag, le politiche delle applicazioni di chat o le politiche dichiarative.
Architettura
Il diagramma seguente mostra il flusso di lavoro della pipeline di gestione delle policy e le risorse associate.

Il diagramma mostra il flusso di lavoro seguente:
Un utente esegue il commit delle modifiche ai file
scp-management.json
orcp-management.json
manifest nel ramo principale del repository remoto.La modifica al
main
ramo avvia la pipeline. AWS CodePipelineCodePipeline avvia il progetto.
Validate-Plan
CodeBuild Questo progetto utilizza uno script Python nel repository remoto per convalidare le politiche e i file manifest delle politiche. Questo CodeBuild progetto fa quanto segue:Verifica che i file manifest SCP e RCP contengano un'istruzione univoca IDs ()
Sid
.Utilizza gli script
scp-policy-processor/main.py
ercp-policy-processor/main.py
Python per concatenare i guardrail nella cartella guardrails in un'unica politica RCP o SCP. Combina guardrail che hanno lo stesso valore, e.Resource
Action
Condition
Viene utilizzato AWS Identity and Access Management Access Analyzer per convalidare la politica finale ottimizzata. Se ci sono dei risultati, la pipeline si arresta.
Crea
scps.json
ercps.json
archivia, che Terraform utilizza per creare risorse.Esegue il
terraform plan
comando, che crea un piano di esecuzione Terraform.
(Facoltativo) Il
Validate-Plan
CodeBuild progetto utilizza lobedrock-prompt/prompt.py
script per inviare un prompt ad Amazon Bedrock. Il prompt viene definito nel file.bedrock-prompt/prompt.txt
Amazon Bedrock utilizza Anthropic Claude Sonnet 3.5 per generare un riepilogo delle modifiche proposte analizzando i log Terraform e Python.CodePipeline utilizza un argomento Amazon Simple Notification Service (Amazon SNS) per notificare agli approvatori che le modifiche devono essere riviste. Se Amazon Bedrock ha generato un riepilogo delle modifiche, la notifica include questo riepilogo.
Un approvatore della politica approva l'azione in. CodePipeline Se Amazon Bedrock ha generato un riepilogo delle modifiche, l'approvatore può esaminarlo CodePipeline prima dell'approvazione.
CodePipeline avvia il progetto.
Apply
CodeBuild Questo progetto utilizza Terraform per applicare le modifiche RCP e SCP in. AWS Organizations
Il modello IaC associato a questa architettura implementa anche le seguenti risorse che supportano la pipeline di gestione delle politiche:
Un bucket Amazon S3 per l'archiviazione di CodePipeline artefatti e script, come e
scp-policy-processor/main.py
bedrock-prompt/prompt.py
Una chiave AWS Key Management Service (AWS KMS) che crittografa le risorse create da questa soluzione
Strumenti
Servizi AWS
Amazon Bedrock è un servizio di intelligenza artificiale completamente gestito che rende disponibili molti modelli di base ad alte prestazioni da utilizzare tramite un'API unificata.
AWS CodeBuildè un servizio di compilazione completamente gestito che ti aiuta a compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per la distribuzione.
AWS CodePipelineti aiuta a modellare e configurare rapidamente le diverse fasi di una versione del software e ad automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
AWS Organizationsè un servizio di gestione degli account che consente di consolidare più account Account AWS in un'organizzazione creata e gestita centralmente.
AWS SDK per Python (Boto3)
è un kit di sviluppo software che ti aiuta a integrare la tua applicazione, libreria o script Python con. Servizi AWS Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
Altri strumenti
HashiCorp Terraform
è uno strumento IaC che ti aiuta a utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud.
Deposito di codici
Il codice per questo pattern è disponibile nel organizations-policy-pipelinesample-repository
cartella:
Nella
environments
cartella,environments.json
contiene un elenco di ambienti. Gli ambienti sono un gruppo di obiettivi e possono contenere Account AWS IDs o unità organizzative (OUs).Nella
rcp-management
cartella:La
guardrails
cartella contiene i parapetti individuali per il tuo RCPsLa
policies
cartella contiene l'individuo RCPsIl file
rcp-management.json
manifest consente di gestire i guardrail RCP RCPs, full e gli obiettivi associati.
Nella cartella:
scp-management
La
guardrails
cartella contiene i parapetti individuali per il tuo SCPsLa
policies
cartella contiene l'individuo SCPsIl file
scp-management.json
manifest consente di gestire i guardrail SCP SCPs, completi e gli obiettivi associati.
La
utils
cartella contiene script che possono aiutarvi a migrare quelli attuali SCPs e RCPs a gestirli attraverso la pipeline. Per ulteriori informazioni, vedere la sezione Informazioni aggiuntive di questo modello.
Best practice
Prima di configurare la pipeline, ti consigliamo di verificare di non aver raggiunto i limiti delle tue AWS Organizations quote.
Ti consigliamo di utilizzare l'account di AWS Organizations gestione solo per le attività che devono essere eseguite in quell'account. Per ulteriori informazioni, consulta Best practice per l'account di gestione.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Creare un repository . | Crea un repository da cui il tuo team addetto alle operazioni di sicurezza gestirà le politiche. Utilizza uno dei fornitori di repository di terze parti che AWS CodeConnections supportano. | DevOps ingegnere |
Delegare l'amministrazione delle politiche. | Delega l'amministrazione delle AWS Organizations politiche all'account membro in cui stai distribuendo la pipeline. Per istruzioni, consulta Creare una politica di delega basata sulle risorse con. AWS Organizations Per una politica di esempio, vedi Esempio di politica di delega basata sulle risorse nella sezione Informazioni aggiuntive di questo modello. | Amministratore AWS |
(Facoltativo) Abilita il modello di base. | Se desideri generare riepiloghi delle modifiche alle policy, abilita l'accesso al modello di base Anthropic Claude 3.5 Sonnet in Amazon Bedrock nel luogo in Account AWS cui stai distribuendo la pipeline. Per istruzioni, consulta Aggiungere o rimuovere l'accesso ai modelli Amazon Bedrock Foundation. | Informazioni generali su AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Clonare il repository. | Inserisci il seguente comando da cui clonare il organizations-policy-pipeline
| DevOps ingegnere |
Definisci il tuo metodo di implementazione. |
| DevOps ingegnere |
Implementa la pipeline. |
| DevOps ingegnere, Terraform |
Connect il repository remoto. | Nel passaggio precedente, Terraform ha creato una CodeConnections connessione al repository di terze parti. Nella console AWS Developer Tools | AWS DevOps |
Iscriviti all'argomento Amazon SNS. | Terraform ha creato un argomento Amazon SNS. Sottoscrivi un endpoint all'argomento e conferma l'iscrizione in modo che gli approvatori ricevano notifiche sulle azioni di approvazione in sospeso nella pipeline. Per istruzioni, consulta l'argomento Creazione di un abbonamento a un Amazon SNS. | Informazioni generali su AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Popola il repository remoto. | Dal repository clonato, copia il contenuto della | DevOps ingegnere |
Definisci i tuoi ambienti. |
| DevOps ingegnere |
Definisci i tuoi guardrail. |
| DevOps ingegnere |
Definisci le tue politiche. |
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura i file manifest. |
| DevOps ingegnere |
Avvia la pipeline. | Conferma e invia le modifiche al ramo del repository remoto che hai definito nel | DevOps ingegnere |
Approva le modifiche. | Una volta completato il
| AWS generale, responsabile dell'approvazione delle politiche |
Convalida la distribuzione. |
| Informazioni generali su AWS |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Errori manifesti nei file nella | Se sono presenti errori nei file or, nell'output della pipeline viene visualizzato un messaggio «Errori della pipeline nella fase di convalida e pianificazione per i file manifest».
|
I risultati di IAM Access Analyzer nella | Un messaggio «Risultati di IAM Access Analyzer durante la fase di convalida e pianificazione» viene visualizzato nell'output della pipeline in caso di errori nel guardrail o nelle definizioni delle policy. Questo modello utilizza IAM Access Analyzer per convalidare la policy finale. Esegui questa operazione:
|
Risorse correlate
Riferimento agli elementi della policy JSON (documentazione IAM)
Politiche di controllo delle risorse (AWS Organizations documentazione)
Politiche di controllo dei servizi (AWS Organizations documentazione)
Aggiungere o rimuovere l'accesso ai modelli Amazon Bedrock Foundation (documentazione Amazon Bedrock)
Approva o rifiuta un'azione di approvazione in (documentazione) CodePipeline CodePipeline
Informazioni aggiuntive
Esempio di politica di delega basata sulle risorse
Di seguito è riportato un esempio di politica di delega basata sulle risorse per. AWS Organizations Consente all'account di amministrazione delegato di gestire SCPs e per l'organizzazione. RCPs Nel seguente esempio di policy, sostituiscilo <MEMBER_ACCOUNT_ID>
con l'ID dell'account su cui stai distribuendo la pipeline di gestione delle policy.
{ "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": "*" } ] }
Migrazione delle politiche esistenti nella pipeline
Se ne hai esistenti SCPs o RCPs desideri migrare e gestire tramite questa pipeline, puoi usare gli script Python sample-repository/utils
nella cartella del repository del codice. Questi script includono:
check-if-scp-exists-in-env.py
— Questo script verifica se una politica specificata si applica a qualsiasi destinazione in un ambiente specifico, definito nelenvironments.json
file. Immettete il seguente comando per eseguire questo script:python3 check-if-scp-exists-in-env.py \ --policy-type <POLICY_TYPE> \ --policy-name <POLICY_NAME> \ --env-id <ENV_ID>
Sostituisci quanto segue in questo comando:
<POLICY_TYPE>
èscp
orcp
<POLICY_NAME>
è il nome dell'SCP o dell'RCP<ENV_ID>
è l'ID dell'ambiente definito nel fileenvironments.json
create-environments.py
— Questo script crea un file environments.json basato sull'ambiente corrente SCPs e RCPs su quello esistente. Sono escluse le politiche implementate tramite. AWS Control Tower Immettere il seguente comando per eseguire questo script, dove<POLICY_TYPE>
èscp
o:rcp
python create-environments.py --policy-type <POLICY_TYPE>
verify-policies-capacity.py
— Questo script controlla ogni ambiente definito per determinare la quantità di capacità residua per ogni quota AWS Organizations relativa alle politiche. L'utente definisce gli ambienti in cui archiviare il file inenvironments.json
. Immettete il seguente comando per eseguire questo script, dove<POLICY_TYPE>
èscp
orcp
:python verify-policies-capacity.py --policy-type <POLICY_TYPE>