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 o AWS Parâmetros e segredos da extensão Lambda para recuperar e armazenar em cache AWS Secrets Manager segredos nas 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 ManagerAPIs, 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 Integração do Parameter Store com extensões Lambda no AWS Systems Manager Guia do usuário.

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 HTTP endpoint local, a porta localhost 2773, ao ambiente Lambda. Você pode 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 paraARM, você deve usar a arm64 arquitetura da 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 é compatível ARM com as 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 (Cingapura), Ásia-Pacífico (Hyderabad) 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 AWS SDKGuia de referência de ferramentas e ferramentas. Se sua função Lambda for executada em umVPC, você precisará criar um VPC endpoint para que a extensão possa fazer chamadas para o Secrets Manager. Para obter mais informações, consulte Uso de um endpoint da VPC do AWS Secrets Manager.

Permissões obrigatórias:

  • A função de execução do Lambda deve ter secretsmanager:GetSecretValue permissão para o segredo.

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

Para usar o AWS Parâmetros e segredos da extensão Lambda
  1. Adicione o AWS camada chamada AWS Parâmetros e segredos da extensão Lambda para sua função. Para obter instruções, consulte Adicionar camadas às funções no Lambda Developer Guide. Se você usar o AWS CLI para adicionar a camada, você precisa ARN da extensão. Para obter uma lista deARNs, consulte AWS Parâmetros e segredos da extensão ARNs Lambda no AWS Systems Manager Guia do usuário.

  2. Conceda permissões à função 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 HTTP GET solicitações:

    • Para recuperar um segredosecretId, use o nome ARN ou do segredo.

      GET: /secretsmanager/get?secretId=secretId
    • Para recuperar o valor secreto anterior ou uma versão específica por meio do rótulo de teste, parasecretId, use o nome ARN ou do segredo e paraversionStage, use o rótulo de teste.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Para recuperar uma versão secreta específica por ID, parasecretId, use o nome ARN ou da chave secreta e paraversionId, use a ID da versão.

      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

Você pode 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 HTTP servidor 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 HTTP clientes 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

TTLde 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

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