프라이빗 VPC에서 Secrets Manager 비밀을 회전하려면 어떻게 해야 하나요?

4분 분량
0

Amazon Virtual Private Cloud(VPC)에서 AWS 서비스를 위해 AWS Secrets Manager 비밀을 회전하려고 합니다. 그러나 작업에 실패하고 Amazon CloudWatch Logs에 AWS Lambda 작업 시간이 초과된 것으로 표시됩니다.

간략한 설명

이와 같은 서브넷은 인터넷에 연결되어 있지 않기 때문에 Secrets Manager에서 Amazon VPC 프라이빗 서브넷에서 실행 중인 AWS 서비스의 비밀번호를 회전할 수 없습니다.

해결 방법


다음 안내에 따라 Secrets Manager Lambda 함수 및 비공개 Amazon Relational Database Service(RDS) 인스턴스에 액세스하도록 Amazon VPC 인터페이스 엔드포인트를 구성하세요. 다음 예에서는 vpc-0abb11f5a28a8abe7라는 Amazon VPC의 비공개 Aurora RDS 인스턴스가 사용됩니다.

중요:

Secrets Manager VPC 엔드포인트, RDS 인스턴스 및 Lambda 회전 기능에 대한 SG 만들기

AWS CLI를 사용하여 보안 그룹(SG)을 생성하려면 다음 지침을 따르세요.

  1. Secrets Manager Amazon VPC 엔드포인트용 SG:

참고: vpc-id vpc-0abb11f5a28a8abe7을 사용자 VPC ID로 바꿉니다.

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

2.    Lambda 회전 기능을 위한 보안 그룹:

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

3.    (선택 사항) RDS 인스턴스용 SG 생성:

참고: 이 단계는 RDS 인스턴스가 기본 보안 그룹만 사용하는 경우에 필요합니다.

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

Amazon VPC 엔드포인트 및 RDS 인스턴스 SG에 규칙 추가하기

1.    VPC의 CIDR 제품군을 확인하세요.

$ aws ec2 describe-vpcs --vpc-ids vpc-0a05c93c7ef7a8a1c --query 'Vpcs[].CidrBlock' --output text
10.0.0.0/16
  1. VPC에서 포트 443의 인바운드 트래픽을 허용하도록 Amazon VPC 엔드포인트에 대한 보안 그룹 규칙을 구성합니다.
$ aws ec2 authorize-security-group-ingress --group-id sg-vpc-endpoint --protocol tcp --port 443 --cidr 10.0.0.0/16
  1. Lambda 함수 보안 그룹에서 인바운드 연결을 허용하도록 RDS 인스턴스 SG를 구성합니다.

참고:

  • your-rds-security-group을 사용자 SG(기존 SG 또는 선택적 RDS 인스턴스 SG)로 바꿉니다.

  • your-db-port를 데이터베이스가 사용하도록 구성된 포트로 바꿉니다.

$ aws ec2 authorize-security-group-ingress --group-id your-rds-security-group --protocol tcp --port your-db-port --source-group sg-lambda-function

AWS 리소스에 SG 연결

  1. 선택적 RDS 인스턴스 SG를 생성한 경우, RDS 인스턴스 구성을 수정합니다.

참고: your-existing-rds-security-groups를 RDS 인스턴스에 연결된 그룹으로 바꿉니다.

$ aws rds modify-db-instance --db-instance-identifier your-rds-instance --vpc-security-group-ids sg-rds-instance your-existing-rds-security-groups
  1. 지침에 따라 Lambda 함수 구성을 업데이트합니다.
$ aws lambda update-function-configuration --function-name your-lambda-function \
--vpc-config SubnetIds=subnet-076c28105d486f3bd,subnet-0af00c796ccdc725f,SecurityGroupIds=sg-lambda-function

Secrets Manager 서비스에 대한 Amazon VPC 인터페이스 엔드포인트를 만들고 SG와 연결합니다.

인터페이스 엔드포인트 만들기의 지침을 따릅니다.

참고: your-regionAWS Region 및 RDS 인스턴스에 사용되는 서브넷 ID로 바꿉니다.

$ 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

중요: Amazon VPC에 DNS 호스트 이름 및 DNS 확인 특성이 활성화되어 있어야 합니다. 자세한 내용은 VPC에 대한 DNS 지원 보기 및 업데이트를 참고하세요.

Secrets Manager에서 비밀을 회전할 수 있는지 확인합니다.

1.    Secrets Manager 비밀 회전하기에 안내된 지침을 따릅니다.

참고: your-secret을 Secrets Manager 비밀로 바꿉니다.

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

Secrets Manager가 이전과 같은 회전을 다시 시도합니다.

참고: 이전의 암호 회전 시도가 실패했기 때문에 다음과 유사한 출력이 표시될 수 있습니다.

An error occurred (InvalidRequestException) when calling the RotateSecret operation: A previous rotation isn't complete. That rotation will be reattempted.
  1. AWS Lambda 콘솔에서 함수를 모니터링합니다. 회전이 성공하면 Amazon CloudWatch 로그 스트림에 다음과 같은 항목이 나타납니다.
[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
  1. Secrets Manager 비밀을 검색하여 회전에 성공했는지 확인합니다.

참고: your-secret-arn을 Secrets Manager 비밀 ARN으로 바꿉니다.

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

참고: Secrets Manager 회전 기능은 백그라운드에서 비동기적으로 실행됩니다. 회전 기능을 완료하는 데 몇 분 정도 걸릴 수 있습니다.

관련 정보

SSL 연결이 필요한 DB 연결에 AWS Secrets Manager 비밀을 회전하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전