AWS::SecretsManager
변환
이 주제에서는 AWS::SecretsManager
변환 및 AWS::SecretsManager::RotationSchedule 리소스 유형을 사용하여 보안 암호 교체를 수행할 Lambda 함수를 지정하는 방법을 설명합니다.
AWS::SecretsManager
변환은 스택 템플릿에서 참조할 때 변경 세트를 사용하여 스택을 생성하거나 업데이트하는 경우 보안 암호 교체를 위한 Lambda 함수를 자동으로 생성하는 CloudFormation 매크로입니다. Lambda 함수는 처리된 템플릿의 중첩 스택에 배치됩니다. AWS::SecretsManager::RotationSchedule 리소스의 RotationType 속성 값을 기반으로 AWS Secrets Manager 교체 Lambda 함수
사용법
AWS::SecretsManager
변환을 사용하려면 CloudFormation 템플릿의 최상위 수준에서 이를 선언해야 합니다. 다른 템플릿 섹션에 포함된 변환으로 AWS::SecretsManager
을 사용할 수 없습니다.
선언에서는 리터럴 문자열 AWS::SecretsManager-2020-07-23
또는 AWS::SecretsManager-2024-09-16
을 해당 값으로 사용해야 합니다. 파라미터나 함수를 사용하여 변환 값을 지정할 수 없습니다.
구문
CloudFormation 템플릿에서 이 변환을 선언하려면 다음 구문을 사용합니다.
JSON
{ "Transform":"AWS::SecretsManager-
2020-07-23
", "Resources":{...
} }
YAML
Transform: AWS::SecretsManager-
2020-07-23
Resources:...
AWS::SecretsManager
변환은 추가 파라미터가 없는 독립 실행형 선언입니다. 대신 스택 템플릿에서 AWS::SecretsManager::RotationSchedule 리소스의 HostedRotationLambda 속성을 구성합니다. HostedRotationLambda 속성은 Lambda 함수를 지정하여 보안 암호 교체를 수행합니다.
AWS::SecretsManager-2024-09-16
의 새로운 기능
최신 버전의 AWS::SecretsManager
변환(AWS::SecretsManager-2024-09-16
)에는 다음과 같은 개선 사항이 도입되었습니다.
-
자동 Lambda 업그레이드 - CloudFormation 스택을 업데이트하면 이제 Lambda 함수가 런타임 구성 및 내부 종속 항목을 자동으로 업데이트합니다. 이를 통해 Secrets Manager에서 보안 암호 교체를 관리하는 가장 안전하고 신뢰할 수 있는 버전의 코드를 사용할 수 있습니다.
-
추가 속성 지원 - 새 변환은
DependsOn
속성을 포함하여HostedRotationLambda
속성과 함께 사용할 때AWS::SecretsManager::RotationSchedule
리소스 유형에 대한 추가 리소스 속성을 지원합니다.참고
두 버전 모두
DeletionPolicy
및UpdateReplacePolicy
속성을 지원합니다.
AWS::SecretsManager
변환의 이 새 버전에 대해 자세히 알아보려면 AWS 보안 블로그의 Introducing an enhanced version of the AWS Secrets Manager transform: AWS::SecretsManager-2024-09-16
예시
다음 부분 템플릿 예제에서는 템플릿에서 AWS::SecretsManager
변환(AWS::SecretsManager-2024-09-16
) 및 AWS::SecretsManager::RotationSchedule 리소스를 사용하는 방법을 보여줍니다. 이 예제에서 CloudFormation은 MySQL 단일 사용자 보안 암호 교체를 위한 Lambda 함수를 자동으로 생성합니다.
보안 암호는 매일 자정(UTC)에 자동으로 교체되도록 설정됩니다. 교체 프로세스를 완료하는 데 최대 2시간이 걸릴 수 있습니다. 교체 일정을 업데이트해도 즉시 교체가 시작되지 않습니다.
JSON
{ "AWSTemplateFormatVersion":"2010-09-09", "Transform":"AWS::SecretsManager-2024-09-16", "Resources":{
...
"MySecretRotationSchedule
":{ "Type":"AWS::SecretsManager::RotationSchedule", "DependsOn":"logical name of AWS::SecretsManager::SecretTargetAttachment resource
", "Properties":{ "SecretId":{ "Ref":"logical name of AWS::SecretsManager::Secret resource
" }, "HostedRotationLambda":{ "RotationType":"MySQLSingleUser", "RotationLambdaName":"name of Lambda function to be created
", "VpcSecurityGroupIds":{ "Fn::GetAtt":[ "logical name of AWS::EC2::SecurityGroup resource
", "GroupId" ] }, "VpcSubnetIds":{ "Fn::Join":[ ",", [ { "Ref":"logical name of primary subnet
" }, { "Ref":"logical name of secondary subnet
" } ] ] } }, "RotationRules":{ "ScheduleExpression":"cron(0 0 * * ? *)", "Duration":"2h" }, "RotateImmediatelyOnUpdate":false } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::SecretsManager-2024-09-16 Resources:
...
MySecretRotationSchedule
: Type: AWS::SecretsManager::RotationSchedule DependsOn:logical name of AWS::SecretsManager::SecretTargetAttachment resource
Properties: SecretId: !Reflogical name of AWS::SecretsManager::Secret resource
HostedRotationLambda: RotationType: MySQLSingleUser RotationLambdaName:name of Lambda function to be created
VpcSecurityGroupIds: !GetAttlogical name of AWS::EC2::SecurityGroup resource
.GroupId VpcSubnetIds: Fn::Join: - "," - - Ref:logical name of primary subnet
- Ref:logical name of secondary subnet
RotationRules: ScheduleExpression: cron(0 0 * * ? *) Duration: 2h RotateImmediatelyOnUpdate: false
관련 리소스
보안 암호 교체를 설정하는 데 사용할 수 있는 전체 CloudFormation 템플릿 예제는 AWS::SecretsManager::RotationSchedule
리소스의 예제 섹션을 참조하세요.
매크로 사용에 대한 일반적인 고려 사항은 고려 사항의 내용을 참조하세요.