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

5 minuto de leitura
0

Como posso criar uma função do AWS Lambda para alternar segredos do AWS Secrets Manager para outros bancos de dados ou serviços de terceiros?

Breve descrição

Os segredos do Secrets Manager criados com bancos de dados com suporte do Amazon Relational Database Service (Amazon RDS) e outros serviços do AWS Support criam automaticamente a rotação do Lambda. Para bancos de dados e serviços da AWS sem suporte, você pode criar manualmente a função do Lambda.

Resolução

Use o modelo genérico da função de rotação para girar segredos. Antes de ativar a rotação de um segredo para outro banco de dados ou serviço, você deve criar o código para a função de rotação do Lambda.

Importante:

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

Execute o comando da AWS CLI create-cloud-formation-change-set para esses valores:

--stack-name: o nome da pilha do AWS CloudFormation para a qual você cria um conjunto de alterações.

--parameter-override: Os endpoints regionais do AWS Secrets Manager para sua região e o nome da função de rotação do Lambda que o modelo cria.

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.

Um conjunto de alterações do AWS CloudFormation é criado para o modelo. O nome da pilha do AWS CloudFormation começa com aws-serverless-repository- e o código de status da pilha é definido como REVIEW_IN_PROGRESS.

Atualizar uma pilha usando o conjunto de alterações

O comando create-cloud-formation-change-set retorna ApplicationId, ChangeSetId, SemanticVersion e StackId. Para atualizar o status da pilha, você deve fornecer ChangeSetId em change-set-name. O change-set-name não produz nenhuma saída e altera o código de status da pilha para CREATE_COMPLETE. A pilha do AWS CloudFormation cria a função do Lambda e um perfil do IAM que é anexado à função do Lambda com as permissões necessárias.

Execute o seguinte comando da AWS CLI execute-change-set semelhante ao seguinte:

aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

Verificar se as funções do Lambda foram criadas

Execute o seguinte comando da AWS CLI:

aws lambda list-functions

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

Observação: o nome da função do Lambda é o valor do nome da função especificado em --parameter-overrides.

Configurar a função do Lambda para acesso à Amazon Virtual Private Cloud (Amazon VPC)

Se seu banco de dados ou serviço residir em uma Amazon VPC, execute o comando update-function-configuration semelhante ao seguinte. O comando update-function-configuration configura a função de rotação do Lambda para ser executada na VPC. Certifique-se de fornecer as IDs da sub-rede da VPC e as IDs do grupo de segurança. Para mais informações, consulte Configurar uma função do Lambda para acessar recursos em uma Amazon VPC.

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

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

Criar um endpoint da VPC para o serviço Secrets Manager

Se a VPC com seu banco de dados ou serviço e a função de rotação do Lambda não tiver acesso à Internet, crie um endpoint da VPC. Configure a VPC com um endpoint de serviço privado para acessar o Secrets Manager e ativar a função de rotação em um endpoint dentro da VPC. Execute o comando create-vpc-endpoint semelhante ao seguinte:

Observação: se seu banco de dados ou serviço não residir 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. Isso varia dependendo do banco de dados ou do serviço e da configuração da VPC associada.

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

Personalizar a função de rotação para seu caso de uso

O modelo de rotação implementa as etapas createSecret e finishSecret para você. As etapas setSecret e testSecret exigem implementação manual para seu caso de uso e banco de dados. Para mais informações, consulte How rotation works (Como funciona a rotação).

Ativar a rotação 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 Rotate AWS Secrets Manager secrets (Rotacionar os 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

AWS OFICIAL
AWS OFICIALAtualizada há um ano