As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Gerencie AWS Organizations políticas como código usando o AWS CodePipeline Amazon Bedrock
Criado por Andre Cavalcante (AWS) e Mariana Pessoa de Queiroz (AWS)
Resumo
Você pode usar políticas de autorização AWS Organizations para configurar e gerenciar centralmente o acesso de diretores e recursos em suas contas de membros. As políticas de controle de serviço (SCPs) definem o máximo de permissões disponíveis para as funções e usuários AWS Identity and Access Management (IAM) em sua organização. As políticas de controle de recursos (RCPs) definem o máximo de permissões disponíveis para recursos em sua organização.
Esse padrão ajuda você a gerenciar SCPs e criar uma infraestrutura RCPs como código (IaC) que você implanta por meio de um pipeline de integração contínua e implantação contínua (CI/CD). Ao usar o AWS CloudFormation Hashicorp Terraform para gerenciar essas políticas, você pode reduzir a carga associada à criação e manutenção de várias políticas de autorização.
Esse padrão inclui os seguintes recursos:
Você cria, exclui e atualiza as políticas de autorização usando arquivos de manifesto (
scp-management.json
ercp-management.json
).Você trabalha com grades de proteção em vez de políticas. Você define suas grades de proteção e seus alvos nos arquivos de manifesto.
O pipeline, que usa AWS CodeBuild e AWS CodePipeline, mescla e otimiza as grades de proteção nos arquivos de manifesto. Para cada instrução no arquivo de manifesto, o pipeline combina as grades de proteção em um único SCP ou RCP e as aplica aos destinos definidos.
AWS Organizations aplica as políticas às suas metas. Um destino pode ser uma Conta da AWS unidade organizacional (OU), um ambiente (que é um grupo de contas ou OUs que você define no
environments.json
arquivo) ou um grupo de contas que compartilham uma AWS tag.O Amazon Bedrock lê os registros do pipeline e resume todas as mudanças na política.
O pipeline requer uma aprovação manual. O aprovador pode revisar o resumo executivo que o Amazon Bedrock preparou, o que o ajuda a entender as mudanças.
Pré-requisitos e limitações
Pré-requisitos
Vários Contas da AWS que são gerenciados como uma organização em AWS Organizations. Para obter mais informações, consulte Criar uma organização.
Os recursos SCP e RCP estão habilitados em. AWS Organizations Para obter mais informações, consulte Habilitando um tipo de política.
Se você não estiver implantando essa solução por meio de um pipeline do Terraform, o arquivo de estado do Terraform deverá ser armazenado
em um bucket do Amazon Simple Storage Service (Amazon S3) no local em que você está implantando Conta da AWS o pipeline de gerenciamento de políticas.
Limitações
Você não pode usar esse padrão para gerenciar SCPs ou RCPs que foram criados fora desse pipeline de CI/CD. No entanto, você pode recriar políticas existentes por meio do pipeline. Para obter mais informações, consulte Migração de políticas existentes para o pipeline na seção Informações adicionais desse padrão.
O número de contas e políticas em cada conta estão sujeitos às cotas e aos limites de serviço de. OUs AWS Organizations
Esse padrão não pode ser usado para configurar políticas de gerenciamento AWS Organizations, como políticas de backup, políticas de tags, políticas de aplicativos de bate-papo ou políticas declarativas.
Arquitetura
O diagrama a seguir mostra o fluxo de trabalho do pipeline de gerenciamento de políticas e seus recursos associados.

O diagrama mostra o seguinte fluxo de trabalho:
Um usuário confirma as alterações nos arquivos
scp-management.json
ou nos arquivos dercp-management.json
manifesto na ramificação principal do repositório remoto.A mudança na
main
ramificação inicia a entrada do pipeline. AWS CodePipelineCodePipeline inicia o
Validate-Plan
CodeBuild projeto. Este projeto usa um script Python no repositório remoto para validar as políticas e os arquivos de manifesto da política. Este CodeBuild projeto faz o seguinte:Verifica se os arquivos de manifesto SCP e RCP contêm uma instrução exclusiva IDs ()
Sid
.Usa os scripts
scp-policy-processor/main.py
ercp-policy-processor/main.py
Python para concatenar guardrails na pasta guardrails em uma única política RCP ou SCP. Ele combina grades de proteção que têm o mesmoResource
Action
, e.Condition
Usa AWS Identity and Access Management Access Analyzer para validar a política final otimizada. Se houver alguma descoberta, o gasoduto é interrompido.
Cria
scps.json
ercps.json
arquiva, que o Terraform usa para criar recursos.Executa o
terraform plan
comando, que cria um plano de execução do Terraform.
(Opcional) O
Validate-Plan
CodeBuild projeto usa obedrock-prompt/prompt.py
script para enviar uma solicitação para o Amazon Bedrock. Você define o prompt nobedrock-prompt/prompt.txt
arquivo. O Amazon Bedrock usa o Anthropic Claude Sonnet 3.5 para gerar um resumo das mudanças propostas analisando os registros do Terraform e do Python.CodePipeline usa um tópico do Amazon Simple Notification Service (Amazon SNS) para notificar os aprovadores de que as alterações devem ser revisadas. Se o Amazon Bedrock gerou um resumo da alteração, a notificação incluirá esse resumo.
Um aprovador da política aprova a ação em. CodePipeline Se o Amazon Bedrock gerou um resumo da alteração, o aprovador poderá revisar o resumo CodePipeline antes da aprovação.
CodePipeline inicia o
Apply
CodeBuild projeto. Este projeto usa o Terraform para aplicar as alterações de RCP e SCP em. AWS Organizations
O modelo de IaC associado a essa arquitetura também implanta os seguintes recursos que dão suporte ao pipeline de gerenciamento de políticas:
Um bucket do Amazon S3 para armazenar CodePipeline artefatos e scripts, como e
scp-policy-processor/main.py
bedrock-prompt/prompt.py
Uma chave AWS Key Management Service (AWS KMS) que criptografa os recursos criados por essa solução
Ferramentas
Serviços da AWS
O Amazon Bedrock é um serviço de IA totalmente gerenciado que disponibiliza muitos modelos básicos de alto desempenho para uso por meio de uma API unificada.
AWS CodeBuildé um serviço de compilação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes de unidade e produzir artefatos prontos para implantação.
AWS CodePipelineajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar as alterações de software continuamente.
AWS Organizationsé um serviço de gerenciamento de contas que ajuda você a consolidar várias Contas da AWS em uma organização que você cria e gerencia centralmente.
AWS SDK para Python (Boto3)
é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python com o. Serviços da AWS O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
Outras ferramentas
HashiCorp O Terraform
é uma ferramenta de IaC que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem.
Repositório de código
O código desse padrão está disponível no organizations-policy-pipelinesample-repository
pasta:
Na
environments
pasta,environments.json
contém uma lista de ambientes. Os ambientes são um grupo de alvos e podem conter Conta da AWS IDs nossas unidades organizacionais (OUs).Na
rcp-management
pasta:A
guardrails
pasta contém as grades de proteção individuais para seu RCPsA
policies
pasta contém o indivíduo RCPsO arquivo de
rcp-management.json
manifesto ajuda você a gerenciar grades de proteção completas RCPs do RCP e seus alvos associados.
Na
scp-management
pasta:A
guardrails
pasta contém as grades de proteção individuais para seu SCPsA
policies
pasta contém o indivíduo SCPsO arquivo de
scp-management.json
manifesto ajuda você a gerenciar as grades de proteção completas SCPs do SCP e seus alvos associados.
A
utils
pasta contém scripts que podem ajudar você a migrar seus arquivos atuais SCPs RCPs para que você possa gerenciá-los por meio do pipeline. Para obter mais informações, consulte a seção Informações adicionais desse padrão.
Práticas recomendadas
Antes de configurar o pipeline, recomendamos que você verifique se não atingiu os limites de suas AWS Organizations cotas.
Recomendamos que você use a conta AWS Organizations de gerenciamento somente para tarefas que devem ser executadas nessa conta. Para obter mais informações, consulte Práticas recomendadas para a conta de gerenciamento.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Criar um repositório. | Crie um repositório a partir do qual sua equipe de operações de segurança gerenciará as políticas. Use um dos provedores de repositórios terceirizados que oferecem Conexões de código da AWS suporte. | DevOps engenheiro |
Delegar a administração de políticas. | Delegue a administração das AWS Organizations políticas à conta do membro em que você está implantando o pipeline. Para obter instruções, consulte Criar uma política de delegação baseada em recursos com. AWS Organizations Para ver um exemplo de política, consulte Exemplo de política de delegação baseada em recursos na seção Informações adicionais desse padrão. | Administrador da AWS |
(Opcional) Ative o modelo básico. | Se você quiser gerar resumos das mudanças na política, habilite o acesso ao modelo de fundação Anthropic Claude 3.5 Sonnet no Amazon Bedrock, Conta da AWS onde você está implantando o pipeline. Para obter instruções, consulte Adicionar ou remover o acesso aos modelos da Amazon Bedrock Foundation. | AWS geral |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clonar o repositório. | Digite o comando a seguir para clonar o organizations-policy-pipeline
| DevOps engenheiro |
Defina seu método de implantação. |
| DevOps engenheiro |
Implante o pipeline. |
| DevOps engenheiro, Terraform |
Conecte o repositório remoto. | Na etapa anterior, o Terraform criou uma CodeConnections conexão com o repositório de terceiros. No console AWS Developer Tools | AWS DevOps |
Assine o tópico do Amazon SNS. | O Terraform criou um tópico do Amazon SNS. Inscreva um endpoint no tópico e confirme a assinatura para que os aprovadores recebam notificações sobre ações de aprovação pendentes no pipeline. Para obter instruções, consulte Criação de uma assinatura para um tópico do Amazon SNS. | AWS geral |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Preencha o repositório remoto. | Do repositório clonado, copie o conteúdo da | DevOps engenheiro |
Defina seus ambientes. |
| DevOps engenheiro |
Defina suas grades de proteção. |
| DevOps engenheiro |
Defina suas políticas. |
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configure os arquivos de manifesto. |
| DevOps engenheiro |
Iniciar o pipeline. | Confirme e envie as alterações para a ramificação do repositório remoto que você definiu no | DevOps engenheiro |
Aprove as mudanças. | Quando o
| AWS geral, aprovador de políticas |
Valide a implantação. |
| AWS geral |
Solução de problemas
Problema | Solução |
---|---|
Erros de arquivo manifesto na | Uma mensagem “Erros de pipeline na fase de validação e planejamento para arquivos de manifesto” aparece na saída do pipeline se houver algum erro nos
|
Descobertas do IAM Access Analyzer na | Uma mensagem “Descobertas no IAM Access Analyzer durante a fase de validação e planejamento” aparece na saída do pipeline se houver algum erro na proteção ou nas definições da política. Esse padrão usa o IAM Access Analyzer para validar a política final. Faça o seguinte:
|
Recursos relacionados
Referência do elemento de política JSON (documentação do IAM)
Políticas de controle de recursos (AWS Organizations documentação)
Políticas de controle de serviços (AWS Organizations documentação)
Adicionar ou remover o acesso aos modelos da Amazon Bedrock Foundation (documentação do Amazon Bedrock)
Aprovar ou rejeitar uma ação de aprovação em CodePipeline (CodePipeline documentação)
Mais informações
Exemplo de política de delegação baseada em recursos
Veja a seguir um exemplo de política de delegação baseada em recursos para. AWS Organizations Ele permite que a conta de administrador delegada SCPs gerencie e RCPs para a organização. No exemplo de política a seguir, <MEMBER_ACCOUNT_ID>
substitua pelo ID da conta em que você está implantando o pipeline de gerenciamento de políticas.
{ "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": "*" } ] }
Migração de políticas existentes para o pipeline
Se você já tiver SCPs ou RCPs quiser migrar e gerenciar por meio desse pipeline, poderá usar os scripts do Python na pasta sample-repository/utils
do repositório de código. Esses scripts incluem:
check-if-scp-exists-in-env.py
— Esse script verifica se uma política especificada se aplica a algum destino em um ambiente específico, que você define noenvironments.json
arquivo. Digite o seguinte comando para executar esse script:python3 check-if-scp-exists-in-env.py \ --policy-type <POLICY_TYPE> \ --policy-name <POLICY_NAME> \ --env-id <ENV_ID>
Substitua o seguinte neste comando:
<POLICY_TYPE>
éscp
ourcp
<POLICY_NAME>
é o nome do SCP ou RCP<ENV_ID>
é a ID do ambiente que você definiu noenvironments.json
arquivo
create-environments.py
— Esse script cria um arquivo environments.json com base no atual SCPs e RCPs no seu ambiente. Isso exclui as políticas implantadas por meio de. AWS Control Tower Digite o comando a seguir para executar esse script, onde<POLICY_TYPE>
estáscp
ourcp
:python create-environments.py --policy-type <POLICY_TYPE>
verify-policies-capacity.py
— Esse script verifica cada ambiente que você define para determinar quanta capacidade resta para cada cota AWS Organizations relacionada à política. Você define os ambientes a serem verificados noenvironments.json
arquivo de entrada. Digite o comando a seguir para executar esse script, onde<POLICY_TYPE>
estáscp
ourcp
:python verify-policies-capacity.py --policy-type <POLICY_TYPE>