SEC02-BP03 Armazene e use segredos com segurança - AWS Estrutura Well-Architected

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

SEC02-BP03 Armazene e use segredos com segurança

Uma workload exige um recurso automatizado para comprovar a identidade dela em bancos de dados, recursos e serviços de terceiros. Isso é feito usando credenciais de acesso secretas, como chaves de API acesso, senhas e OAuth tokens. Utilizar um serviço com propósito específico para armazenar, gerenciar e fazer a rotação de credenciais ajuda a reduzir a probabilidade de comprometimento dessas credenciais.

Resultado desejado: implementar um mecanismo para gerenciar com segurança credenciais da aplicação que atinja as seguintes metas:

  • Identificar quais segredos são necessários para a workload.

  • Reduzir o número de credenciais de longo prazo necessárias substituindo-as por credenciais de curto prazo quando possível.

  • Estabelecer um armazenamento seguro e uma rotação automatizada das credenciais de longo prazo restantes.

  • Auditar o acesso aos segredos existentes na workload.

  • Monitorar continuamente para confirmar que nenhum segredo seja incorporado ao código-fonte durante o processo de desenvolvimento.

  • Reduzir a probabilidade de divulgação acidental de credenciais.

Práticas comuns que devem ser evitadas:

  • Ausência de rotação de credenciais.

  • Armazenar credenciais de longo prazo em código-fonte ou arquivos de configuração.

  • Armazenar credenciais em repouso não criptografadas.

Benefícios de implementar esta prática recomendada:

  • Os segredos são armazenados com criptografia em repouso e em trânsito.

  • O acesso às credenciais é bloqueado por meio de uma API (pense nisso como uma máquina de venda automática de credenciais).

  • O acesso a uma credencial (de leitura e gravação) é auditado e registrado.

  • Separação de preocupações: a rotação de credenciais é realizada por um componente separado que pode ser segregado do restante da arquitetura.

  • Os segredos são automaticamente distribuídos sob demanda em componentes de software e a rotação ocorre em um local central.

  • O acesso às credenciais pode ser controlado de forma detalhada.

Nível de risco exposto se esta prática recomendada não for estabelecida: Alto

Orientação para implementação

No passado, as credenciais usadas para autenticação em bancos de dados, terceirosAPIs, tokens e outros segredos poderiam ter sido incorporadas ao código-fonte ou aos arquivos do ambiente. AWS fornece vários mecanismos para armazenar essas credenciais com segurança, alterná-las automaticamente e auditar seu uso.

A melhor forma de abordar o gerenciamento de segredos é seguir as orientações de remover, substituir e fazer a rotação. A credencial mais segura é a que você não precisa armazenar, gerenciar nem processar. Pode haver credenciais que não sejam mais necessárias ao funcionamento da workload que podem ser removidas com segurança.

Para credenciais que ainda são necessárias ao funcionamento adequado da workload, pode haver uma oportunidade de substituir uma credencial de longo prazo por uma credencial temporária ou de curto prazo. Por exemplo, em vez de codificar uma chave de acesso AWS secreta, considere substituir essa credencial de longo prazo por uma credencial temporária usando funções. IAM

Em algumas situações, talvez alguns segredos de longa duração não possam removidos ou substituídos. Esses segredos podem ser armazenados em um serviço, como o AWS Secrets Manager, onde podem ser armazenados, gerenciados e ter a rotação feita centralmente de tempos em tempos.

Uma auditoria do código-fonte da workload e os arquivos de configuração podem revelar muitos tipos de credencial. A seguinte tabela resume as estratégias para lidar com tipos comuns de credenciais:

Tipo de credencial Descrição Estratégia sugerida
IAMchaves de acesso AWS IAMchaves de acesso e secretas usadas para assumir IAM funções dentro de uma carga de trabalho Substituir: em vez disso, use IAMfunções atribuídas às instâncias de computação (como Amazon EC2 ou AWS Lambda). Para interoperabilidade com terceiros que precisam de acesso a recursos em sua conta Conta da AWS, pergunte se eles oferecem suporte ao acesso AWS entre contas. Para aplicações móveis, considere usar credenciais temporárias nos bancos de identidades do Amazon Cognito (identidades federadas). Para cargas de trabalho executadas fora do AWS, considere IAMRoles Anywhere ou AWS Systems Manager Hybrid Activations.
SSHchaves Chaves privadas do Secure Shell usadas para fazer login em EC2 instâncias Linux, manualmente ou como parte de um processo automatizado Substituir: use o AWS Systems Manager ou o EC2Instance Connect para fornecer acesso programático e humano às EC2 instâncias usando IAM funções.
Credenciais de aplicações e bancos de dados Senhas: sequência de texto simples Rotação: armazene as credenciais no AWS Secrets Manager e estabeleça a rotação automática, se possível.
Credenciais do Amazon RDS e Aurora Admin Database Senhas: sequência de texto simples Substitua: use a integração do Secrets Manager com o Amazon RDS ou o Amazon Aurora. Além disso, alguns tipos RDS de banco de dados podem usar IAM funções em vez de senhas para alguns casos de uso (para obter mais detalhes, consulte autenticação IAM de banco de dados).
OAuthfichas Tokens secretos: sequência de texto simples Rotação: armazene tokens no AWS Secrets Manager e configure a rotação automática.
APItokens e chaves Tokens secretos: sequência de texto simples Rotação: armazene no AWS Secrets Manager e estabeleça a rotação automática, se possível.

Um antipadrão comum é incorporar chaves de IAM acesso no código-fonte, nos arquivos de configuração ou nos aplicativos móveis. Quando for necessária uma chave de IAM acesso para se comunicar com um AWS serviço, use credenciais de segurança temporárias (de curto prazo). Essas credenciais de curto prazo podem ser fornecidas por meio de IAMfunções para EC2 instâncias, funções de execução para funções Lambda, funções do Cognito para IAM acesso de usuários móveis e políticas do IoT Core para dispositivos de IoT. Ao interagir com terceiros, prefira delegar acesso a uma IAM função com o acesso necessário aos recursos da sua conta em vez de configurar um IAM usuário e enviar a terceiros a chave de acesso secreta desse usuário.

Há muitos casos em que a carga de trabalho exige o armazenamento dos segredos necessários para interoperar com outros serviços e recursos. AWS Secrets Managerfoi criado especificamente para gerenciar com segurança essas credenciais, bem como o armazenamento, o uso e a rotação de API tokens, senhas e outras credenciais.

AWS Secrets Manager fornece cinco recursos principais para garantir o armazenamento e o manuseio seguros de credenciais confidenciais: criptografia em repouso, criptografia em trânsito, auditoria abrangente, controle de acesso refinado e rotação extensível de credenciais. Outros serviços de gerenciamento de segredos de parceiros da AWS ou soluções desenvolvidas localmente que oferecem recursos e garantias semelhantes também são aceitáveis.

Etapas de implementação

  1. Identifique caminhos de código contendo credenciais codificadas usando ferramentas automatizadas, como a Amazon. CodeGuru

    1. Use CodeGuru a Amazon para escanear seus repositórios de código. Quando a revisão estiver concluída, filtre CodeGuru para encontrar linhas de código problemáticas. Type=Secrets

  2. Identifique credenciais que possam ser removidas ou substituídas.

    1. Identifique credenciais não mais necessárias e marque-as para remoção.

    2. Para chaves AWS secretas incorporadas ao código-fonte, substitua-as por IAM funções associadas aos recursos necessários. Se parte de sua carga de trabalho for externa AWS , mas exigir IAM credenciais para acessar AWS recursos, considere IAMRoles Anywhere ou AWS Systems Manager Hybrid Activations.

  3. Para outros segredos duradouros de terceiros que exijam o uso da estratégia de rotação, integre o Secrets Manager ao seu código para recuperar segredos de terceiros em tempo de execução.

    1. O CodeGuru console pode criar automaticamente um segredo no Secrets Manager usando as credenciais descobertas.

    2. Integre a recuperação de segredos do Secrets Manager ao código da sua aplicação.

      1. As funções do Lambda sem servidor podem usar uma extensão do Lambda independente de linguagem.

      2. Para EC2 instâncias ou contêineres, AWS fornece exemplos de código do lado do cliente para recuperar segredos do Secrets Manager em várias linguagens de programação populares.

  4. Revise periodicamente sua base de código e verifique novamente para confirmar se não há novos segredos adicionados ao código.

    1. Considere usar uma ferramenta como git-secrets para evitar a confirmação de novos segredos em seu repositório de código-fonte.

  5. Monitore a atividade do Secrets Manager em busca de indicações de uso inesperado, acesso inadequado a segredos ou tentativas de exclusão de segredos.

  6. Reduza a exposição humana às credenciais. Restrinja o acesso para leitura, gravação e modificação de credenciais a uma IAM função dedicada a essa finalidade e forneça acesso para assumir a função somente a um pequeno subconjunto de usuários operacionais.

Recursos

Práticas recomendadas relacionadas:

Documentos relacionados:

Vídeos relacionados:

Workshops relacionados: