Use AWS Secrets Manager segredos em AWS Lambda funções - AWS Secrets Manager

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

Use AWS Secrets Manager segredos em AWS Lambda funções

Você pode usar a extensão Lambda de AWS parâmetros e segredos para recuperar e armazenar segredos AWS Secrets Manager em funções do Lambda sem usar um SDK. Recuperar um segredo armazenado em cache é mais rápido do que recuperá-lo do Secrets Manager. Como há um custo para ligar para o Secrets Manager APIs, usar um cache pode reduzir seus custos. A extensão pode recuperar segredos do Secrets Manager e parâmetros do Parameter Store. Para obter informações sobre o Parameter Store, consulte Parameter Store integration with Lambda extensions (Integração do Parameter Store com as extensões do Lambda) no Guia do usuário do AWS Systems Manager .

Uma extensão do Lambda corresponde a um processo complementar que aumenta os recursos de uma função Lambda. Para obter mais informações, consulte Lambda extensions (Extensões do Lambda) no Guia do desenvolvedor do Lambda. Para obter informações sobre o uso da extensão em uma imagem de contêiner, consulte Working with Lambda layers and extensions in container images. O Lambda registra informações de execução sobre a extensão junto com a função usando o Amazon CloudWatch Logs. Por padrão, a extensão registra uma quantidade mínima de informações em CloudWatch. Para registrar mais detalhes em log, defina a variável de ambiente PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL para debug.

Para fornecer o cache na memória para parâmetros e segredos, a extensão expõe um endpoint HTTP local, a porta 2773 do host local, ao ambiente do Lambda. É possível configurar a porta ao definir a variável de ambiente PARAMETERS_SECRETS_EXTENSION_HTTP_PORT.

O Lambda cria instâncias separadas correspondentes ao nível de simultaneidade requerido por sua função. Cada instância é isolada e mantém o próprio cache local dos dados de configuração. Para obter mais informações sobre as instâncias e a simultaneidade do Lambda, consulte Managing concurrency for a Lambda function (Gerenciamento da simultaneidade para uma função Lambda) no Guia do desenvolvedor do Lambda.

Para adicionar a extensão para ARM, você deve usar a arquitetura arm64 para sua função Lambda. Para obter mais informações, consulte Arquiteturas de conjuntos de instruções do Lambda no Guia do desenvolvedor do Lambda. A extensão oferece suporte para ARM nas seguintes regiões: Ásia-Pacífico (Mumbai), Leste dos EUA (Ohio), Europa (Irlanda), Europa (Frankfurt), Europa (Zurique), Leste dos EUA (Norte da Virgínia), Europa (Londres), Europa (Espanha), Ásia-Pacífico (Tóquio), Oeste dos EUA (Oregon), Ásia-Pacífico (Singapura), Ásia-Pacífico (Haiderabade) e Ásia-Pacífico (Sydney).

A extensão usa um AWS cliente. Para obter informações sobre como configurar o AWS cliente, consulte a referência de configurações no Guia de referência do AWS SDK e das ferramentas. Se sua função do Lambda for executada em uma VPC, será necessário criar um endpoint da VPC para que a extensão possa fazer chamadas para o Secrets Manager. Para obter mais informações, consulte Usando um AWS Secrets Manager VPC endpoint.

Permissões obrigatórias:

  • O perfil de execução do Lambda deve ter a permissão secretsmanager:GetSecretValue para o segredo.

  • Se o segredo for criptografado com uma chave gerenciada pelo cliente em vez de Chave gerenciada pela AWS aws/secretsmanager, a função de execução também precisará de kms:Decrypt permissão para a chave KMS.

Para usar a extensão Lambda de AWS parâmetros e segredos
  1. Adicione a camada AWS , de nome Extensão do Lambda Parâmetros e Segredos da AWS , à sua função. Para obter instruções, consulte Adição de camadas às funções no Guia do desenvolvedor do Lambda. Se você usar o AWS CLI para adicionar a camada, precisará do ARN da extensão. Para obter uma lista de ARNs, consulte AWS Parâmetros e segredos da extensão Lambda ARNs no Guia do AWS Systems Manager usuário.

  2. Conceda permissões ao perfil de execução do Lambda para poder acessar segredos:

  3. Configure o cache com variáveis de ambiente do Lambda.

  4. Para recuperar segredos do cache de extensão, primeiro você precisa adicionar o X-AWS-Parameters-Secrets-Token ao cabeçalho da solicitação. Defina o token como AWS_SESSION_TOKEN, fornecido pelo Lambda para todas as funções em execução. O uso desse cabeçalho indica que o chamador está no ambiente do Lambda.

    O exemplo de Python, a seguir, mostra como adicionar o cabeçalho.

    import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
  5. Para recuperar um segredo na função Lambda, use uma das seguintes solicitações GET do HTTP:

    • Para recuperar um segredo, use o ARN ou nome completo do segredo em secretId.

      GET: /secretsmanager/get?secretId=secretId
    • Para recuperar o valor do segredo anterior ou uma versão específica por meio de um rótulo de preparação, use o ARN ou o nome do segredo em secretId e use o rótulo de preparação em versionStage.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Para recuperar uma versão específica do segredo por ID, use o ARN ou o nome do segredo em secretId e use o ID da versão em versionId.

      GET: /secretsmanager/get?secretId=secretId&versionId=versionId
    exemplo Recuperar um segredo (Python)

    O exemplo de Python, a seguir, mostra como recuperar um segredo e analisar o resultado usando json.loads.

    secrets_extension_endpoint = "http://localhost:" + \ secrets_extension_http_port + \ "/secretsmanager/get?secretId=" + \ <secret_name> r = requests.get(secrets_extension_endpoint, headers=headers) secret = json.loads(r.text)["SecretString"] # load the Secrets Manager response into a Python dictionary, access the secret

AWS Parâmetros e segredos Variáveis de ambiente da extensão Lambda

É possível configurar a extensão com as seguintes variáveis de ambiente.

Para obter informações sobre como usar variáveis de ambiente, consulte Usar variáveis de ambiente do Lambda no Guia do desenvolvedor do Lambda.

PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

Defina como true (verdadeiro) para armazenar parâmetros e segredos em cache. Defina como false (falso) para não realizar armazenamento em cache. O padrão é true (verdadeiro).

PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

O número máximo de segredos e parâmetros a serem armazenados em cache. Deve ser um valor de zero a mil. Um valor de zero significa que não há armazenamento em cache. Essa variável será ignorada se SSM_PARAMETER_STORE_TTL e SECRETS_MANAGER_TTL forem zero. O padrão é mil.

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT

A porta para o servidor HTTP local. A padrão é 2773.

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

O nível de registro em log que a extensão fornece: debug, info, warn, error ou none. Defina como debug para visualizar a configuração do cache. O padrão é info.

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Número máximo de conexões para clientes HTTP que a extensão usa para fazer solicitações ao Parameter Store ou ao Secrets Manager. Essa é uma configuração por cliente. O padrão é três.

SECRETS_MANAGER_TIMEOUT_MILLIS

Tempo limite para solicitações ao Secrets Manager em milissegundos. Um valor de zero significa que não há tempo limite. O padrão é 0.

SECRETS_MANAGER_TTL

A TTL de um segredo no cache em segundos. Um valor de zero significa que não há armazenamento em cache. O máximo é 300 segundos. Essa variável será ignorada se PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE for zero. O padrão é 300 segundos.

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

Tempo limite para solicitações ao Parameter Store em milissegundos. Um valor de zero significa que não há tempo limite. O padrão é 0.

SSM_PARAMETER_STORE_TTL

A TTL de um parâmetro no cache em segundos. Um valor de zero significa que não há armazenamento em cache. O máximo é 300 segundos. Essa variável será ignorada se PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE for zero. O padrão é 300 segundos.