Solucionar problemas de rotação AWS Secrets Manager - 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á.

Solucionar problemas de rotação AWS Secrets Manager

Em muitos serviços, o Secrets Manager usa uma função do Lambda para alternar segredos. Para ter mais informações, consulte Como o funciona a alternância. A função de alternância do Lambda interage com o banco de dados ou serviço para o qual o segredo se destina, bem como o Secrets Manager. Quando a rotação não funciona da maneira esperada, você deve primeiro verificar os CloudWatch registros.

nota

Alguns serviços podem gerenciar segredos para você, incluindo o gerenciamento da alternância automática. Para ter mais informações, consulte Alternância gerenciada para segredos do AWS Secrets Manager.

Para visualizar os CloudWatch registros da sua função Lambda
  1. Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/.

  2. Escolha seu segredo e, em seguida, na página de detalhes, em Rotation configuration (Configuração de alternância), escolha a função de alternância do Lambda. Abra o console do Lambda.

  3. Na guia Monitorar, escolha Registros e, em seguida, selecione Exibir registros CloudWatch.

    O CloudWatch console é aberto e exibe os registros da sua função.

Nenhuma atividade após “Found credentials in environment variables” (Credenciais encontradas em variáveis de ambiente)

Se não houver atividade após “Found credentials in environment variables” (Credenciais encontradas em variáveis de ambiente) e a duração da tarefa for longa, por exemplo, o tempo limite padrão do Lambda de 30 mil milissegundos, a função Lambda pode estar expirando ao tentar alcançar o endpoint do Secrets Manager.

A função de alternância do Lambda deve ser capaz de acessar um endpoint do Secrets Manager. Se sua função do Lambda puder acessar a Internet, você pode usar um endpoint público. Para localizar um endpoint, consulte AWS Secrets Manager endpoints.

Se a função do Lambda for executada em uma VPC que não tem acesso à Internet, recomendamos que você configure endpoints privados de serviço do Secrets Manager dentro de sua VPC. Assim, sua VPC pode interceptar solicitações endereçadas ao endpoint regional público e redirecioná-las para o endpoint privado. Para ter mais informações, consulte Endpoint da VPC.

Como alternativa, você pode habilitar a função Lambda para acessar um endpoint público do Secrets Manager adicionando um gateway NAT ou um gateway da Internet à VPC, o que permite que o tráfego da VPC alcance o endpoint público. Isso expõe a VPC a um risco maior, pois um endereço IP do gateway pode ser atacado a partir da Internet pública.

Nenhuma atividade após “createSecret”

A seguir, estão os problemas que podem fazer com que a alternância pare após createSecret:

As ACLs de rede VPC não permitem o tráfego HTTPS de entrada e saída.

Para obter mais informações, consulte Controlar o tráfego para sub-redes com ACLs de rede no Guia do usuário da Amazon VPC.

A configuração de tempo limite da função Lambda é muito curta para executar a tarefa.

Para obter mais informações, consulte Configurar as opções da função Lambda no Guia do desenvolvedor do AWS Lambda .

O endpoint da VPC do Secrets Manager não permite a entrada de CIDRs da VPC nos grupos de segurança atribuídos.

Para obter mais informações, consulte Controle o tráfego para recursos usando grupos de segurança no Guia do usuário da Amazon VPC.

A política de endpoint da VPC do Secrets Manager não permite que o Lambda use o endpoint da VPC.

Para ter mais informações, consulte Uso de um endpoint da VPC do AWS Secrets Manager.

O segredo usa a alternância de usuários alternados, o segredo do superusuário é gerenciado pelo Amazon RDS e a função do Lambda não pode acessar a API do RDS.

Para alternar a rotação de usuários em que o segredo do superusuário é gerenciado por outro AWS serviço, a função de rotação do Lambda deve ser capaz de chamar o endpoint do serviço para obter as informações de conexão do banco de dados. Recomendamos que você configure um endpoint da VPC para o serviço de banco de dados. Para obter mais informações, consulte:

Erro: “O acesso ao KMS não é permitido”

Se você vir ClientError: An error occurred (AccessDeniedException) when calling the GetSecretValue operation: Access to KMS is not allowed, a função de alternância não tem permissão para descriptografar o segredo usando a chave KMS usada para criptografar o segredo. Pode haver uma condição na política de permissões que limita o contexto de criptografia a um segredo específico. Para obter informações sobre as permissões necessárias, consulte Declaração de política para chaves gerenciadas pelo cliente.

Erro: “Key is missing from secret JSON” (A chave do segredo JSON está ausente)

Uma função de alternância do Lambda requer que o valor do segredo esteja em uma estrutura JSON específica. Se você vir esse erro, o JSON pode estar sem uma chave que a função de alternância tentou acessar. Para obter informações sobre a estrutura JSON para cada tipo de segredo, consulte Estrutura JSON de segredos AWS Secrets Manager.

Erro: “setSecret: Unable to log into database” (setSecret: não é possível fazer login no banco de dados)

A seguir, estão os problemas que podem causar esse erro:

A função de alternância não pode acessar o banco de dados.

Se a duração da tarefa for longa, por exemplo, mais de 5 milissegundos, a função de alternância do Lambda pode não conseguir acessar o banco de dados utilizando a rede.

Se seu banco de dados ou serviço estiver sendo executado em uma instância do Amazon EC2 em uma VPC, é recomendável que você configure a função do Lambda para ser executada na mesma VPC. Assim, a função de alternância pode se comunicar diretamente com seu serviço. Para obter mais informações, consulte Configuring VPC access (Configurar o acesso à VPC).

Para permitir que a função do Lambda acesse o banco de dados ou serviço, certifique-se de que os grupos de segurança anexados à sua função de alternância do Lambda permitam conexões de saída com o banco de dados ou serviço. Você também deve garantir que os grupos de segurança anexados ao seu banco de dados ou serviço permitam conexões de entrada a partir da função de alternância do Lambda.

As credenciais no segredo estão incorretas.

Se a duração da tarefa for curta, a função de alternância do Lambda pode não conseguir autenticar com as credenciais no segredo. Verifique as credenciais fazendo login manualmente com as informações nas AWSPREVIOUS versões AWSCURRENT e do segredo usando o AWS CLI comando get-secret-value.

O banco de dados usa scram-sha-256 para criptografar senhas.

Se seu banco de dados for Aurora PostgreSQL versão 13 ou posterior e usar scram-sha-256 para criptografar senhas, mas a função de alternância usar libpq versão 9 ou anterior que não seja compatível com scram-sha-256, a função de alternância não poderá estabelecer conexão com o banco de dados.

Para determinar quais usuários do banco de dados usam criptografia scram-sha-256
Para determinar a versão que sua função de alternância libpq usa
  1. Em um computador baseado em Linux, no console do Lambda, acesse sua função de alternância e baixe o pacote de implantação. Descompacte o arquivo zip em um diretório de trabalho.

  2. Usando uma linha de comando, no diretório de trabalho, execute:

    readelf -a libpq.so.5 | grep RUNPATH

  3. Se você visualizar a string PostgreSQL-9.4.x ou qualquer versão principal inferior à versão 10, a função de alternância não será compatível com scram-sha-256.

    • Saída para uma função de alternância incompatível com scram-sha-256:

      0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-9.4.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]

    • Saída para uma função de alternância compatível com scram-sha-256:

      0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-10.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]

nota

Se tiver configurado a alternância automática de segredos antes de 30 de dezembro de 2021, sua função de alternância incluiu uma versão mais antiga de libpq que não é compatível com scram-sha-256. Para oferecer suporte a scram-sha-256, você precisa recriar sua função de alternância.

O banco de dados requer acesso SSL/TLS.

Se seu banco de dados requer uma conexão SSL/TLS, mas a função de alternância usa uma conexão não criptografada, a função de alternância não pode se conectar ao banco de dados. As funções de rodízio do Amazon RDS (exceto Oracle e Db2) e o Amazon DocumentDB usam automaticamente o Secure Socket Layer (SSL) ou o Transport Layer Security (TLS) para se conectar ao seu banco de dados, se ele estiver disponível. Caso contrário, utilizarão uma conexão não criptografada.

nota

Se você configurou a alternância automática de segredos antes de 20 de dezembro de 2021, a sua função de alternância pode ser baseada em um modelo mais antigo que é incompatível com SSL/TLS. Para oferecer suporte a conexões que usam SSL/TLS, você precisa recriar a sua função de alternância.

Para determinar quando a sua função de alternância foi criada
  1. No console do Secrets Manager https://console.aws.amazon.com/secretsmanager/, abra o seu segredo. Na seção Rotation configuration (Configuração de alternância), em Lambda rotation function (Função de alternância do Lambda), você verá o Lambda function ARN (ARN da função Lambda), por exemplo, arn:aws:lambda:aws-region:123456789012:function:SecretsManagerMyRotationFunction . Copie o nome da função do final do ARN. Neste exemplo, é SecretsManagerMyRotationFunction .

  2. No AWS Lambda console https://console.aws.amazon.com/lambda/, em Funções, cole o nome da função Lambda na caixa de pesquisa, escolha Enter e escolha a função Lambda.

  3. Na página de detalhes da função, na guia Configuration (Configuração), em Tags (Etiquetas), copie o valor ao lado da chave aws:cloudformation:stack-name.

  4. No AWS CloudFormation console https://console.aws.amazon.com/cloudformation, em Pilhas, cole o valor da chave na caixa de pesquisa e escolha Enter.

  5. A lista de filtros de pilhas para que somente a pilha que criou a função de alternância do Lambda apareça. Na coluna Created date (Data da criação), visualize a data em que a pilha foi criada. Esta é a data em que a função de alternância do Lambda foi criada.

Erro: “Não é possível importar o módulo ‘lambda_function’"

Você pode receber esse erro se estiver executando uma função Lambda anterior que foi atualizada automaticamente do Python 3.7 para uma versão mais recente do Python. Para solucionar o erro, você pode alterar a versão da função do Lambda de volta para Python 3.7 e, em seguida, para Atualize uma função de alternância existente do Python 3.7 para 3.9. Para obter mais informações, consulte Why did my Secrets Manager Lambda function rotation fail with a “pg module not found“ error? em AWS re:Post.

Atualize uma função de alternância existente do Python 3.7 para 3.9

Algumas funções de alternância criadas antes de novembro de 2022 usavam o Python 3.7. O AWS SDK para Python deixou de oferecer suporte ao Python 3.7 em dezembro de 2023. Para obter mais informações, consulte Atualizações da política de suporte do Python para AWS SDKs e ferramentas. Para mudar para uma nova função de alternância que usa o Python 3.9, é possível adicionar uma propriedade de runtime a uma função de alternância existente ou recriá-la.

Para descobrir quais funções de alternância do Lambda usam o Python 3.7
  1. Faça login no AWS Management Console e abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

  2. Na lista de Funções, filtre por SecretsManager.

  3. Na lista filtrada de funções, em Runtime, busque o Python 3.7.

Opção 1: Recriar a função de rotação usando AWS CloudFormation

Quando você usa o console do Secrets Manager para ativar a rotação, o Secrets Manager usa AWS CloudFormation para criar os recursos necessários, incluindo a função de rotação do Lambda. Se você usou o console para ativar a rotação ou criou a função de rotação usando uma AWS CloudFormation pilha, poderá usar a mesma AWS CloudFormation pilha para recriar a função de rotação com um novo nome. A nova função usa a versão mais recente do Python.

Para encontrar a AWS CloudFormation pilha que criou a função de rotação
  • Na página de detalhes da função do Lambda, na guia Configuração, escolha Tags. Visualize o ARN próximo à aws:cloudformation:stack-id.

    O nome da pilha está incorporado no ARN, conforme exibido no exemplo a seguir.

    • ARN: arn:aws:cloudformation:us-west-2:408736277230:stack/SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537

    • Nome da pilha: SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda

Para recriar uma função de alternância (AWS CloudFormation)
  1. Em AWS CloudFormation, pesquise a pilha pelo nome e escolha Atualizar.

    Se aparecer uma caixa de diálogo recomendando a atualização da pilha raiz, escolha Ir para a pilha raiz e, em seguida, escolha Atualizar.

  2. Na página Atualizar pilha, escolha Editar modelo no Designer e, em seguida, escolha Visualizar no Designer.

  3. No Designer, no código do modelo, em SecretRotationScheduleHostedRotationLambda, substitua o valor por "functionName": "SecretsManagerTestRotationRDS" com um novo nome de função. Por exemplo, em JSON, "functionName": "SecretsManagerTestRotationRDSupdated".

  4. Continue com o fluxo de trabalho da AWS CloudFormation pilha e escolha Enviar.

Opção 2: atualizar o tempo de execução da função de rotação existente usando AWS CloudFormation

Quando você usa o console do Secrets Manager para ativar a rotação, o Secrets Manager usa AWS CloudFormation para criar os recursos necessários, incluindo a função de rotação do Lambda. Se você usou o console para ativar a rotação ou criou a função de rotação usando uma AWS CloudFormation pilha, poderá usar a mesma AWS CloudFormation pilha para atualizar o tempo de execução da função de rotação.

Para encontrar a AWS CloudFormation pilha que criou a função de rotação
  • Na página de detalhes da função do Lambda, na guia Configuração, escolha Tags. Visualize o ARN próximo à aws:cloudformation:stack-id.

    O nome da pilha está incorporado no ARN, conforme exibido no exemplo a seguir.

    • ARN: arn:aws:cloudformation:us-west-2:408736277230:stack/SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537

    • Nome da pilha: SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda

Para atualizar o runtime de uma função de alternância (AWS CloudFormation)
  1. Em AWS CloudFormation, pesquise a pilha pelo nome e escolha Atualizar.

    Se aparecer uma caixa de diálogo recomendando a atualização da pilha raiz, escolha Ir para a pilha raiz e, em seguida, escolha Atualizar.

  2. Na página Atualizar pilha, escolha Editar modelo no Designer e, em seguida, escolha Visualizar no Designer.

  3. No designer, no modelo JSON, paraSecretRotationScheduleHostedRotationLambda, abaixo PropertiesParameters, adicione "runtime": "python3.9"

  4. Continue com o fluxo de trabalho da AWS CloudFormation pilha e escolha Enviar.

Opção 3: Para AWS CDK usuários, atualize a biblioteca CDK

Se você usou a versão AWS CDK anterior à v2.94.0 para configurar a rotação do seu segredo, você pode atualizar a função Lambda fazendo o upgrade para a v2.94.0 ou posterior. Para obter mais informações, consulte o Guia do desenvolvedor do AWS Cloud Development Kit (AWS CDK) v2.