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 conjuntos de AWS permissões dinamicamente usando o Terraform
Vinicius Elias e Marcos Vinicius Pinto Jordão, Amazon Web Services
Resumo
Centro de Identidade do AWS IAM aprimora AWS Identity and Access Management (IAM) fornecendo um hub centralizado para gerenciar o acesso com login único e aplicativos em nuvem. Contas da AWS No entanto, o gerenciamento manual dos conjuntos de permissões do Centro de Identidade do IAM pode se tornar cada vez mais complexo e propenso a erros à medida que sua organização cresce. Essa complexidade pode levar a possíveis falhas de segurança e sobrecarga administrativa.
Essa solução permite que você gerencie conjuntos de permissões por meio de infraestrutura como código (IaC) usando um pipeline de integração contínua e entrega contínua (CI/CD) criado com Serviços da AWS nativos. Ele permite uma integração perfeita do mecanismo de atribuição do conjunto de permissões com eventos do AWS Control Tower ciclo de vida ou com um ambiente Account Factory for Terraform (AFT). Essa abordagem fornece configurações de identidade dinâmicas para novas e existentes Contas da AWS.
EventBridge As regras da Amazon monitoram a Conta da AWS criação e as atualizações, o que ajuda suas configurações de identidade a permanecerem sincronizadas com sua estrutura organizacional. Depois de criar ou atualizar contas em AWS Control Tower ou AFT, o pipeline é acionado. Ele avalia um conjunto de arquivos JSON com definições de conjuntos de permissões e regras de atribuição. Em seguida, o pipeline aplica e sincroniza as configurações em todas as contas.
Essa abordagem oferece os seguintes benefícios:
Consistência — elimina o desvio de configuração manual em toda a sua organização AWS
Auditabilidade: mantém um histórico completo de todas as alterações no gerenciamento de identidade
Escalabilidade — aplica configurações automaticamente à medida que seu ambiente cresce AWS
Segurança: reduz o erro humano nas atribuições de permissões
Conformidade: facilita o cumprimento dos requisitos regulatórios por meio de alterações documentadas e regras de atribuição
Pré-requisitos e limitações
Um ambiente de várias contas com AWS Control Tower e AWS Organizations configurado. Opcionalmente, você pode usar o AFT com AWS Control Tower.
Um administrador delegado do IAM Identity Center Conta da AWS para receber a solução. Para obter mais informações, consulte Delegated administration na documentação do Centro de Identidade do IAM.
Um repositório do sistema de controle de versão (VCS) para lidar com o código principal. Para ver uma amostra, consulte o GitHub repositório
da solução. AWS Recursos necessários para o gerenciamento de back-end do Terraform, como um bucket do Amazon Simple Storage Service (Amazon S3) e uma tabela do Amazon DynamoDB.
Limitações
O pipeline usa recursos AWS nativos e o Terraform de código aberto. O pipeline não está preparado para fazer chamadas para ecossistemas de terceiros.
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region
. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.
Arquitetura
O diagrama apresentado a seguir ilustra os componentes e o fluxo de trabalho para este padrão.

AWS Control Tower fluxo de eventos
A solução começa com a integração de eventos provenientes de qualquer um AWS Control Tower ou do AFT. A escolha entre um ou outro serviço é feita no momento da implementação por meio da definição de variáveis. Independentemente do método usado, o pipeline é acionado sempre que uma conta é criada ou atualizada. O pipeline reconcilia as políticas armazenadas no repositório de gerenciamento de conjuntos de permissões.
A seguir estão os eventos do AWS Control Tower ciclo de vida:
CreateManagedAccount: quando uma nova conta é criadaUpdateManagedAccount: quando uma conta existente é atualizada
Roteamento de eventos
EventBridge serve como serviço central de processamento de eventos, capturando eventos gerados na AWS Control Tower conta. Quando os eventos ocorrem, os encaminha de EventBridge forma inteligente para um barramento de eventos centralizado na conta da solução. AWS Control Tower os eventos do ciclo de vida seguem padrões de roteamento distintos. Se a AFT for definida como a origem do evento, a conta de gerenciamento da AFT manipulará os eventos em vez da AWS Control Tower conta. Essa arquitetura orientada a eventos permite respostas automatizadas às alterações organizacionais sem intervenção manual.
Processo de integração do AFT
Quando os eventos AWS Control Tower do ciclo de vida chegam à conta de gerenciamento do AFT, eles acionam automaticamente vários processos posteriores que são intrínsecos ao AFT. Depois que o fluxo de trabalho de personalização da conta do AFT é concluído, ele publica uma mensagem no tópico dedicado do Amazon Simple Notification Service (Amazon SNS) aft-notifications. Esse tópico aciona a aft-new-account-forward-event AWS Lambda função implementada por essa solução. A função do Lambda envia o evento para o barramento de eventos da conta da solução, onde ele é usado para iniciar o pipeline.
Pipeline da infraestrutura como código
O pipeline de soluções opera como um mecanismo de implantação totalmente automatizado. O AWS CodePipeline serviço monitora continuamente o repositório em busca de alterações. Ao detectar novas confirmações, ele inicia automaticamente o fluxo de trabalho de implantação e inicia um processo sequencial que inclui fases de validação e execução. O sistema executa plan operações do Terraform para identificar as mudanças propostas, seguidas pelos apply comandos do Terraform para implementar essas mudanças no AWS ambiente. É importante notar que o pipeline funciona sem nenhuma porta de aprovação manual. Essa abordagem permite a rápida implantação de mudanças na infraestrutura, mantendo a auditabilidade por meio de logs de pipeline e de arquivos de estado do Terraform.
O pipeline AWS CodeBuild se aproveita para executar as operações do Terraform em um ambiente controlado com as permissões apropriadas. Por meio dessa abordagem de IaC, o pipeline pode realizar operações abrangentes de gerenciamento de permissões, incluindo:
Criar novos conjuntos de permissões.
Atualizar os conjuntos de permissões existentes.
Remover conjuntos de permissões desnecessários.
Gerencie a atribuição dessas permissões em contas e grupos dentro das AWS organizações.
Para manter a consistência da infraestrutura e evitar mudanças conflitantes, a solução implementa o sistema de gerenciamento de estado de backend do Terraform usando um bucket do Amazon S3 e uma tabela dedicada do Amazon DynamoDB. Essa abordagem fornece um local de armazenamento persistente para arquivos de estado do Terraform e mecanismos de bloqueio de estado para evitar modificações simultâneas nos mesmos recursos.
O código principal do Terraform usa o módulo oficial do AWS permission-sets Terraform. Esse módulo pode gerenciar dinamicamente conjuntos de permissões no Centro de Identidade do IAM, com base em modelos de conjuntos de permissões.
Gerenciamento de controle de origem
Os modelos de conjunto de permissões (arquivos JSON) residem em um sistema externo de controle de versão, como, por exemplo GitHub, que fornece um repositório centralizado para configurações de gerenciamento de identidade. Essa abordagem estabelece uma única fonte confiável para as definições do conjunto de permissões, ao mesmo tempo em que permite o desenvolvimento colaborativo por meio de práticas padrão de revisão de código. Usuários autorizados podem confirmar alterações nesses modelos seguindo os processos de gerenciamento de mudanças organizacionais. Essas confirmações servem como o principal gatilho para o pipeline de implantação automatizado, iniciando o processo de atualização da infraestrutura.
Para ver um exemplo de como configurar os conjuntos de permissões usando o arquivo JSON no repositório, consulte Informações adicionais.
Ferramentas
Serviços da AWS
O AWS CodeBuild é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
Conexões de código da AWSpermite que AWS recursos e serviços, como CodePipeline, se conectem a repositórios de código externos, como GitHub.
O AWS CodePipeline ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.
AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
AWS Control Towerajuda você a configurar e administrar um ambiente AWS com várias contas, seguindo as melhores práticas prescritivas.
O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
EventBridgeA Amazon é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
Centro de Identidade do AWS IAMajuda você a gerenciar centralmente o acesso de login único (SSO) a todos os seus Contas da AWS aplicativos e à nuvem.
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
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.
O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail. Ele permite notificações push para eventos de gerenciamento de contas, garantindo que as partes relevantes sejam informadas sobre mudanças ou ações importantes no sistema.
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
O Terraform
é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
Repositório de código
O código desse padrão está disponível na organização AWS Samples ou GitHub no repositório sample-terraform-aws-permission-sets-pipeline
Práticas recomendadas
Sempre fixe as versões dos módulos e provedores do Terraform usados para executar o código na produção.
Use uma ferramenta de análise de código estático, como o Checkov
, para verificar seu código e resolver os problemas de segurança. Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Crie os recursos de backend do Terraform. | Se você ainda não criou seus AWS recursos de back-end do Terraform, use as etapas a seguir para criar um bucket do Amazon S3
| Administrador da AWS |
Criar uma função de conta cruzada. | Você deve fornecer uma função do IAM entre contas na configuração do AWS provedor
Este exemplo usa a política AWS gerenciada do IAM AdministratorAccess. Se preferir, poderá usar uma política mais específica. | Administrador da AWS |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Crie um repositório dedicado. | Essa tarefa pressupõe que você esteja usando GitHub. Crie um repositório dedicado para armazenar o código principal do Terraform e os arquivos JSON do modelo do conjunto de permissões. | DevOps engenheiro |
Prepare o código do conjunto de permissões. | Para obter informações sobre como você pode estruturar os arquivos a seguir, consulte o sample code ├── main.tf ├── outputs.tf ├── providers.jinja └── templates Copie o conteúdo, mantenha os valores | DevOps engenheiro |
Confirme suas alterações. | Confirme e envie as alterações para o repositório que você criou anteriormente. Salve o nome do repositório e sua GitHub organização, por exemplo, | DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Baixe o conteúdo. | Baixe (clone) o conteúdo do repositório | DevOps engenheiro |
Preencha as variáveis. | Crie um arquivo
Para obter informações sobre opções adicionais de variáveis, consulte o arquivo variables.tf | DevOps engenheiro |
Ajuste a configuração do backend do Terraform. | No arquivo
Se preferir, você pode usar sua própria configuração de backend do Terraform. | DevOps engenheiro |
Ajuste a configuração do provedor do Terraform. | No arquivo
| DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Selecione Conta da AWS o. | Recomendamos que você implante a solução na conta do administrador delegado do Centro de Identidade do IAM. No entanto, você também pode implantá-lo na conta AWS Organizations de gerenciamento. Para fazer login na conta selecionada na mesma região da instância do Centro de Identidade do IAM, use a AWS CLI. Certifique-se de que o perfil do IAM que você está usando tenha permissão para assumir o perfil especificado para o provedor | Administrador da AWS |
Execute o Terraform manualmente. | Para inicializar, planejar e aplicar as configurações, execute os seguintes comandos do Terraform, um de cada vez:
| DevOps engenheiro |
Verificar os resultados da implantação. | Na conta do administrador delegado do Centro de Identidade do IAM, verifique se o pipeline | AWS DevOps |
Conclua a CodeConnections configuração. | Para finalizar a CodeConnections configuração, use as seguintes etapas:
O pipeline agora deve ter acesso ao repositório do conjunto de permissões. Para obter instruções detalhadas, consulte Update a pending connection na documentação do console do Developer Tools. | AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Execute o pipeline por meio AWS Control Tower de atualizações do AFT. | Depois que uma conta é criada ou alterada usando nosso AWS Control Tower AFT (dependendo do tipo de eventos de ciclo de vida que você escolheu), o pipeline começa. | Administrador da AWS |
Execute o pipeline alterando o código. | Depois de alterar o código e confirmá-lo na ramificação | AWS DevOps |
Execute o pipeline manualmente. | Para iniciar o pipeline manualmente, use o recurso Release Change no AWS CodePipeline. | AWS DevOps |
Solução de problemas
| Problema | Solução |
|---|---|
Acesso negado | Verifique se você tem as permissões necessárias para implantar a solução. |
CodeConnections problemas |
|
Problemas na execução do pipeline |
|
Problemas na implantação dos conjuntos de permissões |
|
Recursos relacionados
AWS service (Serviço da AWS) documentação
Gerencie Contas da AWS com conjuntos de permissões (documentação do IAM Identity Center)
Outros recursos
AWS Módulo de conjuntos de permissões
(Terraform)
Mais informações
Arquivo JSON com conjunto de permissões de exemplo
O exemplo a seguir mostra como configurar um conjunto de permissões usando o arquivo JSON no repositório:
{ "Name": "ps-billing", // Permission set identifier "Comment": "Sample permission set for billing access", // Comment to document the purpose of the permission set "Description": "Billing access in AWS", // Detailed description "SessionDuration": "PT4H", // Session duration = 4 hours (ISO 8601 format) "ManagedPolicies": [ // List of AWS IAM managed policies "arn:aws:iam::aws:policy/job-function/Billing", "arn:aws:iam::aws:policy/job-function/SupportUser", "arn:aws:iam::aws:policy/AWSSupportAccess", "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess" ], "CustomerPolicies": [], // References to IAM policies previously created "CustomPolicy": {}, // Inline IAM policy defined directly in the permission set "PermissionBoundary": { // AWS or customer managed IAM policy to be used as boundary "ManagedPolicy": "", "CustomerPolicy": "" }, "Assignments": [ // Define the assignment rules { "all_accounts": true, // Apply to ALL active AWS accounts in organization "principal": "G_BILLING_USERS", // Group/user name in Identity Center "type": "GROUP", // Can be "GROUP" or "USER" "account_id": [], // List of AWS account ID (empty since all_accounts=true) "account_ou": [], // List of AWS Organizational Unit IDs with target AWS accounts "account_tag": [] // List of tags (key:value) to match AWS Organization accounts tags } ] }
Para obter mais informações, consulte o esquema JSON na documentação AWS Permission Sets module
Dicas
Você pode usar os blocos de importação
do Terraform para importar um conjunto de permissões existente para a solução. Você pode usar o AFT para implementar o pipeline do conjunto de AWS permissões em uma conta delegada. Para obter mais informações, consulte AFT Blueprints
.