Ir para o conteúdo

Como crio uma função de alternância com um segredo do Secrets Manager para um banco de dados sem suporte?

4 minuto de leitura
0

Quero criar uma função do AWS Lambda para um segredo do AWS Secrets Manager. Meu banco de dados ou serviço não suporta a função de alternância automática.

Resolução

Pré-requisito: Instale e configure a AWS Command Line Interface (AWS CLI).

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Crie o código para a função de alternância do Lambda

Para obter instruções, consulte Configurar alternância automática para segredos do AWS Secrets Manager que não são de banco de dados.

Criar um conjunto de alterações do AWS CloudFormation com base no modelo genérico de função de alternância

  1. Execute o comando create-cloud-formation-change-set da AWS CLI.
  2. Substitua --stack-name pelo nome da pilha do CloudFormation.
  3. Substitua --parameter-overrides pelos endpoints regionais do Secrets Manager para sua região da AWS e pelo nome da função de alternância do Lambda que o modelo cria.

Exemplo do comando create-cloud-formation-change-set da AWS CLI:

aws serverlessrepo create-cloud-formation-change-set --application-id arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate --stack-name MyLambdaCreationStack --parameter-overrides Name=endpoint,Value=https://secretsmanager.REGION.amazonaws.com Name=functionName,Value=MySecretsManagerRotationFunction --capabilities CAPABILITY_IAM CAPABILITY_RESOURCE_POLICY

Observação: certifique-se de usar o nome do recurso da Amazon (ARN) de arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate exatamente como mostrado.

Use o conjunto de alterações do CloudFormation para atualizar uma pilha

O comando create-cloud-formation-change-set retorna ApplicationId, ChangeSetId, SemanticVersion e StackId.

Conclua as etapas a seguir:

  1. Substitua change-set-name pelo valor ChangeSetId ao executar o comando execute-change-set.
  2. Execute o comando execute-change-set da AWS CLI:
    aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

A pilha do CloudFormation cria a função do Lambda e um perfil do AWS Identity and Access Management (AWS IAM). O perfil do IAM tem as permissões necessárias para a função do Lambda.

Verifique a criação da função do Lambda

Execute o comando list-functions da AWS CLI:

aws lambda list-functions

Output
{
    ...
    "FunctionName": "MySecretsManagerRotationFunction",
    ...
    "FunctionArn": "arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction",
    ...
}

Observação: o valor FunctionName corresponde ao nome da função que você especificou na opção --parameter-overrides.

Configurar o acesso da função do Lambda a uma Amazon Virtual Private Cloud

Se seu banco de dados ou serviço estiver em uma Amazon Virtual Private Cloud (Amazon VPC), execute o comando update-function-configuration para configurar a função de alternância do Lambda para ser executada na Amazon VPC. Certifique-se de fornecer as IDs da sub-rede da VPC e as IDs do grupo de segurança. Para obter mais informações, consulte Conceder às funções do Lambda acesso aos recursos em uma Amazon VPC.

Observação: se seu banco de dados ou serviço não estiver em uma Amazon VPC, pule esta etapa.

Exemplo do comando update-function-configuration da AWS CLI:

$ aws lambda update-function-configuration --function-name your-lambda-function \
--vpc-config SubnetIds=subnet-076c28105d486f3bd,subnet-0af00c796ccdc725f,SecurityGroupIds=sg-0aed64f81acc4c037

Crie um endpoint da Amazon VPC para o Secrets Manager

Se o Amazon VPC com seu banco de dados ou serviço e a função de alternância do Lambda não tiver acesso à Internet, crie um endpoint do Amazon VPC. Configure a Amazon VPC com um endpoint de serviço privado para acessar o Secrets Manager e ativar a função de alternância em um endpoint dentro da VPC. Execute o comando create-vpc-endpoint da AWS CLI.

Observação: se seu banco de dados ou serviço não estiver em uma Amazon VPC, pule esta etapa.

$ aws ec2 create-vpc-endpoint --vpc-id  vpc-0abb11f5a28a8abe7 --vpc-endpoint-type Interface \
--service-name com.amazonaws.your-region.secretsmanager  --subnet-ids subnet-076c28105d486f3bd subnet-0af00c796ccdc725f \
--security-group-ids sg-0bacf4bbed67e4df5

Configurar a conectividade de rede entre a função do Lambda e o banco de dados ou serviço

Certifique-se de que a função do Lambda possa ser roteada para seu banco de dados ou serviço pelas portas de rede necessárias. As portas e os requisitos de roteamento variam com base no banco de dados ou no serviço e na configuração de VPC associada.

Observação: se seu banco de dados ou serviço não estiver em uma Amazon VPC, pule esta etapa.

Personalizar a função de alternância para seu caso de uso

O modelo de alternância implementa as etapas createSecret e finishSecret para você. Você deve modificar a função do Lambda para implementar as etapas setSecret e testSecret para seu caso de uso e banco de dados. Para obter mais informações, consulte Quatro etapas em uma função de alternância.

Ativar a alternância do seu segredo

Especifique o número de dias entre as rotações com os parâmetros --rotation-rules e AutomaticallyAfterDays.

aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --rotation-lambda-arn arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction --rotation-rules AutomaticallyAfterDays=7

Para mais informações, consulte Alternar segredos do AWS Secrets Manager.

Informações relacionadas

Modelos de função de rotação do AWS Secrets Manager

Como se conectar ao serviço AWS Secrets Manager em uma nuvem privada virtual

Serviços da AWS que usam segredos do AWS Secrets Manager

AWS OFICIALAtualizada há 9 meses