지원되지 않는 데이터베이스의 AWS Secrets Manager 보안 암호에 대한 교체 함수는 어떻게 생성합니까?

최종 업데이트 날짜: 2020년 2월 26일

다른 데이터베이스 또는 타사 서비스에 대한 AWS Secrets Manager 보안 암호를 교체하는 AWS Lambda 함수를 생성하려면 어떻게 해야 합니까?

간략한 설명

Amazon Relational Database Service(Amazon RDS) 지원 데이터베이스 및 기타 AWS 지원 서비스로 생성된 Secrets Manager 보안 암호는 Lambda 교체를 자동으로 생성합니다. 지원되지 않는 AWS 데이터베이스 및 서비스의 경우 Lambda 함수를 수동으로 생성할 수 있습니다.

해결 방법

일반 교체 함수 템플릿을 사용하여 보안 암호를 교체합니다. 다른 데이터베이스 또는 서비스에 대한 보안 암호 교체를 활성화하기 전에 Lambda 교체 함수에 대한 코드를 생성해야 합니다.

일반 교체 함수 템플릿을 기반으로 AWS CloudFormation 변경 세트 생성

중요: 시작하기 전에 AWS 명령줄 인터페이스(AWS CLI)를 설치구성해야 합니다.

다음 값에 대해 AWS CLI 명령 create-cloud-formation-change-set를 실행합니다.

-stack-name 변경 세트를 생성할 AWS CloudFormation의 이름입니다.

-parameter-override 리전의 AWS Secrets Manager 엔드포인트 URL과 템플릿이 생성하는 Lambda 교체 함수의 이름입니다.

aws serverlessrepo create-cloud-formation-change-set --application-id arn:aws:serverlessrepo:us-east-1:123456789012: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

템플릿에 대해 AWS CloudFormation 변경 세트가 생성됩니다. AWS CloudFormation 스택 이름은 aws-serverless-repository-로 시작하고 스택 상태 코드REVIEW_IN_PROGRESS로 설정됩니다.

변경 세트를 사용하여 스택 업데이트

create-cloud-formation-change-set 명령은 ApplicationId, ChangeSetId, SemanticVersionStackId를 반환합니다. 스택 상태를 업데이트하려면 changeSetIdchange-set-name에 제공해야 합니다. change-set-name은 출력을 생성하지 않으며 스택 상태 코드를 CREATE_COMPLETE로 변경합니다. AWS CloudFormation 스택은 Lambda 함수와 필요한 권한을 사용하여 Lambda 함수에 연결된 IAM 역할을 생성합니다.

다음 AWS CLI 명령을 실행합니다.

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

Lambda 함수가 생성되었는지 확인

다음 AWS CLI 명령을 실행합니다.

aws lambda list-functions

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

참고: Lambda 함수의 이름은 -parameter-overrides에 지정된 함수 이름의 값입니다.

Amazon Virtual Private Cloud(Amazon VPC) 액세스를 위한 Lambda 함수 구성

데이터베이스 또는 서비스가 Amazon VPC에 상주하는 경우 다음 명령을 실행합니다. update-function-configuration 명령은 Lambda 교체 함수가 VPC에서 실행되도록 구성합니다. VPC 서브넷 ID와 보안 그룹 ID를 제공해야 합니다. 자세한 내용은 Amazon VPC의 리소스에 액세스하도록 Lambda 함수 구성을 참조하십시오.

참고: 데이터베이스 또는 서비스가 Amazon VPC에 상주하지 않는 경우 이 단계를 건너뜁니다.

aws lambda update-function-configuration --function-name MySecretsManagerRotationFunction --vpc-config SubnetIds=COMMA SEPARATED LIST OF VPC SUBNET IDS,SecurityGroupIds=COMMA SEPARATED LIST OF SECURITY GROUP IDs

Secrets Manager 서비스에 대한 VPC 엔드포인트 생성

데이터베이스 또는 서비스 및 Lambda 교체 함수가 있는 VPC가 인터넷에 액세스할 수 없는 경우 Secrets Manager용 프라이빗 서비스 엔드포인트를 사용하여 VPC를 구성합니다. 이렇게 하면 교체 함수가 VPC의 엔드포인트에서 Secrets Manager에 액세스할 수 있습니다. 다음 AWS CLI 명령 create-vpc-endpoint를 실행합니다.

참고: 데이터베이스 또는 서비스가 Amazon VPC에 상주하지 않는 경우 이 단계를 건너뜁니다.

aws ec2 create-vpc-endpoint --vpc-id VPC ID --vpc-endpoint-type Interface --service-name com.amazonaws.REGION.secretsmanager --subnet-ids SPACE SEPARATED LIST OF VPC SUBNET IDS --security-group-ids SPACE SEPARATED LIST OF SECURITY GROUP IDs --private-dns-enabled

교체 시나리오 사용자 지정

교체 시나리오를 사용자 지정합니다. 자세한 내용은 Lambda 교체 함수 이해 및 사용자 지정을 참조하십시오.

보안 암호에 대한 교체 활성화

1.    보안 암호에 대한 교체를 활성화합니다. 자세한 내용은 다른 데이터베이스 또는 서비스에 대한 보안 암호 교체 활성화를 참조하십시오.

2.    -rotation-rules AutomaticallyAfterDays 파라미터를 사용하여 교체 간의 일수를 지정합니다.

aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --rotation-lambda-arn arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction --rotation-rules AutomaticallyAfterDays=7