Salta al contenuto

Come posso ruotare un segreto di Secrets Manager in un VPC privato?

5 minuti di lettura
0

Ho provato a ruotare un segreto di AWS Secrets Manager per un servizio AWS in Amazon Virtual Private Cloud (Amazon VPC). Tuttavia, l'operazione non è riuscita e Amazon CloudWatch Logs mostra che l'attività AWS Lambda è scaduta.

Breve descrizione

Secrets Manager non può ruotare segreti per servizi AWS in esecuzione nelle sottoreti private di Amazon VPC perché queste sottoreti non hanno accesso a Internet.

Risoluzione

Importante: prima di iniziare, assicurati di aver installato e configurato l'Interfaccia della linea di comando AWS (AWS CLI).

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Seguendo queste istruzioni, configura un endpoint di interfaccia Amazon VPC per accedere alla funzione Lambda in Secrets Manager e all'istanza Amazon Relational Database Service (Amazon RDS) privata. Nell'esempio seguente viene utilizzata un'istanza Aurora RDS privata in Amazon VPC denominata vpc-0abb11f5a28a8abe7.

Crea gruppi di sicurezza per l'endpoint VPC di Secrets Manager, l'istanza RDS e la funzione di rotazione Lambda

Segui queste istruzioni per creare gruppi di sicurezza utilizzando AWS CLI.

1. Gruppo di sicurezza per l'endpoint Amazon VPC di Secrets Manager:

Nota: sostituisci vpc-id vpc-0abb11f5a28a8abe7 con l'ID del tuo VPC.

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

2. Gruppo di sicurezza per la funzione di rotazione Lambda:

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

3. (Facoltativo) Crea un gruppo di sicurezza per l'istanza RDS:

Nota: questo passaggio è obbligatorio se l'istanza RDS utilizza solo il gruppo di sicurezza predefinito.

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

Aggiungi regole ai gruppi di sicurezza dell'endpoint Amazon VPC e dell'istanza RDS

1. Ottieni l'intervallo CIDR per il VPC:

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

2. Configura le regole del gruppo di sicurezza dell'endpoint Amazon VPC in modo da consentire il traffico in entrata sulla porta 443 dal VPC:

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

3. Configura il gruppo di sicurezza per l'istanza RDS in modo da consentire le connessioni in entrata dal gruppo di sicurezza della funzione Lambda:

Nota:

  • sostituisci your-rds-security-group con il tuo gruppo di sicurezza (un gruppo di sicurezza esistente o il gruppo di sicurezza facoltativo per l'istanza RDS).
  • Sostituisci your-db-port con la porta configurata per il tuo database.
$ aws ec2 authorize-security-group-ingress --group-id your-rds-security-group --protocol tcp --port your-db-port --source-group sg-lambda-function

Collega i gruppi di sicurezza alle risorse AWS

1. Se hai creato il gruppo di sicurezza facoltativo per l'istanza RDS, modifica la configurazione dell'istanza RDS:

Nota: sostituisci your-existing-rds-security-groups con il gruppo o i gruppi collegati all'istanza 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. Segui le istruzioni per aggiornare la configurazione della funzione Lambda:

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

Crea un endpoint di interfaccia Amazon VPC per il servizio Secrets Manager e associalo a un gruppo di sicurezza

Segui le istruzioni per creare un endpoint di interfaccia:

Nota: sostituisci your-region con la tua Regione AWS e gli ID di sottorete utilizzati per la tua istanza 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: Amazon VPC deve avere i nomi host DNS e gli attributi di risoluzione DNS attivati. Per ulteriori informazioni, consulta Visualizzazione e aggiornamento degli attributi DNS per il VPC.

Verifica che Secrets Manager possa ruotare il segreto

1. Segui le istruzioni per ruotare il segreto di Secrets Manager:

Nota: sostituisci your-secret con il tuo segreto di Secrets Manager.

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

Secrets Manager ritenta la rotazione precedente.

Nota: poiché i precedenti tentativi di rotazione della password non sono riusciti, potresti ricevere un output simile al seguente:

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

2. Monitora la funzione nella console AWS Lambda. Se la rotazione riesce, i flussi di log di Amazon CloudWatch contengono una voce simile alla seguente:

[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. Recupera il segreto di Secrets Manager per verificare che sia stato ruotato correttamente:

Nota: sostituisci your-secret-arn con l'ARN del tuo segreto di Secrets Manager.

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

Nota: la funzione di rotazione di Secrets Manager viene eseguita in modo asincrono in background. Il completamento della funzione di rotazione può richiedere diversi minuti.

AWS UFFICIALEAggiornata 2 anni fa