Gere dinamicamente uma política do IAM com o IAM Access Analyzer usando Step Functions - 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á.

Gere dinamicamente uma política do IAM com o IAM Access Analyzer usando Step Functions

Criado por Thomas Scott (AWS), Adil El Kanabi (AWS), Koen van Blijderveen (AWS) e Rafal Pawlaszek (AWS)

Repositório de código: Gerador de políticas de funções do Automated IAM Access Analyzer

Ambiente: PoC ou piloto

Tecnologias: segurança, identidade, conformidade; tecnologia sem servidor

Serviços da AWS: AWS IAM Access Analyzer; AWS Lambda; AWS Step Functions; AWS Identity and Access Management

Resumo

Privilégio mínimo é a prática recomendada de segurança para conceder as permissões mínimas necessárias para executar uma tarefa. Implementar o acesso com privilégios mínimos em uma conta já ativa da Amazon Web Services (AWS) pode ser um desafio, pois você não quer impedir involuntariamente que os usuários realizem suas tarefas alterando suas permissões. Antes de implementar mudanças de política do AWS Identity and Access Management (IAM), é necessário entender as ações e recursos que os usuários da conta estão realizando.

Esse padrão foi projetado para ajudá-lo a aplicar o princípio do acesso com privilégios mínimos, sem bloquear ou diminuir a produtividade da equipe. Ele descreve como usar o IAM Access Analyzer e o AWS Step Functions para gerar dinamicamente uma política up-to-date do IAM para sua função, com base nas ações que estão sendo executadas atualmente na conta. A nova política foi projetada para permitir a atividade atual, mas remover quaisquer privilégios elevados e desnecessários. Você pode personalizar a política gerada definindo regras de permissão e negação, e a solução integra suas regras personalizadas.

Esse padrão inclui opções para implementar a solução com o AWS Cloud Development Kit (AWS CDK) ou o HashiCorp CDK for Terraform (CDKTF). É possível então associar a nova política à função usando um pipeline de integração e entrega contínuas (CI/CD). Se você tiver uma arquitetura de várias contas, poderá implantar essa solução em qualquer conta em que queira gerar políticas atualizadas do IAM para as funções, aumentando a segurança de todo o seu ambiente de Nuvem AWS.

Pré-requisitos e limitações

Pré-requisitos

Limitações

  • Esse padrão não aplica a nova política do IAM ao perfil. No final dessa solução, a nova política do IAM é armazenada em um CodeCommit repositório. Você pode usar um pipeline de CI/CD para aplicar políticas às funções em sua conta.

Arquitetura

Arquitetura de destino

O fluxo de trabalho do Step Functions gerando uma nova política e armazenando-a nela CodeCommit.
  1. Uma regra de EventBridge evento regular da Amazon inicia um fluxo de trabalho de Step Functions. Você define esse cronograma de regeneração como parte da configuração dessa solução.

  2. No fluxo de trabalho do Step Functions, uma função Lambda gera os intervalos de datas a serem usados ao analisar a atividade da conta nos CloudTrail registros.

  3. A próxima etapa do fluxo de trabalho chama a API IAM Access Analyzer para começar a gerar a política.

  4. Usando o Amazon Resource Name (ARN) da função que você especifica durante a configuração, o IAM Access Analyzer analisa os CloudTrail registros de atividades dentro da taxa de data especificada. Com base na atividade, o IAM Access Analyzer gera uma política do IAM que permite somente as ações e serviços usados pela função durante o intervalo de datas especificado. Quando essa etapa for concluída, ela gerará uma ID de trabalho.

  5. A próxima etapa do fluxo de trabalho verifica o ID do trabalho a cada 30 segundos. Quando o ID do trabalho é detectado, essa etapa usa o ID do trabalho para chamar a API IAM Access Analyzer e recuperar a nova política do IAM. O IAM Access Analyzer retorna a política como um arquivo JSON.

  6. A próxima etapa do fluxo de trabalho coloca o arquivo <IAM role name>/policy.json em um bucket do Amazon Simple Storage Service (Amazon S3). Você define esse bucket do S3 como parte da configuração dessa solução.

  7. Uma notificação de eventos do Amazon S3 inicia uma função do Lambda.

  8. A função Lambda recupera a política do bucket do S3, integra as regras personalizadas que você define nos arquivos allow.json e deny.json e, em seguida, envia a política atualizada para. CodeCommit Você define o CodeCommit repositório, a ramificação e o caminho da pasta como parte da configuração dessa solução.

Ferramentas

Serviços da AWS

  • O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.

  • O AWS CDK Toolkit é um kit de desenvolvimento de nuvem de linha de comando que ajuda você a interagir com seu aplicativo AWS Cloud Development Kit (AWS CDK).

  • CloudTrailA AWS ajuda você a auditar a governança, a conformidade e o risco operacional da sua conta da AWS.

  • 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.

  • 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. Esse padrão usa o IAM Access Analyzer, um recurso do IAM, para analisar seus CloudTrail registros e identificar ações e serviços que foram usados por uma entidade do IAM (usuário ou função) e, em seguida, gerar uma política do IAM com base nessa atividade.

  • O AWS Lambda é um serviço de computação que ajuda você 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.

  • 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.

  • O AWS Step Functions é um serviço de orquestração com tecnologia sem servidor que permite combinar funções do Lambda e outros serviços da para criar aplicações essenciais aos negócios. Nesse padrão, você usa as integrações de serviços do AWS SDK no Step Functions para chamar ações de API de serviço a partir do seu fluxo de trabalho.

Outras ferramentas

  • O CDK for Terraform (CDKTF) ajuda você a definir infraestrutura como código (IaC) usando linguagens de programação comuns, como Python e Typescript.

  • O Lerna é um sistema de compilação para gerenciar e publicar vários TypeScript pacotes JavaScript ou pacotes do mesmo repositório.

  • O Node.js é um ambiente de tempo de JavaScript execução orientado a eventos projetado para criar aplicativos de rede escaláveis.

  • O npm é um registro de software executado em um ambiente Node.js e usado para compartilhar ou emprestar pacotes e gerenciar a implantação de pacotes privados.

Repositório de código

O código desse padrão está disponível no repositório do GitHub Automated IAM Access Analyzer Role Policy Generator.

Épicos

TarefaDescriçãoHabilidades necessárias

Clone o repositório.

O comando a seguir clona o repositório Automated IAM Access Analyze Role Policy Generator (GitHub).

git clone https://github.com/aws-samples/automated-iam-access-analyzer.git
Desenvolvedor de aplicativos

Instale o Lerna.

O comando a seguir instala o Lerna.

npm i -g lerna
Desenvolvedor de aplicativos

Configure as dependências.

O comando a seguir instala as dependências do repositório.

cd automated-iam-access-advisor/ npm install && npm run bootstrap
Desenvolvedor de aplicativos

Crie o código.

O comando a seguir testa, cria e prepara os pacotes zip das funções do Lambda.

npm run test:code npm run build:code npm run pack:code
Desenvolvedor de aplicativos

Construa as estruturas.

O comando a seguir cria os aplicativos de síntese da infraestrutura, tanto para o AWS CDK quanto para o CDKTF.

npm run build:infra

Configure todas as permissões personalizadas.

Na pasta repo do repositório clonado, edite os arquivos allow.json e deny.json para definir quaisquer permissões personalizadas para a função. Se os arquivos allow.json e deny.json contiverem a mesma permissão, a permissão deny será aplicada.

Administrador da AWS, desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Implante a pilha de CDK da AWS.

O comando a seguir implanta a infraestrutura por meio da AWS CloudFormation. Defina os seguintes parâmetros:

  • <NAME_OF_ROLE> – O ARN do perfil do IAM para a qual você está criando uma nova política.

  • <TRAIL_ARN>— O ARN da CloudTrail trilha na qual a atividade da função é armazenada.

  • <CRON_EXPRESSION_TO_RUN_SOLUTION> – A expressão Cron que define o cronograma de regeneração da política. O fluxo de trabalho do Step Functions é executado nesse cronograma.

  • <TRAIL_LOOKBACK> – O período, em dias, para relembrar a trilha ao avaliar as permissões da função.

cd infra/cdk cdk deploy —-parameters roleArn=<NAME_OF_ROLE> \ —-parameters trailArn=<TRAIL_ARN> \ --parameters schedule=<CRON_EXPRESSION_TO_RUN_SOLUTION> \ [ --parameters trailLookBack=<TRAIL_LOOKBACK> ]

Nota – Os colchetes indicam parâmetros opcionais.

Desenvolvedor de aplicativos

(Opcional) Aguarde a nova política.

Se a trilha não contiver uma quantidade razoável de atividades históricas para a função, espere até ter certeza de que há atividade registrada suficiente para que o IAM Access Analyzer gere uma política precisa. Se a função estiver ativa na conta por um período suficiente, esse período de espera talvez não seja necessário.

Administrador da AWS

Revise manualmente a política gerada.

No seu CodeCommit repositório, revise o arquivo.json <ROLE_ARN>gerado para confirmar se as permissões de permissão e negação são apropriadas para a função.

Administrador da AWS
TarefaDescriçãoHabilidades necessárias

Sintetize o modelo do Terraform.

O comando a seguir sintetiza o modelo do Terraform.

lerna exec cdktf synth --scope @aiaa/tfm
Desenvolvedor de aplicativos

Implante o modelo do Terraform.

O comando a seguir navega até o diretório que contém a infraestrutura definida pelo CDKTF.

cd infra/cdktf

O comando a seguir implanta a infraestrutura na conta de destino da AWS. Defina os seguintes parâmetros:

  • <account_ID> – O ID da conta de destino.

  • <region> – A região da AWS alvo.

  • <selected_role_ARN> – O ARN do perfil do IAM para a qual você está criando uma nova política.

  • <trail_ARN>— O ARN da CloudTrail trilha na qual a atividade da função é armazenada.

  • <schedule_expression> – A expressão Cron que define o cronograma de regeneração da política. O fluxo de trabalho do Step Functions é executado nesse cronograma.

  • <trail_look_back> – O período, em dias, para relembrar a trilha ao avaliar as permissões da função.

TF_VAR_accountId=<account_ID> \ TF_VAR_region=<region> \ TF_VAR_roleArns=<selected_role_ARN> \ TF_VAR_trailArn=<trail_ARN> \ TF_VAR_schedule=<schedule_expression> \ [ TF_VAR_trailLookBack=<trail_look_back> ] \ cdktf deploy

Nota – Os colchetes indicam parâmetros opcionais.

Desenvolvedor de aplicativos

(Opcional) Aguarde a nova política.

Se a trilha não contiver uma quantidade razoável de atividades históricas para a função, espere até ter certeza de que há atividade registrada suficiente para que o IAM Access Analyzer gere uma política precisa. Se a função estiver ativa na conta por um período suficiente, esse período de espera talvez não seja necessário.

Administrador da AWS

Revise manualmente a política gerada.

No seu CodeCommit repositório, revise o arquivo.json <ROLE_ARN>gerado para confirmar se as permissões de permissão e negação são apropriadas para a função.

Administrador da AWS

Recursos relacionados

Recursos da AWS

Outros recursos