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

최종 업데이트 날짜: 2022년 11월 22일

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

간략한 설명

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

해결 방법

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

중요:

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

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

--stack-name: 사용자가 변경 세트를 생성한 AWS CloudFormation 스택의 이름.

--parameter-override: 해당 리전에 대한 AWS Secrets Manager 리전 엔드포인트 및 템플릿이 생성한 Lambda 교체 함수의 이름.

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

참고: Amazon 리소스 이름(ARN) arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate을 정확하게 표시된 대로 사용해야 합니다.

템플릿에 대한 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 명령 execute-change-set를 실행합니다.

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(VPC)를 액세스하도록 Lambda 함수 구성

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

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

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

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

데이터베이스 또는 서비스와 Lambda 교체 함수가 있는 VPC가 인터넷에 액세스할 수 없는 경우 VPC 엔드포인트를 생성합니다. 프라이빗 서비스 엔드포인트가 있는 VPC를 구성하여 Secrets Manager에 액세스하고 VPC 내 엔드포인트에서 교체 함수를 활성화합니다. 다음과 비슷한 create-vpc-endpoint 명령을 실행합니다.

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

$ 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-0bacf4bbed67e4df5

Lambda 함수와 데이터베이스 또는 서비스 간의 네트워크 연결 설정

Lambda 함수가 필요한 네트워크 포트를 통해 데이터베이스 또는 서비스로 라우팅할 수 있는지 확인하십시오. 이는 데이터베이스 또는 서비스 및 관련 VPC 구성에 따라 다릅니다.

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

사용 사례에 맞게 교체 함수 사용자 정의

교체 템플릿은 createSecret 및 finishSecret 단계를 구현합니다. setSecret 및 testSecret 단계에서는 사용 사례 및 데이터베이스에 대해 수동으로 구현해야 합니다. 자세한 내용은 교체 작동 방식을 참조하세요.

보안 암호 교체 활성화

파라미터 --rotation-rulesAutomaticallyAfterDays를 사용하여 교체 주기의 일 수를 지정합니다.

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

자세한 내용은 AWS Secrets Manager 보안 정보 교체를 참조하세요.