Proteger variáveis ​​de ambiente no Lambda - AWS Lambda

Proteger variáveis ​​de ambiente no Lambda

Para proteger suas variáveis de ambiente, você pode usar a criptografia do lado do servidor para proteger seus dados em repouso e a criptografia do lado do cliente para proteger seus dados em trânsito.

nota

Para aumentar a segurança do banco de dados, recomendamos que você use o AWS Secrets Manager em vez de variáveis ​​de ambiente para armazenar as credenciais do banco de dados. Para ter mais informações, consulte Usar o AWS Lambda com o Amazon RDS.

Segurança em repouso

O Lambda sempre fornece criptografia do lado do servidor em repouso com AWS KMS key. Por padrão, o Lambda usa um Chave gerenciada pela AWS. Se esse comportamento padrão for adequado ao fluxo de trabalho, você não precisará configurar mais nada. O Lambda cria o Chave gerenciada pela AWS em sua conta e gerencia permissões para você. AWS não cobra para usar esta chave.

Se você preferir, pode fornecer uma AWS KMS chave gerenciada pelo cliente. Você pode fazer isso para ter controle sobre a alternância da chave KMS ou para atender aos requisitos de sua organização para gerenciar chaves KMS. Quando você fornece uma chave gerenciada pelo cliente, somente os usuários em sua conta com acesso à chave KMS podem visualizar ou gerenciar variáveis de ambiente na função.

As chaves gerenciadas pelo cliente incorrem em cobranças do AWS KMS padrão. Para obter mais informações, consulte Preços do AWS Key Management Service.

Segurança em trânsito

Para segurança adicional, você pode habilitar auxiliares para criptografia em trânsito, o que garante que suas variáveis de ambiente sejam criptografadas no lado do cliente para proteção em trânsito.

Para configurar a criptografia para suas variáveis de ambiente
  1. Usar a AWS Key Management Service (AWS KMS) para criar quaisquer chaves gerenciadas pelo cliente para o Lambda usar para criptografia do lado do cliente e do servidor. Para obter mais informações, consulte Criar chaves no AWS Key Management Service Guia do desenvolvedor.

  2. Usando o console do Lambda, navegue até a página Editar variáveis de ambiente.

    1. Abra a página Funções do console do Lambda.

    2. Escolha uma função.

    3. Selecione Configuração e, depois, escolha Variáveis de ambiente na barra de navegação à esquerda.

    4. Em Variáveis de ambiente, selecione Editar.

    5. Expanda Encryption configuration (Configuração de criptografia).

  3. (Opcional) Habilite os auxiliares de criptografia do console para usar a criptografia do lado do cliente com a finalidade de proteger os dados em trânsito.

    1. Em Criptografia em trânsito, escolha Habilitar auxiliares para criptografia em trânsito.

    2. Para cada variável de ambiente na qual deseja habilitar os auxiliares de criptografia do console, escolha Encrypt (Criptografar) ao lado da variável de ambiente.

    3. Em AWS KMS key para criptografar em trânsito, escolha uma chave gerenciada pelo cliente criada no início deste procedimento.

    4. Selecione Política da função de execução e copie a política. Essa política concede permissão à função de execução de sua função para descriptografar variáveis de ambiente.

      Salve essa política para usar na última etapa deste procedimento.

    5. Adicione à sua função o código que descriptografa as variáveis de ambiente. Para ver um exemplo, escolha Snippet de descriptografia de segredos.

  4. (Opcional) Especifique a chave gerenciada pelo cliente para a criptografia em repouso.

    1. Escolha Uso de chave primária do cliente.

    2. Escolha uma chave gerenciada pelo cliente que você criou no início deste procedimento.

  5. Escolha Salvar.

  6. Configurar permissões

    Se você estiver usando uma chave gerenciada pelo cliente com criptografia do lado do servidor, conceda permissões a todos os usuários ou perfis que deseja visualizar ou gerenciar variáveis ​​de ambiente na função. Para ter mais informações, consulte Gerenciar permissões para a chave KMS de criptografia do lado do servidor.

    Se você estiver habilitando a criptografia do lado do cliente para segurança em trânsito, sua função precisará de permissão para chamar o método operação da API kms:Decrypt. Adicione a política que você salvou anteriormente à Função de execução neste procedimento.

Gerenciar permissões para a chave KMS de criptografia do lado do servidor

Para usar a chave de criptografia padrão, não é necessária nenhuma permissão do AWS KMS para o usuário ou para a função de execução da função. Para usar uma chave gerenciada pelo cliente, é necessário permissão para usar a chave. O Lambda usa essas permissões para criar uma concessão na chave. Isso permite que o Lambda use-a para criptografia.

  • kms:ListAliases: para visualizar as teclas no console do Lambda.

  • kms:CreateGrant, kms:Encrypt – para configurar uma chave gerenciada pelo cliente em uma função.

  • kms:Decrypt – para visualizar e gerenciar variáveis de ambiente criptografadas com uma chave gerenciada pelo cliente.

É possível obter essas permissões em sua Conta da AWS ou na política de permissões baseada em recursos de uma chave. ListAliases é fornecido pelas políticas gerenciadas para o Lambda. As políticas de chave concedem as permissões restantes aos usuários no grupo Usuários de chaves.

Os usuários sem permissões Decrypt ainda poderão gerenciar funções, mas não poderão visualizar variáveis de ambiente nem gerenciá-las no console do Lambda. Para impedir que um usuário visualize variáveis de ambiente, adicione uma declaração às permissões do usuário que negue o acesso à chave padrão, a uma chave gerenciada pelo cliente ou a todas as chaves.

exemplo Política do IAM: negar acesso pelo ARN da chave
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:111122223333:key/3be10e2d-xmpl-4be4-bc9d-0405a71945cc" } ] }

Para obter detalhes sobre como gerenciar permissões de chave, consulte Key policies in AWS KMS no Guia do desenvolvedor do AWS Key Management Service.