Usar a assinatura de código para verificar integridade de código com o Lambda - AWS Lambda

Usar a assinatura de código para verificar integridade de código com o Lambda

A assinatura de código para AWS Lambda ajuda a garantir que apenas código confiável seja executado em suas funções do Lambda. Quando você habilita a assinatura de código para uma função, o Lambda verifica cada implantação de código e se o pacote de código é assinado por uma fonte confiável.

nota

Funções definidas como imagens de contêiner não são compatíveis com assinatura de código.

Para verificar a integridade do código, use o AWS Signer para criar pacotes de código assinados digitalmente para funções e camadas. Quando um usuário tenta implantar um pacote de código, o Lambda executa verificações de validação no pacote de código antes de aceitar a implantação. Como as verificações de validação de assinatura de código são executadas no momento da implantação, não há impacto na performance durante a execução da função.

Você também usa o AWS Signer para criar perfis de assinatura. Você usa um perfil de assinatura para criar o pacote de código assinado. Use o AWS Identity and Access Management (IAM) para controlar quem pode assinar pacotes de código e criar perfis de assinatura. Para obter mais informações, consulte Controle de acesso e autenticação no Guia do desenvolvedor do AWS Signer.

As camadas do Lambda seguem o mesmo formato de pacote de código assinado que os pacotes de código de função. Quando você adiciona uma camada a uma função que tem a assinatura de código ativada, o Lambda verifica se a camada está assinada por um perfil de assinatura permitido. Quando você habilita a assinatura de código para uma função, todas as camadas adicionadas à função também devem ser assinadas por um dos perfis de assinatura permitidos.

Você pode configurar a assinatura de código para registrar as alterações do AWS CloudTrail. Implantações bem-sucedidas e bloqueadas para funções são registradas no CloudTrail com informações sobre as verificações de assinatura e validação.

Não há custo adicional para usar o AWS Signer ou assinatura de código para o AWS Lambda.

Validação de assinatura

O Lambda executa as seguintes verificações de validação ao implantar um pacote de código assinado na sua função:

  1. Integridade — valida se o pacote de código não foi modificado desde que foi assinado. O Lambda compara o hash do pacote com o hash da assinatura.

  2. Expiração valida se a assinatura do pacote de código não expirou.

  3. Incompatibilidade: valida se o pacote de código está assinado com um dos perfis de assinatura permitidos para a função do Lambda. Uma incompatibilidade também ocorre se uma assinatura não estiver presente.

  4. Revogação: valida se a assinatura do pacote de código não foi revogada.

A política de validação de assinatura definida na configuração da assinatura de código determina qual das seguintes ações serão executadas pelo Lambda se alguma das verificações de validação falhar:

  • Avisar — O Lambda permite a implantação do pacote de código, mas emite um aviso. O Lambda emite uma nova métrica do Amazon CloudWatch e também armazena o aviso no log do CloudTrail.

  • Impor: o Lambda emite um aviso (o mesmo que para a ação Avisar) e bloqueia a implantação do pacote de código.

Você pode configurar a política para as verificações de validação de expiração, incompatibilidade e revogação. Observe que não é possível configurar uma política para a verificação de integridade. Se a verificação de integridade falhar, o Lambda bloqueia a implantação.

Configurar assinatura de código com a API do Lambda

Para gerenciar configurações de assinatura de código com a AWS CLI ou o AWS SDK ou, use as seguintes operações de API:

Para gerenciar a configuração de assinatura de código de uma função, use as seguintes operações de API: