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á.
Valide e implante automaticamente políticas e funções do IAM em uma conta da AWS usando o CodePipeline IAM Access Analyzer e macros da AWS CloudFormation
Criado por Helton Ribeiro (AWS) e Guilherme Simoes (AWS)
Resumo
Aviso: CodeCommit A AWS não está mais disponível para novos clientes. Os clientes atuais da AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais
Esse padrão descreve as etapas e fornece código para criar um pipeline de implantação que permite que suas equipes de desenvolvimento criem políticas e perfis do AWS Identity and Access Management (IAM) em suas contas da Amazon Web Services (AWS). Essa abordagem ajuda sua organização a reduzir a sobrecarga de suas equipes operacionais e acelerar o processo de implantação. Também ajuda seus desenvolvedores a criar funções e políticas do IAM que sejam compatíveis com seus controles de governança e segurança existentes.
A abordagem desse padrão usa o AWS Identity and Access Management Access Analyzer para validar as políticas do IAM que você deseja anexar às funções do IAM e usa a AWS CloudFormation para implantar as funções do IAM. No entanto, em vez de editar diretamente o arquivo de CloudFormation modelo da AWS, sua equipe de desenvolvimento cria políticas e funções do IAM formatadas em JSON. Uma CloudFormation macro da AWS transforma esses arquivos de política formatados em JSON em tipos de recursos CloudFormation do AWS IAM antes de iniciar a implantação.
O pipeline de implantação (RolesPipeline
) tem estágios de origem, validação e implantação. Durante o estágio de origem, sua equipe de desenvolvimento envia os arquivos JSON que contêm a definição das funções e políticas do IAM para um repositório da AWS CodeCommit . CodeBuild Em seguida, a AWS executa um script para validar esses arquivos e os copia em um bucket do Amazon Simple Storage Service (Amazon S3). Como suas equipes de desenvolvimento não têm acesso direto ao arquivo de CloudFormation modelo da AWS armazenado em um bucket S3 separado, elas devem seguir o processo de criação e validação do arquivo JSON.
Finalmente, durante a fase de implantação, a AWS CodeDeploy usa uma CloudFormation pilha da AWS para atualizar ou excluir as políticas e funções do IAM em uma conta.
Importante
O fluxo de trabalho desse padrão é uma prova de conceito (POC) e recomendamos que você o use somente em um ambiente de teste. Se você quiser usar a abordagem desse padrão em um ambiente de produção, consulte Práticas recomendadas de segurança em IAM na documentação do IAM e faça as alterações necessárias nos seus perfis do IAM e nos serviços da AWS.
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Um bucket S3 novo ou existente para o pipeline
RolesPipeline
. Garanta que as credenciais de acesso que você está usando tenham permissões para carregar objetos nesse bucket.AWS Command Line Interface (AWS CLI), instalada e configurada. Para obter mais informações, consulte Instalação, atualização e desinstalação da AWS CLI na documentação da AWS CLI.
CLI do AWS Serverless Application Model (AWS SAM), instalada e configurada. Para obter mais informações sobre isso, consulte Instalação da CLI do AWS SAM na documentação do AWS SAM.
Python 3, instalado na sua máquina local. Para obter mais informações, consulte a documentação do Pyton
. Um cliente Git, instalado e configurado.
O GitHub
IAM roles pipeline
repositório, clonado em sua máquina local.Políticas e perfis do IAM existentes em formato JSON. Para obter mais informações sobre isso, consulte o ReadMe
arquivo no IAM roles pipeline
repositório Github.Sua equipe de desenvolvedores não deve ter permissões para editar a AWS e CodePipeline CodeBuild os CodeDeploy recursos dessa solução.
Limitações
O fluxo de trabalho desse padrão é uma prova de conceito (POC) e recomendamos que você o use somente em um ambiente de teste. Se você quiser usar a abordagem desse padrão em um ambiente de produção, consulte Práticas recomendadas de segurança em IAM na documentação do IAM e faça as alterações necessárias nos seus perfis do IAM e nos serviços da AWS.
Arquitetura
O diagrama a seguir mostra como validar e implantar automaticamente funções e políticas do IAM em uma conta usando o CodePipeline IAM Access Analyzer e macros da AWS CloudFormation .

O diagrama mostra o seguinte fluxo de trabalho:
Um desenvolvedor grava arquivos JSON que contêm as definições das políticas e perfis do IAM. O desenvolvedor envia o código para um CodeCommit repositório e, em CodePipeline seguida, inicia o pipeline.
RolesPipeline
CodeBuild valida os arquivos JSON usando o IAM Access Analyzer. Se houver alguma descoberta relacionada a erros ou segurança, o processo de implantação será interrompido.
Se não houver descobertas relacionadas a erros ou segurança, os arquivos JSON serão enviados para o bucket do S3
RolesBucket
.Em seguida, uma CloudFormation macro da AWS implementada como uma função do AWS Lambda lê os arquivos JSON do
RolesBucket
bucket e os transforma em tipos de recursos do AWS CloudFormation IAM.Uma CloudFormation pilha predefinida da AWS instala, atualiza ou exclui as políticas e funções do IAM na conta.
Automação e escala
CloudFormation Os modelos da AWS que implantam automaticamente esse padrão são fornecidos no repositório do pipeline de funções GitHub do IAM
Ferramentas
A AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.
O IAM Access Analyzer ajuda você a identificar os recursos em sua organização e suas contas, como buckets do S3 ou funções do IAM, que são compartilhados com uma entidade externa. Isso ajuda a identificar o acesso não intencional aos seus recursos e dados.
O AWS Serverless Application Model (AWS SAM) é uma estrutura de código aberto que ajuda na criação de aplicativos sem servidor na Nuvem AWS.
Código
O código-fonte e os modelos desse padrão estão disponíveis no repositório do pipeline de funções GitHub do IAM
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clone o repositório de amostras. | Clone o repositório do pipeline de funções GitHub do IAM | Desenvolvedor de aplicativos, AWS geral |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Implante o pipeline. |
| Desenvolvedor de aplicativos, AWS geral |
Clone o repositório do pipeline. |
| Desenvolvedor de aplicativos, AWS geral |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Teste o RolesPipeline pipeline com políticas e funções válidas do IAM. |
| Desenvolvedor de aplicativos, AWS geral |
Teste o RolesPipeline pipeline com políticas e funções inválidas do IAM. |
| Desenvolvedor de aplicativos, AWS geral |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Preparar para a limpeza. | Esvazie os buckets do S3 e execute o comando | Desenvolvedor de aplicativos, AWS geral |
Exclua a RolesStack pilha. |
| Desenvolvedor de aplicativos, AWS geral |
Exclua a RolesPipeline pilha. | Para excluir a CloudFormation pilha | Desenvolvedor de aplicativos, AWS geral |
Recursos relacionados
Validação de política do IAM Access Analyzer
(Blog da notícias da AWS) Usando CloudFormation macros da AWS para realizar processamento personalizado em modelos ( CloudFormation documentação da AWS)
Criar funções do Lambda com Python (documentação do AWS Lambda)