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á.
Governança de conjuntos de permissões para várias contas usando o Account Factory para Terraform
Anand Krishna Varanasi e Siamak Heshmati, 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. Centro de Identidade do AWS IAM 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, pois elimina a necessidade de intervenção manual por parte da equipe de engenharia de plataforma. Com esta solução, é possível aprimorar 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 para Terraform, implantado em uma conta dedicada no seu ambiente. Para obter mais informações, consulte Deploy AWS Control Tower Account Factory for Terraform.
Uma instância do Centro de Identidade do IAM, configurada no seu ambiente. Para obter mais informações, consulte Getting Started with IAM Identity Center.
Um grupo ativo do Centro de Identidade do IAM, configurado. Para obter mais informações, consulte Add groups to your Diretório do Centro de Identidade do IAM.
Python versão 3.9 ou versões posteriores, instalado
Limitações
Esta solução pode ser usada somente com contas gerenciadas pelo AWS Control Tower. A implantação da solução ocorre usando o Account Factory para Terraform.
Este modelo 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 IAM Identity Center identity source tutorials na documentação do Centro de Identidade do IAM.
Arquitetura
Visão geral do AFT
O AFT configura um pipeline do Terraform que ajuda você a provisionar e personalizar suas contas no 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 do Terraform de solicitação de conta e o confirma para o repositório. Isso inicia o fluxo de trabalho do AFT para o provisionamento da conta. Depois que o provisionamento da conta é concluído, o AFT pode executar automaticamente as 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 o código do Terraform para criar ou atualizar Contas da AWS.aft-account-customizations: este repositório contém o código do Terraform para criar ou personalizar recursos em nível de conta.aft-global-customizations: este 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: este repositório gerencia personalizações aplicadas apenas a contas específicas criadas e gerenciadas com o AFT. Por exemplo, é possível usar esse repositório para personalizar as atribuições de usuários ou de grupos no Centro de Identidade do IAM 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 estados implantada por meio deste padrão opera em conjunto com a máquina de estado aft_account_provisioning_customizations do AFT já existente. 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. Essa ação é realizada ao enviar uma alteração para o repositório aft-account-request. A solicitação para criar ou atualizar uma conta inicia um fluxo 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
A seguir, apresentamos um exemplo de parâmetros que você pode fornecer na função do Lambda para atribuição de conjuntos de permissões a usuários e grupos de destino:
custom_fields = { "InstanceArn" = "<Organization ID>", "PermissionSetArn" = "<Permission set ARN>", "PrincipalId" = "<Principal ID>", }
Os seguintes são os parâmetros desta instrução:
InstanceArn: o nome do recurso da Amazon (ARN) da organizaçãoPermissionSetArn: o ARN do conjunto de permissõesPrincipalId: o identificador de um usuário ou de um grupo no Centro de Identidade do IAM 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 esta solução.
Apesar de o valor de InstanceArn precisar se manter constante, é possível modificar a função do Lambda para que ela atribua diversos conjuntos de permissões a diferentes identidades de destino. Os parâmetros destinados a conjuntos de permissões devem terminar com PermissionSetArn, e os parâmetros destinados a usuários e grupos devem terminar com PrincipalId. É necessário definir ambos os atributos. A seguir, apresentamos um exemplo de como definir múltiplos conjuntos de permissões e usuários e grupos de destino:
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 aciona a máquina de estado aft-account-provisioning-framework do Step Functions. Essa máquina de estado inicia a função do Lambda extract-alternate-sso. 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 Centro de Identidade do IAM. Os exemplos de fontes de identidade incluem Okta, Active Directory ou Ping Identity.

O diagrama apresenta o seguinte fluxo de trabalho quando novas contas são criadas:
Um usuário envia por push uma alteração em
custom_fieldspara o repositórioaft-account-request.AWS CodePipeline inicia um AWS CodeBuild trabalho que registra os metadados definidos pelo usuário na tabela do Amazon
aft-request-auditDynamoDB. Essa tabela conta com atributos para registrar os metadados definidos pelo usuário. O atributoddb_event_namedefine o tipo de operação do 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 aciona a função do Lambda
aft_alternate_sso_extract.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. Além disso, a função obtém os conjuntos de permissões e as atribuições de identidades da tabela aft-request-auditdo Amazon DynamoDB.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 obter automação adicional, você pode integrar esta solução a um sistema de gerenciamento de tíquetes ou de 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 desta 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
Compreenda o Modelo de Responsabilidade Compartilhada da AWS
. 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.
Desenvolva conjuntos de permissões e perfis do IAM específicos e direcionados para grupos e unidades de negócios.
Épicos
| Tarefa | Description | 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. Este perfil conta com acesso entre contas e uma política de confiança que permite acesso federado com o provedor de identidades. Ele também tem permissões para conceder acesso a outras contas por meio de AWS Control Tower. A função do Lambda assumirá este perfil. Faça o seguinte:
| AWS DevOps, arquiteto de nuvem |
Personalize a solução para o seu ambiente. |
| AWS DevOps, arquiteto de nuvem |
Implante a solução. |
| AWS DevOps, arquiteto de nuvem |
Configure uma conexão com um 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 | Description | Habilidades necessárias |
|---|---|---|
Inicie o pipeline do 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 de conjuntos de permissões não está funcionando. | Verifique se o ARN do grupo, a ID da organização e os parâmetros do Lambda estão corretos. Para obter exemplos, consulte a seção Visão geral da solução deste 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 Console de gerenciamento da AWS, 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 tíquetes
Você pode optar por integrar essa solução a uma ferramenta de gerenciamento de tickets ou problemas, como o Jira ou ServiceNow. O diagrama apresentado a seguir ilustra um exemplo de fluxo de trabalho para esta opção. É possível integrar a ferramenta de gerenciamento de tíquetes aos repositórios da solução do AFT usando os conectores da sua ferramenta. Para conectores do Jira, consulte Integrar o Jiraaft-account-request GitHub repositório. Você pode projetar 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 a atribuição de um conjunto de permissões personalizado em uma ferramenta de gerenciamento de tíquetes, como o Jira.
Após a aprovação do caso, um fluxo de trabalho é iniciado para atualizar a atribuição do conjunto de permissões. Opcional) É possível usar plug-ins para automação personalizada desta etapa.
Os operadores enviam o código do Terraform com os parâmetros atualizados do conjunto de permissões para o repositório
aft-account-requestem uma ramificação de desenvolvimento ou de funcionalidade.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. Essa ação alerta 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. Também é criada uma etiqueta para a solicitação de pull.
Se o proprietário do código aprovar a revisão do código, outro fluxo de trabalho de GitHub Ações será iniciado. Além disso, ocorre a verificação dos padrões da solicitação de pull, incluindo:
Se o título da solicitação de pull atender aos requisitos.
Se o corpo da solicitação de pull contiver números de casos aprovados.
Se a solicitação de pull estiver devidamente marcada.
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 aciona a máquina de estado personalizadaaft-account-provisioning-frameworkno Step Functions. Essa máquina de estado funciona conforme descrito anteriormente na seção Visão geral da solução deste padrão.