프라이빗 VPC에서 AWS Secrets Manager 보안 암호를 교체하려면 어떻게 해야 합니까?
Amazon Virtual Private Cloud(Amazon VPC)에서 AWS 서비스에 대한 AWS Secrets Manager 보안 암호를 교체하려고 했습니다. 하지만 작업이 실패했고 Amazon CloudWatch Logs에는 AWS Lambda 작업 시간이 초과되었다고 표시됩니다.
간략한 설명
Secrets Manager는 Amazon VPC 프라이빗 서브넷에서 실행되는 AWS 서비스에 대한 보안 암호를 교체할 수 없습니다. 서브넷에 인터넷 액세스 권한이 없기 때문입니다.
해결 방법
다음 지침에 따라 Secrets Manager Lambda 함수 및 프라이빗 Amazon Relational Database Service(Amazon RDS) 인스턴스에 액세스하도록 Amazon VPC 인터페이스 엔드포인트를 구성합니다. 다음 예제에서는 Amazon VPC에서 vpc-0abb11f5a28a8abe7이라는 프라이빗 Aurora RDS 인스턴스가 사용됩니다.
중요:
- 시작하기 전에 AWS 명령줄 인터페이스(AWS CLI)를 설치 및 구성해야 합니다.
- AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하십시오.
Secrets Manager VPC 엔드포인트, Amazon RDS 인스턴스 및 Lambda 교체 함수에 대한 보안 그룹 생성
다음 지침에 따라 AWS CLI를 사용하여 보안 그룹을 생성하십시오. 수행할 단계는 다음의 명령과 비슷합니다.
1. Secrets Manager Amazon VPC 엔드포인트의 보안 그룹:
참고: 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. (선택 사항) Amazon RDS 인스턴스에 대한 보안 그룹을 생성합니다.
참고: RDS 인스턴스가 기본 보안 그룹만 사용하는 경우 이 단계는 필수입니다.
$ aws ec2 create-security-group --vpc-id vpc-0abb11f5a28a8abe7 --group-name RDSInstanceSG --description "RDS Instance SG" { "GroupId": "sg-rds-instance" }
Amazon VPC 엔드포인트 및 Amazon RDS 인스턴스 보안 그룹에 규칙 추가
1. VPC에 대한 CIDR 범위 얻기:
$ aws ec2 describe-vpcs --vpc-ids vpc-0a05c93c7ef7a8a1c --query 'Vpcs[].CidrBlock' --output text 10.0.0.0/16
2. 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
3. Lambda 함수 보안 그룹으로부터의 인바운드 연결을 허용하도록 RDS 인스턴스 보안 그룹을 구성합니다.
참고:
- your-rds-security-group을 사용 중인 보안 그룹(기존 보안 그룹 또는 선택적 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 리소스에 보안 그룹 연결
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
2. 지침에 따라 다음과 유사한 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 인터페이스 엔드포인트를 생성하여 보안 그룹과 연결
다음과 유사한 인터페이스 엔드포인트를 생성하기 위한 지침을 따릅니다.
참고: your-region을 자신의 AWS 리전과 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-secrets를 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.
2. 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
3. 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 암호를 교체하려면 어떻게 해야 합니까?

관련 콘텐츠
- 질문됨 4일 전lg...
- 질문됨 한 달 전lg...
- 질문됨 6년 전lg...
- 질문됨 한 달 전lg...
- 질문됨 한 달 전lg...
- AWS 공식업데이트됨 일 년 전