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
AWS IAM Identity Center 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 IAM Identity Center 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 recursos nativos. Serviços da AWS 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 mudanças 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 Administração delegada na documentação do IAM Identity Center.
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 gasoduto 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 saber a disponibilidade da região, consulte AWS Serviços por região
. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.
Arquitetura
O diagrama a seguir mostra os componentes e o fluxo de trabalho desse 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 o 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 mudanças 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. Após a conclusão do fluxo de trabalho de personalização da conta AFT, ele publica uma mensagem no tópico dedicado do aft-notifications
Amazon Simple Notification Service (Amazon SNS). Esse tópico aciona a aft-new-account-forward-event
AWS Lambda função implementada por essa solução. A função Lambda envia o evento para o barramento de eventos da conta da solução, onde é usado para iniciar o pipeline.
Infraestrutura como pipeline de 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 novos commits, 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. Notavelmente, o gasoduto 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 registros de pipeline e 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:
Crie novos conjuntos de permissões.
Atualize os conjuntos de permissões existentes.
Remova 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 back-end 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 IAM Identity Center, 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. Esses commits 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
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.
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.
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 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.
AWS IAM Identity Centerajuda 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 escanear seu código e resolver os problemas de segurança. Siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para realizar 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 | Descrição | Habilidades necessárias |
---|---|---|
Crie recursos de back-end 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, você pode usar uma política mais específica. | Administrador da AWS |
Tarefa | Descrição | 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 código de amostra ¾ ─ main.tf ¾ ─ saídas.tf ¾ ─ providers.jinja ◆─ modelos Copie o conteúdo, mantenha os | 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 | Descrição | Habilidades necessárias |
---|---|---|
Baixe o conteúdo. | Baixe (clone) o conteúdo do repositório | DevOps engenheiro |
Preencha as variáveis. | Crie um
Para obter informações sobre opções adicionais de variáveis, consulte o arquivo variables.tf | DevOps engenheiro |
Ajuste a configuração do back-end do Terraform. | No
Se preferir, você pode usar sua própria configuração de back-end do Terraform. | DevOps engenheiro |
Ajuste a configuração do provedor Terraform. | No
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Selecione Conta da AWS o. | Recomendamos que você implante a solução na conta de administrador delegado do IAM Identity Center. 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 IAM Identity Center, use AWS CLI o. Certifique-se de que a função do IAM que você está usando tenha permissão para assumir a função especificada para o | Administrador da AWS |
Execute o Terraform manualmente. | Para inicializar, planejar e aplicar as configurações, execute os seguintes comandos do Terraform na ordem mostrada:
| DevOps engenheiro |
Verificar os resultados da implantação. | Na conta de administrador delegado do IAM Identity Center, verifique se o | 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 Atualizar uma conexão pendente na documentação do console do Developer Tools. | AWS DevOps |
Tarefa | Descrição | 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 | 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 de execução do pipeline |
|
Problemas de implantação de 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 amostra
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 do módulo Conjuntos de AWS permissões
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
.