Ir para o conteúdo

Como posso alternar um segredo do Secrets Manager em uma VPC privada?

5 minuto de leitura
0

Eu tentei alternar um segredo do AWS Secrets Manager para um serviço da AWS no Amazon Virtual Private Cloud (Amazon VPC). No entanto, a operação falhou e o Amazon CloudWatch Logs mostra que a tarefa do AWS Lambda excedeu o tempo limite.

Breve descrição

O Secrets Manager não é capaz de alternar segredos para serviços da AWS que são executados em sub-redes privadas no Amazon VPC, porque essas sub-redes não possuem acesso à Internet.

Resolução

Importante: Antes de começar, certifique-se de ter instalado e configurado a AWS Command Line Interface (AWS CLI).

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

Siga estas instruções para configurar um endpoint de interface Amazon VPC a fim de acessar sua função do Lambda do Secrets Manager e sua instância privada do Amazon Relational Database Service (Amazon RDS). No exemplo a seguir, uma instância privada do Aurora RDS no Amazon VPC chamada vpc-0abb11f5a28a8abe7 está sendo utilizada.

Crie SGs para o endpoint da VPC do Secrets Manager, como também para a instância RDS e a função de alternância do Lambda

Siga estas instruções para criar grupos de segurança (SGs) utilizando a AWS CLI.

1. SG para o endpoint da VPC do Amazon Secrets Manager:

Observação: Substitua vpc-id vpc-0abb11f5a28a8abe7 pelo ID VPC.

$ aws ec2 create-security-group --vpc-id vpc-0abb11f5a28a8abe7 --group-name SMVPCEndpointSG --description "secretsmanager VPCEndpoint SG"
{
    "GroupId": "sg-vpc-endpoint"
}

2. Grupo de segurança para função de alternância do Lambda:

$ aws ec2 create-security-group --vpc-id vpc-0abb11f5a28a8abe7 --group-name LambdaFunctionSG --description "Lambda Rotation Function SG"
{
    "GroupId": "sg-lambda-function"
}

3. (Opcional) Crie um SG para a instância RDS:

Observação: Essa etapa será necessária caso a instância RDS utilize somente o grupo de segurança padrão.

$ aws ec2 create-security-group --vpc-id vpc-0abb11f5a28a8abe7 --group-name RDSInstanceSG --description "RDS Instance SG"
{
    "GroupId": "sg-rds-instance"
}

Defina regras para o endpoint da VPC do Amazon e para os SGs da instância RDS

1. Obtenha o bloco CIDR para a VPC:

$ aws ec2 describe-vpcs --vpc-ids vpc-0a05c93c7ef7a8a1c --query 'Vpcs[].CidrBlock' --output text
10.0.0.0/16

2. Configure as regras do grupo de segurança para o endpoint da VPC do Amazon, assim permitirá o tráfego de entrada na porta 443 a partir da sua VPC:

$ aws ec2 authorize-security-group-ingress --group-id sg-vpc-endpoint --protocol tcp --port 443 --cidr 10.0.0.0/16

3. Configure o SG da instância RDS para permitir conexões de entrada provenientes do grupo de segurança da função do Lambda:

Observação:

  • Substitua your-rds-security-group pelo seu SG (um SG existente ou o SG opcional da instância RDS).
  • Substitua your-db-port pela porta que seu banco de dados está configurado para utilizar.
$ aws ec2 authorize-security-group-ingress --group-id your-rds-security-group --protocol tcp --port your-db-port --source-group sg-lambda-function

Vincule os SGs aos recursos da AWS

1. Se você criou o SG opcional da instância RDS, então modifique a configuração da instância RDS:

Observação: Substitua your-existing-rds-security-groups pelo grupo ou grupos anexados à instância RDS.

$ aws rds modify-db-instance --db-instance-identifier your-rds-instance --vpc-security-group-ids sg-rds-instance your-existing-rds-security-groups

2. Siga as instruções para atualizar a configuração da função do Lambda:

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

Crie um endpoint de interface Amazon VPC para o serviço Secrets Manager e o associe a um SG

Siga as instruções para criar um endpoint de interface:

Observação: Substitua your-region com a sua região da AWS e com IDs de sub-rede utilizados para sua instância RDS.

$ 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-vpc-endpoint

Importante: Seu Amazon VPC deverá ter os nomes de host DNS e também os atributos de resolução de DNS ativados. Para mais informações, consulte Visualizar e atualizar o suporte DNS para o VPC.

Verifique se o Secrets Manager pode alternar o segredo

1. Siga as instruções para rotacionar os segredos do Secrets Manager:

Observação: Substitua your-secret pelo seu segredo do Secrets Manager.

$ aws secretsmanager rotate-secret --secret-id your-secret

O Secrets Manager repetirá a alternância anterior.

Observação: Como as tentativas anteriores de alternar a senha não tiveram êxito, você pode receber um resultado semelhante à seguinte:

An error occurred (InvalidRequestException) when calling the RotateSecret operation: A previous rotation isn't complete. That rotation will be reattempted.

2. Monitore a função no console do AWS Lambda. Caso a alternância seja bem-sucedida, os fluxos de log do Amazon CloudWatch conterão uma entrada semelhante à seguinte:

[INFO] 2019-10-22T07:59:32.627Z 96179023-5b67-4e98-a057-885f68bc69f2 finishSecret: Successfully set AWSCURRENT stage to version 175b5e38-341f-4cd0-8c58-2b1e49769642 for secret arn:aws:secretsmanager:your-region:your-account:secret:your-secret

3. Recupere o segredo do Secrets Manager para confirmar se ele foi rotacionado com sucesso:

Observação: Substitua your-secret-arn pelo o ARN secreto do Secrets Manager.

aws secretsmanager get-secret-value --secret-id your-secret-arn

Observação: A função de alternância do Secrets Manager é executada de forma não simultânea em segundo plano. A função de alternância poderá levar vários minutos até ser concluída.

AWS OFICIALAtualizada há 3 anos