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á.
Controle os conjuntos de permissões para várias contas usando o Account Factory for Terraform
Anand Krishna Varanasi e Siamak Heshmati, da Amazon Web Services
Resumo
Esse padrão ajuda você a integrar o AWS Control Tower Account Factory Terraform (AFT) para configurar permissões para várias Contas da AWS em grande escala. AWS IAM Identity Center Essa abordagem usa AWS Lambda funções personalizadas para automatizar as atribuições de conjuntos de permissões Contas da AWS que são gerenciados como uma organização. Isso simplifica o processo porque não requer intervenção manual da equipe de engenharia da plataforma. Essa solução pode melhorar a eficiência operacional, a segurança e a consistência. Ele promove um processo de integração seguro e padronizado AWS Control Tower, tornando-o indispensável para empresas que priorizam a agilidade e a confiabilidade de sua infraestrutura em nuvem.
Pré-requisitos e limitações
Pré-requisitos
Contas da AWS, gerenciado por meio de AWS Control Tower. Para obter mais informações, consulte Introdução ao AWS Control Tower.
Account Factory for Terraform, implantado em uma conta dedicada em seu ambiente. Para obter mais informações, consulte Deploy AWS Control Tower Account Factory for Terraform.
Uma instância do IAM Identity Center, configurada em seu ambiente. Para obter mais informações, consulte Getting Started with IAM Identity Center.
Um grupo ativo do IAM Identity Center, configurado. Para obter mais informações, consulte Adicionar grupos ao seu Diretório do Centro de Identidade do IAM.
Python versão 3.9 ou posterior, instalado
Limitações
Essa solução só pode ser usada com contas gerenciadas por meio de AWS Control Tower. Essa solução é implantada usando o Account Factory for Terraform.
Esse padrão não inclui instruções para configurar a federação de identidades com uma fonte de identidade. Para obter mais informações sobre como concluir essa configuração, consulte os tutoriais da fonte de identidade do IAM Identity Center na documentação do IAM Identity Center.
Arquitetura
Visão geral do AFT
O AFT configura um pipeline do Terraform que ajuda você a provisionar e personalizar suas contas em AWS Control Tower. O AFT segue um GitOps modelo que automatiza os processos de provisionamento de contas em. AWS Control Tower Você cria um arquivo Terraform de solicitação de conta e o submete ao repositório. Isso inicia o fluxo de trabalho AFT para provisionamento de contas. Depois que o provisionamento da conta for concluído, o AFT poderá executar automaticamente etapas adicionais de personalização. Para obter mais informações, consulte a arquitetura AFT na AWS Control Tower documentação.
O AFT fornece os seguintes repositórios principais:
aft-account-request— Este repositório contém código do Terraform para criar ou atualizar. Contas da AWSaft-account-customizations— Esse repositório contém o código do Terraform para criar ou personalizar recursos por conta.aft-global-customizations— Esse repositório contém o código do Terraform para criar ou personalizar recursos para todas as contas, em grande escala.aft-account-provisioning-customizations— Esse repositório gerencia personalizações que são aplicadas somente a contas específicas criadas e gerenciadas com o AFT. Por exemplo, você pode usar esse repositório para personalizar atribuições de usuários ou grupos no IAM Identity Center ou para automatizar o encerramento de contas.
Visão geral da solução
Essa solução personalizada inclui uma máquina de AWS Step Functions estado e uma AWS Lambda função que atribui conjuntos de permissões a usuários e grupos para várias contas. A máquina de estado implantada por meio desse padrão opera em conjunto com a máquina de estado AFT aft_account_provisioning_customizations preexistente. Um usuário envia uma solicitação para atualizar as atribuições de usuários e grupos do IAM Identity Center quando uma nova Conta da AWS é criada ou após a criação da conta. Eles fazem isso enviando uma alteração para o aft-account-request repositório. A solicitação para criar ou atualizar uma conta inicia um stream no Amazon DynamoDB Streams. Isso inicia a função Lambda, que atualiza os usuários e grupos do IAM Identity Center para o alvo. Contas da AWS
Veja a seguir um exemplo dos parâmetros que você pode fornecer na função Lambda para atribuições de conjuntos de permissões para usuários e grupos-alvo:
custom_fields = { "InstanceArn" = "<Organization ID>", "PermissionSetArn" = "<Permission set ARN>", "PrincipalId" = "<Principal ID>", }
A seguir estão os parâmetros desta declaração:
InstanceArn— O Amazon Resource Name (ARN) da organizaçãoPermissionSetArn— O ARN do conjunto de permissõesPrincipalId— O identificador de um usuário ou grupo no IAM Identity Center ao qual o conjunto de permissões será aplicado
nota
Você deve criar o conjunto de permissões, os usuários e os grupos de destino antes de executar essa solução.
Embora o InstanceArn valor deva permanecer consistente, você pode modificar a função Lambda para atribuir vários conjuntos de permissões a várias identidades de destino. Os parâmetros para conjuntos de permissões devem terminar emPermissionSetArn, e os parâmetros para usuários e grupos devem terminar emPrincipalId. Você deve definir os dois atributos. Veja a seguir um exemplo de como definir vários conjuntos de permissões e segmentar usuários e grupos:
custom_fields = { "InstanceArn" = "<Organization ID>", "AdminAccessPermissionSetArn" = "<Admin privileges permission set ARN>", "AdminAccessPrincipalId" = "<Admin principal ID>", "ReadOnlyAccessPermissionSetArn" = "<Read-only privileges permission set ARN>", "ReadOnlyAccessPrincipalId" = "<Read-only principal ID>", }
O diagrama a seguir mostra um step-by-step fluxo de trabalho de como a solução atualiza os conjuntos de permissões para usuários e grupos no destino Contas da AWS em grande escala. Quando o usuário inicia uma solicitação de criação de conta, o AFT inicia a máquina de estado aft-account-provisioning-framework Step Functions. Essa máquina de estado inicia a função extract-alternate-sso Lambda. A função Lambda atribui conjuntos de permissões a usuários e grupos no destino. Contas da AWS Esses usuários ou grupos podem ser de qualquer fonte de identidade configurada no IAM Identity Center. Exemplos de fontes de identidade incluem Okta, Active Directory ou Ping Identity.

O diagrama mostra o seguinte fluxo de trabalho quando novas contas são criadas:
Um usuário envia uma
custom_fieldsalteração para oaft-account-requestrepositório.AWS CodePipeline inicia um AWS CodeBuild trabalho que registra os metadados definidos pelo usuário na tabela do Amazon
aft-request-auditDynamoDB. Essa tabela tem atributos para registrar metadados definidos pelo usuário. Oddb_event_nameatributo define o tipo de operação AFT:Se o valor for
INSERT, a solução atribuirá as permissões definidas às identidades de destino quando a nova Conta da AWS for criada.Se o valor for
UPDATE, a solução atribuirá as permissões definidas às identidades de destino após Conta da AWS a criação.
O Amazon DynamoDB Streams inicia
aft_alternate_sso_extracta função Lambda.A função
aft_alternate_sso_extractLambda assume uma função AWS Identity and Access Management (IAM) na conta de gerenciamento. AWS Control TowerA função Lambda atribui os conjuntos de permissões aos usuários e grupos de destino fazendo uma chamada de API AWS SDK para Python (Boto3) create_account_assignment
para o IAM Identity Center. Ele recupera o conjunto de permissões e as atribuições de identidade da tabela do Amazon aft-request-auditDynamoDB.Quando o fluxo de trabalho do Step Functions é concluído, os conjuntos de permissões são atribuídos às identidades de destino.
Automação e escala
O AFT opera em grande escala usando Serviços da AWS DynamoDB e Lambda, que são altamente escaláveis. CodePipeline AWS CodeBuild Para automação adicional, você pode integrar essa solução a um sistema de gerenciamento de tickets ou problemas, como o Jira. Para obter mais informações, consulte a seção Informações adicionais desse padrão.
Ferramentas
Serviços da AWS
O Account Factory for Terraform (AFT) é a principal ferramenta dessa solução. O
aft-account-provisioning-customizationsrepositório contém o código do Terraform para criar personalizações Contas da AWS, como atribuições personalizadas de usuários ou grupos do IAM Identity Center.O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
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 Step Functionsé um serviço de orquestração sem servidor que ajuda você a combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios.
Outras ferramentas
Python
é uma linguagem de programação de computador de uso geral. 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 repositório de código do AFT está disponível no repositório GitHub AWS Control Tower Account Factory for Terraform
Práticas recomendadas
Entenda o modelo de responsabilidade AWS compartilhada
. Siga as recomendações de segurança para AWS Control Tower. Para obter mais informações, consulte Segurança em AWS Control Tower.
Seguir o princípio do privilégio mínimo Para obter mais informações, consulte Aplicar permissões de privilégios mínimos.
Crie conjuntos de permissões específicos e focados e funções do IAM para grupos e unidades de negócios.
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Criar um perfil do IAM. | Na conta AWS Control Tower de gerenciamento, use o Terraform para criar uma função do IAM. Essa função tem acesso entre contas e uma política de confiança que permite acesso federado do provedor de identidade. Ele também tem permissões para conceder acesso a outras contas por meio de AWS Control Tower. A função Lambda assumirá essa função. Faça o seguinte:
| AWS DevOps, arquiteto de nuvem |
Personalize a solução para seu ambiente. |
| AWS DevOps, arquiteto de nuvem |
Implante a solução. |
| AWS DevOps, arquiteto de nuvem |
Configure uma conexão de repositório de código. | Configure uma conexão entre o repositório de código em que você armazenará os arquivos de configuração e o seu Conta da AWS. Para obter instruções, consulte Adicionar provedores de origem terceirizados aos pipelines usando CodeConnections na AWS CodePipeline documentação. | AWS DevOps, arquiteto de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Inicie o pipeline AFT para implantar uma nova conta. | Siga as instruções em Provisionar uma nova conta com o AFT para iniciar o pipeline que cria uma nova Conta da AWS em seu AWS Control Tower ambiente. Aguarde a conclusão do processo de criação da conta. | AWS DevOps, arquiteto de nuvem |
Valide as alterações. |
| AWS DevOps, arquiteto de nuvem |
Solução de problemas
| Problema | Solução |
|---|---|
A atribuição do conjunto de permissões não está funcionando. | Verifique se o ARN do grupo, o ID da organização e os parâmetros do Lambda estão corretos. Para ver exemplos, consulte a seção Visão geral da solução desse padrão. |
A atualização do código no repositório não inicia o pipeline. | Esse problema está relacionado à conectividade entre você Conta da AWS e o repositório. No AWS Management Console, valide se a conexão está ativa. Para obter mais informações, consulte GitHub as conexões na AWS CodePipeline documentação. |
Mais informações
Integração com uma ferramenta de gerenciamento de tickets
Você pode optar por integrar essa solução a uma ferramenta de gerenciamento de tickets ou problemas, como o Jira ou ServiceNow. O diagrama a seguir mostra um exemplo de fluxo de trabalho para essa opção. Você pode integrar a ferramenta de gerenciamento de tickets aos repositórios de soluções AFT usando os conectores da sua ferramenta. Para conectores do Jira, consulte Integrar o Jiraaft-account-request GitHub repositório. Você pode criar qualquer fluxo de trabalho personalizado que atenda aos requisitos do seu caso de uso.

O diagrama mostra o seguinte fluxo de trabalho:
Os usuários solicitam uma atribuição personalizada do conjunto de permissões em uma ferramenta de gerenciamento de tickets, como o Jira.
Depois que o caso for aprovado, um fluxo de trabalho começa a atualizar a atribuição do conjunto de permissões. (Opcional) Você pode usar plug-ins para automação personalizada dessa etapa.
Os operadores enviam o código do Terraform com os parâmetros atualizados do conjunto de permissões para o
aft-account-requestrepositório em uma ramificação de desenvolvimento ou recurso.GitHub As ações são AWS CodeBuild iniciadas usando uma chamada OpenID Connect (OIDC). CodeBuild executa varreduras de segurança de infraestrutura como código (IaC) usando ferramentas como tfsec
e checkov. Ele avisa os operadores sobre quaisquer violações de segurança. Se nenhuma violação for encontrada, o GitHub Actions cria uma pull request automática e atribui uma revisão de código aos proprietários do código. Ele também cria uma tag para a pull request.
Se o proprietário do código aprovar a revisão do código, outro fluxo de trabalho de GitHub ações será iniciado. Ele verifica os padrões de pull request, incluindo:
Se o título da pull request atender aos requisitos.
Se o corpo da pull request contiver números de casos aprovados.
Se o pull request estiver marcado corretamente.
Se as pull requests atenderem aos padrões, o GitHub Actions iniciará o fluxo de trabalho do produto AFT. Ele usa o início da
ct-aft-account-requesttubulação AWS CodePipeline. Esse pipeline inicia a máquina de estadoaft-account-provisioning-frameworkpersonalizada em Step Functions. Essa máquina de estado funciona conforme descrito anteriormente na seção Visão geral da solução desse padrão.