Configurar a assinatura de código para o AWS Lambda - AWS Lambda

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

Configurar a assinatura de código para o AWS 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.

Para ativar a assinatura de código para uma função, crie uma configuração de assinatura de código e associe-a à função. Uma configuração de assinatura de código define uma lista de perfis de assinatura permitidos e a ação de política a ser executada se alguma das verificações de validação falhar.

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.

Use o IAM para controlar quem pode criar configurações de assinatura de código. Normalmente, você permite que apenas usuários administrativos específicos tenham essa capacidade. Além disso, você pode configurar políticas do IAM para impor que os desenvolvedores criem apenas funções que tenham a assinatura de código ativada.

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.

Você pode configurar a assinatura de código para suas funções usando o console do Lambda, a AWS Command Line Interface (AWS CLI), o AWS CloudFormation e o AWS Serverless Application Model (AWS SAM).

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.

Pré-requisitos de configuração

Antes de configurar a assinatura de código para uma função do Lambda, use o AWS Signer para fazer o seguinte:

  • Criar um ou mais perfis de assinatura.

  • Usar um perfil de assinatura para criar um pacote de código assinado para sua função.

Para obter mais informações, consulte Criar perfis de assinatura (Console) no Guia do desenvolvedor doAWS Signer.

Criar configurações de assinatura de código

Uma configuração de assinatura de código define uma lista dos perfis de assinatura permitidos e a política de validação de assinatura.

Para criar uma configuração de assinatura de código (console)
  1. Abra a página Code signing configurations (Configurações de assinatura de código) do console do Lambda.

  2. Escolha Criar configuração.

  3. Em Description (Descrição), insira um nome descritivo para a configuração.

  4. Em Signing profiles (Perfis de assinatura), adicione até 20 perfis de assinatura à configuração.

    1. Para Signing profile version ARN (ARN da versão do perfil de assinatura), escolha o nome de recurso da Amazon (ARN) de uma versão de perfil ou insira o ARN.

    2. Para adicionar um perfil de assinatura adicional, escolha Add signing profiles (Adicionar perfis de assinatura).

  5. Em Signature validation policy (Política de validação de assinatura), escolha Warn (Avisar) ou Enforce (Impor).

  6. Escolha Criar configuração.

Atualizar uma configuração de assinatura de código

Quando você atualiza uma configuração de assinatura de código, as alterações afetam as implantações futuras de funções que têm a configuração de assinatura de código anexada.

Para atualizar uma configuração de assinatura de código (console)
  1. Abra a página Code signing configurations (Configurações de assinatura de código) do console do Lambda.

  2. Selecione uma configuração de assinatura de código a ser atualizada e escolha Edit (Editar).

  3. Em Description (Descrição), insira um nome descritivo para a configuração.

  4. Em Signing profiles (Perfis de assinatura), adicione até 20 perfis de assinatura à configuração.

    1. Para Signing profile version ARN (ARN da versão do perfil de assinatura), escolha o nome de recurso da Amazon (ARN) de uma versão de perfil ou insira o ARN.

    2. Para adicionar um perfil de assinatura adicional, escolha Add signing profiles (Adicionar perfis de assinatura).

  5. Em Signature validation policy (Política de validação de assinatura), escolha Warn (Avisar) ou Enforce (Impor).

  6. Escolha Salvar alterações.

Excluir uma configuração de assinatura de código

Uma configuração de assinatura de código pode ser excluída somente se nenhuma função estiver usando-a.

Para excluir uma configuração de assinatura de código (console)
  1. Abra a página Code signing configurations (Configurações de assinatura de código) do console do Lambda.

  2. Selecione uma configuração de assinatura de código a ser excluída e escolha Delete (Excluir).

  3. Para confirmar, escolha Delete (Excluir) novamente.

Habilitar a assinatura de código para uma função

Para habilitar a assinatura de código para uma função, associe uma configuração de assinatura de código à função.

Para associar uma configuração de assinatura de código a uma função (console)
  1. Abra a página Funções do console do Lambda.

  2. Escolha a função para a qual deseja ativar a assinatura de código.

  3. Abra a guia Configuration (Configuração).

  4. Role para baixo e escolha Assinatura de código.

  5. Selecione a opção Editar.

  6. Em Edit code signing (Editar assinatura de código), escolha uma configuração de assinatura de código para esta função.

  7. Escolha Salvar.

Configurar políticas do IAM

Para conceder permissão a um usuário para acessar as operações da API de assinatura de código, anexe uma ou mais instruções de política à política do usuário. Para obter mais informações sobre políticas de usuário, consulte Políticas do IAM baseadas em identidade para o Lambda.

A instrução da política de exemplo a seguir concede permissão para criar, atualizar e recuperar configurações de assinatura de código.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CreateCodeSigningConfig", "lambda:UpdateCodeSigningConfig", "lambda:GetCodeSigningConfig" ], "Resource": "*" } ] }

Os administradores podem usar a chave de condição CodeSigningConfigArn para especificar as configurações de assinatura de código que os desenvolvedores devem usar para criar ou atualizar suas funções.

O exemplo de declaração de política a seguir concede permissão para criar uma função. A declaração de política inclui umlambda:CodeSigningConfigArnpara especificar a configuração de assinatura de código permitida. O Lambda bloqueia qualquerCreateFunctionSolicitação de API seCodeSigningConfigArnestá ausente ou não corresponde ao valor na condição.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReferencingCodeSigningConfig", "Effect": "Allow", "Action": [ "lambda:CreateFunction", ], "Resource": "*", "Condition": { "StringEquals": { "lambda:CodeSigningConfigArn": “arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0d4518bd353a0a7c6” } } } ] }

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: