Gerencie conjuntos de permissões do AWS IAM Identity Center como código usando a AWS CodePipeline - Recomendações da AWS

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 permissões do AWS IAM Identity Center como código usando a AWS CodePipeline

Criado por Andre Cavalcante (AWS) e Claison Amorim (AWS)

Repositório de código: aws-iam-identity-center -pipeline

Ambiente: produção

Tecnologias: Segurança, identidade, conformidade; DevOps

Serviços da AWS: AWS CodeBuild; AWS CodeCommit; AWS CodePipeline; AWS IAM Identity Center

Resumo

O Centro de Identidade do AWS IAM (sucessor do autenticação única (SSO) da AWS) ajuda você a gerenciar centralmente o acesso à autenticação única (SSO) a todas as suas contas e aplicativos na nuvem da AWS. Você pode criar e gerenciar identidades de usuários no Centro de Identidade do IAM ou conectar uma fonte de identidades existente, como um domínio do Microsoft Active Directory ou um provedor de identidades (IdP) externo. O Centro de Identidade do IAM fornece uma experiência de administração unificada para definir, personalizar e atribuir acesso refinado ao seu ambiente da AWS usando conjuntos de permissões. Os conjuntos de permissões se aplicam aos grupos e usuários federados do seu repositório de identidades do Centro de Identidade do AWS IAM ou do seu IdP externo.

Este padrão ajuda você a gerenciar os conjuntos de permissões do Centro de Identidade do IAM como código em seu ambiente de várias contas que é gerenciado como uma organização no AWS Organizations. Com esse padrão, você pode conseguir o seguinte:

  • Criar, excluir e atualizar conjuntos de permissões

  • Criar, atualizar ou excluir atribuições de conjuntos de permissões para contas AWS do destino, para unidades organizacionais (UOs) ou para a raiz de sua organização.

Para gerenciar as permissões e atribuições do IAM Identity Center como código, essa solução implanta um pipeline de integração contínua e entrega contínua (CI/CD) que usa AWS, AWS e CodeCommit AWS. CodeBuild CodePipeline Você gerencia os conjuntos de permissões e as atribuições nos modelos JSON que você armazena no CodeCommit repositório. Quando EventBridge as regras da Amazon detectam uma alteração no repositório ou detectam modificações nas contas na OU de destino, elas iniciam uma função do AWS Lambda. A função do Lambda inicia o pipeline de CI/CD que atualiza os conjuntos de permissões e as atribuições no contínuas Centro de Identidade do IAM.

Pré-requisitos e limitações

Pré-requisitos

  • Um ambiente de várias contas gerenciado como uma organização no AWS Organizations. Para obter mais informações, consulte Criar uma organização.

  • Centro de identidade do IAM, habilitado e configurado com uma fonte de identidade. Para obter mais informações sobre o Centro de Identidade do IAM, consulte Fundamentos.

  • Você também pode optar por registrar uma conta de membro como administrador delegado do Centro de Identidade do IAM. Para obter instruções, consulte Registrar uma conta membro na documentação do Centro de identidade do IAM.

  • Permissões para implantar CloudFormation pilhas da AWS na conta de administrador delegado do IAM Identity Center e na conta de gerenciamento da organização. Para obter mais informações, consulte Controle de acesso na CloudFormation documentação.

  • Um bucket do Amazon Simple Storage Service (Amazon S3) no administrador delegado do Centro de Identidade para fazer upload do código do artefato. Para obter instruções, consulte Criar um bucket.

  • O ID da conta de gerenciamento da organização. Para obter instruções, consulte Como encontrar o ID da conta AWS.

Limitações

  • Esse padrão não pode ser usado para gerenciar ou atribuir conjuntos de permissões para ambientes de conta única ou para contas que não são gerenciadas como uma organização no AWS Organizations.

  • Os nomes dos conjuntos de permissões, os IDs de associação e os tipos e IDs da entidade principal do Centro de Identidade do IAM não podem ser modificados após a implantação.

  • Esse padrão ajuda você a criar e gerenciar permissões personalizadas. Você não pode usar esse padrão para gerenciar ou atribuir permissões predefinidas.

  • Esse padrão não pode ser usado para gerenciar um conjunto de permissões para a conta de gerenciamento da organização.

Arquitetura

Pilha de tecnologia

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • Centro de Identidade do IAM

  • AWS Lambda

  • AWS Organizations

Arquitetura de destino

Usando o pipeline de CI/CD e o CodeCommit repositório da AWS para gerenciar conjuntos de permissões no AWS IAM Identity Center.

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um usuário faz uma ou todas as alterações a seguir:

    1. Confirma uma ou mais alterações no repositório CodeCommit

    2. Modifica as contas na unidade organizacional (UO) no AWS Organizations

  2. Se o usuário tiver confirmado uma alteração no CodeCommit repositório, a CodeChange EventBridge regra detectará a alteração e iniciará uma função Lambda na conta de administrador delegado do IAM Identity Center. A regra não reage às alterações em determinados arquivos no repositório, como o arquivo README.md.

    Se o usuário modificou as contas na unidade organizacional, a MoveAccount EventBridge regra detectará a alteração e iniciará uma função Lambda na conta de gerenciamento da organização.

  3. A função Lambda iniciada inicia o pipeline de CI/CD em. CodePipeline

  4. CodePipeline inicia o CodebuildTemplateValidation CodeBuild projeto.

  5. O CodebuildTemplateValidation CodeBuild projeto usa um script Python no CodeCommit repositório para validar os modelos do conjunto de permissões. CodeBuild valida o seguinte:

    • Os nomes do conjunto de permissões que são exclusivos.

    • Os IDs da declaração de atribuição (Sid) que são exclusivos.

    • As definições de política no parâmetro CustomPolicy e válidas. (Esta validação usa o AWS Identity and Access Management Access Analyzer).

    • O nome do recurso da Amazon (ARN) das políticas gerenciadas que é válido.

  6. O CodebuildPermissionSet CodeBuild projeto usa o AWS SDK for Python (Boto3) para excluir, criar ou atualizar os conjuntos de permissões no IAM Identity Center. Somente os conjuntos de permissões com a tag SSOPipeline:true são afetados. Todos os conjuntos de permissões gerenciados por meio desse pipeline têm essa tag.

  7. O CodebuildAssignments CodeBuild projeto usa o Terraform para excluir, criar ou atualizar as atribuições no IAM Identity Center. Os arquivos de estado do backend do Terraform são armazenados em um bucket do S3 na mesma conta.

  8. CodeBuild assume uma função lookup do IAM na conta de gerenciamento da organização. Ele chama as APIs de organizações e identitystore para listar os recursos necessários para conceder ou revogar permissões.

  9. CodeBuild atualiza os conjuntos de permissões e as atribuições no IAM Identity Center.

Automação e escala

Como todas as novas contas em um ambiente de várias contas são transferidas para uma unidade organizacional específica no AWS Organizations, essa solução é executada automaticamente e concede os conjuntos de permissões necessários a todas as contas que você especifica nos modelos de atribuição. Nenhuma automação ou ação de escalonamento adicional é necessária.

Em ambientes grandes, o número de solicitações de API para o Centro de Identidade do IAM pode fazer com que essa solução seja executada mais lentamente. O Terraform e o Boto3 gerenciam automaticamente o controle de utilização para minimizar qualquer degradação do desempenho.

Ferramentas

Serviços da AWS

  • CloudFormationA AWS ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.

  • CodeBuildA AWS é um serviço de criação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes unitários e produzir artefatos prontos para implantação. 

  • CodeCommitA AWS é um serviço de controle de versão que ajuda você a armazenar e gerenciar repositórios Git de forma privada, sem precisar gerenciar seu próprio sistema de controle de origem.

  • CodePipelineA AWS ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar alterações de software continuamente.

  • 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, funções do Lambda, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outras contas da AWS.

  • O Centro de Identidade do AWS IAM ajuda você a gerenciar centralmente o acesso à autenticação única (SSO) a todas as suas contas e aplicativos na nuvem da AWS.

  • O AWS Organizations é um serviço de gerenciamento de contas que ajuda a consolidar várias contas da AWS em uma organização que você cria e gerencia de maneira centralizada.

  • O AWS SDK para Python (Boto3) é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script do Python aos 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.

Repositório de código

O código desse padrão está disponível no repositório aws-iam-identity-center-pipeline. A pasta de modelos no repositório inclui modelos de exemplo para conjuntos de permissões e atribuições. Também inclui CloudFormation modelos da AWS para implantar o pipeline de CI/CD e os recursos da AWS nas contas de destino.

Práticas recomendadas

  • Antes de começar a modificar o conjunto de permissões e os modelos de exercícios, recomendamos que você planeje os conjuntos de permissões para sua organização. Considere quais devem ser as permissões, a quais contas ou UOs o conjunto de permissões deve ser aplicado e quais entidades principais do Centro de Identidade do IAM (usuários ou grupos) devem ser afetados pelo conjunto de permissões. Os nomes dos conjuntos de permissões, os IDs de associação e os tipos e IDs da entidade principal do Centro de Identidade do IAM não podem ser modificados após a implantação.

  • Siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para executar 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

TarefaDescriçãoHabilidades necessárias

Clonar o repositório.

Em um shell bash, insira o comando a seguir. Isso clona o repositório aws-iam-identity-center-pipeline de. GitHub

git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git
DevOps engenheiro

Defina os conjuntos de permissões.

  1. No repositório clonado, navegue até a pasta templates/permissionsets e abra um dos modelos disponíveis.

  2. No parâmetroName , insira um nome para o conjunto de permissões. Esse valor deve ser exclusivo e não pode ser alterado após a implantação.

  3. No parâmetro Description, descreva brevemente o conjunto de permissões, como o caso de uso.

  4. No parâmetro SessionDuration, especifique por quanto tempo um usuário pode estar conectado a uma conta da AWS. Use o ISO-8601 duration format (formato de duração ISO-8601) (Wikipedia), como PT4H por 4 horas. Se nenhum valor for definido, o padrão no Centro de Identidade do IAM é de 1 hora.

  5. Personalize as políticas no conjunto de permissões. Todos os parâmetros a seguir são opcionais e podem ser modificados após a implantação. Você deve usar pelo menos um dos parâmetros para definir as políticas no conjunto de permissões:

    • No parâmetro ManagedPolicies, insira os ARNs de todas as políticas gerenciadas pela AWS que você deseja atribuir.

    • No parâmetro CustomerManagedPolicies, insira os ARNs de todas as políticas gerenciadas pelo cliente que você deseja atribuir. Não use o ARN.

    • No parâmetro PermissionBoundary, faça o seguinte para atribuir um limite de permissão:

      • Se você estiver usando uma política gerenciada pela AWS como limite de permissão, em PolicyType, insira AWS e em Policy insira o ARN da política.

      • Se você estiver usando uma política gerenciada pelo cliente como limite de permissão, em PolicyType, insira Customer e em Policy insira o ARN da política. Não use o ARN.

    • No parâmetro CustomPolicy, defina todas as políticas personalizadas em formato JSON que você deseja atribuir. Para obter mais informações sobre a estrutura da política JSON, consulte Visão geral de políticas JSON.

  6. Salve e feche o modelo do conjunto de permissões. Recomendamos que você salve o arquivo com um nome que corresponda ao nome do conjunto de permissões.

  7. Repita esse processo para criar quantos conjuntos de permissões forem necessários para sua organização e exclua todos os modelos de amostra que não sejam necessários.

DevOps engenheiro

Defina as atribuições.

  1. No repositório clonado, navegue até a pasta templates/assignments e abra iam-identitycenter-assigments.json. Esse arquivo descreve como você precisa atribuir os conjuntos de permissões às contas ou UOs da AWS.

  2. No parâmetro SID, insira um identificador para a atribuição. Esse valor deve ser exclusivo e não pode ser alterado após a implantação.

  3. No parâmetro Target, defina as contas ou organizações nas quais você deseja aplicar o conjunto de permissões. Os valores válidos são IDs de conta, IDs de UO, nomes de UO ou root. root atribui o conjunto de permissões a todas as contas-membro da organização, excluindo a conta de gerenciamento. Insira os valores entre aspas duplas e separe vários identificadores com vírgulas. Para obter instruções sobre como encontrar IDs, consulte Visualização dos detalhes de uma conta ou Visualização dos detalhes de uma UO.

  4. No parâmetro PrincipalType, insira o tipo de entidade principal do Centro de Identidade do IAM que será afetado pelo conjunto de permissões. Os valores válidos são USER ou GROUP. Esse valor não poderá ser modificado após a implantação.

  5. No parâmetro PrincipalID, insira o nome do usuário ou grupo no armazém de identidade do Centro de Identidade do IAM que será afetado pelo conjunto de permissões. Esse valor não poderá ser modificado após a implantação.

  6. No parâmetro PermissionSetName, insira o nome do conjunto de permissões que você deseja atribuir.

  7. Repita as etapas de 2 a 6 para criar quantas tarefas forem necessárias nesse arquivo. Normalmente, há uma atribuição para cada conjunto de permissões. Exclua todos os exemplos de exercícios que não sejam obrigatórios.

  8. Salve e feche o arquivo iam-identitycenter-assigments.json.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Faça upload dos arquivos para um bucket do S3.

  1. Comprima o repositório clonado em um arquivo .zip.

  2. Faça login na conta de administrador delegado do Centro de Identidade do IAM.

  3. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  4. No painel de navegação à esquerda, escolha Buckets.

  5. Escolha o bucket que você deseja usar para implantar essa solução.

  6. Faça upload do arquivo .zip no bucket do S3 de destino. Para obter instruções, consulte Carregar objetos.

DevOps engenheiro

Faça login na conta de administrador delegado do Centro de Identidade do IAM.

  1. Na conta de administrador delegado do IAM Identity Center, abra o CloudFormation console em https://console.aws.amazon.com/cloudformation/.

  2. Implante o modelo iam-identitycenter-pipeline.yaml. Dê um nome bem definido e descritivo à pilha e atualize os parâmetros conforme as instruções. Para obter instruções, consulte Criação de uma pilha na CloudFormation documentação.

DevOps engenheiro

Implante recursos na conta de gerenciamento da AWS Organization.

  1. Faça login na conta de gerenciamento da organização.

  2. Abra o CloudFormation console em https://console.aws.amazon.com/cloudformation/.

  3. Na barra de navegação, escolha o nome da região da AWS exibida no momento. Depois escolha a região us-east-1. Essa região é necessária para que a MoveAccount EventBridge regra possa detectar CloudTrail eventos da AWS associados a mudanças na organização.

  4. Implante o modelo iam-identitycenter-organization. Dê um nome bem definido e descritivo à pilha e atualize os parâmetros conforme as instruções. Para obter instruções, consulte Criação de uma pilha na CloudFormation documentação.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Atualize os conjuntos de permissões e as atribuições.

Quando a EventBridge regra da MoveAccount Amazon detecta modificações nas contas da organização, o pipeline de CI/CD inicia e atualiza automaticamente os conjuntos de permissões. Por exemplo, se você adicionar uma conta a uma UO especificada no arquivo JSON de atribuições, o pipeline de CI/CD aplicará o conjunto de permissões à nova conta.

Se você quiser modificar os conjuntos de permissões e as atribuições implantados, atualize os arquivos JSON e, em seguida, confirme-os no CodeCommit repositório na conta de administrador delegado do IAM Identity Center. Para obter instruções, consulte Criar um commit na CodeCommit documentação.

Observe o seguinte ao usar o pipeline de CI/CD para gerenciar conjuntos de permissões e associações implantados anteriormente:

  • Se você alterar o nome de um conjunto de permissões, o pipeline de CI/CD excluirá o conjunto de permissões original e criará um novo.

  • Esse pipeline gerencia somente conjuntos de permissões que têm a tag SSOPipeline:true.

  • Você pode ter vários conjuntos de permissões e modelos de exercícios na mesma pasta no repositório.

  • Se você excluir um modelo, o pipeline excluirá o conjunto de permissões ou de atribuições.

  • Se você excluir um bloco JSON de atribuição inteiro, o pipeline excluirá a atribuição do Centro de Identidade do IAM.

  • Você não pode excluir um conjunto de permissões atribuído a uma conta da AWS. Primeiro, você deve cancelar a atribuição do conjunto de permissões.

DevOps engenheiro

Solução de problemas

ProblemaSolução

Erros de acesso negado

Confirme se você tem as permissões necessárias para implantar os CloudFormation modelos e os recursos definidos neles. Para obter mais informações, consulte Controle de acesso na CloudFormation documentação.

Erros de pipeline na fase de validação

Esse erro aparecerá se houver algum erro no conjunto de permissões ou nos modelos de atribuição.

  1. Em CodeBuild, veja os detalhes da construção.

  2. No log de compilação, encontre o erro de validação que fornece mais informações sobre o que causou a falha da compilação.

  3. Atualize o conjunto de permissões ou os modelos de atribuição e, em seguida, confirme-os no repositório.

  4. O pipeline de CI/CD reinicia o projeto. CodeBuild Monitore o status para confirmar se o erro de validação foi resolvido.

Recursos relacionados