AWS::SecretsManager 변환 - AWS CloudFormation

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 리소스 유형에 대한 추가 리소스 속성을 지원합니다.

    참고

    두 버전 모두 DeletionPolicyUpdateReplacePolicy 속성을 지원합니다.

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: !Ref logical name of AWS::SecretsManager::Secret resource HostedRotationLambda: RotationType: MySQLSingleUser RotationLambdaName: name of Lambda function to be created VpcSecurityGroupIds: !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

보안 암호 교체를 설정하는 데 사용할 수 있는 전체 CloudFormation 템플릿 예제는 AWS::SecretsManager::RotationSchedule 리소스의 예제 섹션을 참조하세요.

매크로 사용에 대한 일반적인 고려 사항은 고려 사항의 내용을 참조하세요.