Secrets Manager에서 보안 정보를 업데이트하면 AWS CloudFormation의 보안 정보가 자동으로 업데이트되지 않는 이유는 무엇입니까?

2분 분량
0

AWS Secrets Manager에서 보안 정보를 업데이트했지만 AWS CloudFormation 스택 업데이트 중에 동적 참조가 업데이트되지 않았습니다.

간략한 설명

Secrets Manager에서 보안 정보를 업데이트할 때 CloudFormation은 보안 정보 변경 값을 자동으로 감지하지 않습니다. 스택 업데이트 중에 CloudFormation은 동적 참조 자체를 변경하지 않는 한 동적 참조 값을 검색하지 않습니다.

Secrets Manager에서 보안 정보를 업데이트한 후에는 CloudFormation 스택을 업데이트하고 동적 참조 문자열에 VersionId도 지정해야 합니다. CloudFormation이 업데이트된 버전의 보안 정보를 검색하는 가장 좋은 방법은 VersionId를 지정하는 것입니다.

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다.

다음 예제 시나리오는 CloudFormation에서 Secrets Manager 동적 참조를 업데이트하는 방법을 보여줍니다.

1.    CloudFormation 템플릿에서 Secrets Manager 보안 정보를 동적으로 참조합니다.

예를 들어, 다음 CloudFormation 템플릿은 secret-id mysecret 및 secret-string **{"MyKey":"MyValue"}**가 있는 Secrets Manager 보안 정보를 동적으로 참조합니다.

Resources:
    SG:
        Type: AWS::EC2::SecurityGroup
        Properties:
            GroupDescription: '{{resolve:secretsmanager:mysecret:SecretString:MyKey}}'
            SecurityGroupIngress:
                  - IpProtocol: tcp
                    FromPort: 8080
                    ToPort: 8080
                    CidrIp: 0.0.0.0/0

참고: 앞의 동적 참조는GroupDescription 속성에 대한 MyValue에 대하여 확인됩니다.

2.    AWS 명령줄 인터페이스(AWS CLI)를 통해 update-secret 명령을 실행하여 Secrets Manager에서 보안 정보를 업데이트하고, secret-string을 지정합니다. 예제 시나리오에서 secret-string은 {\ "MyKey\”:\ "NewValue"} 입니다.

참고: VersionId는 AWS 관리 콘솔에 표시되지 않습니다. AWS 관리 콘솔을 통해 보안 정보를 업데이트한 경우 AWS CLI를 통해get-secret-value 명령을 실행하여 VersionId를 검색합니다.

3.    출력의 VersionId를 기록해 둡니다.

출력 예시:

$ aws secretsmanager update-secret --secret-id mysecret --secret-string {\"MyKey\":\"NewValue\"}
{
    "ARN": "arn:aws:secretsmanager:us-east-1:xxxxxxxxxxxx:secret:mysecret-ABCDeF",
    "Name": "mysecret",
    "VersionId": "ab01234c-5d67-89ef-01gh-2ijk345l6m78"
}

참고: 이전 출력의 VersionId “ab01234c-5d67-89ef-01gh-2ijk345l6m78"은 CloudFormation 스택에서 동적 참조에 자동으로 적용되지 않습니다.

4.    스택을 업데이트하고 동적 참조 문자열에 VersionId를 지정합니다. 예:

Resources:
    SG:
        Type: AWS::EC2::SecurityGroup
        Properties:
            GroupDescription: '{{resolve:secretsmanager:mysecret:SecretString:MyKey::ab01234c-5d67-89ef-01gh-2ijk345l6m78}}'
            SecurityGroupIngress:
                  - IpProtocol: tcp
                    FromPort: 8080
                    ToPort: 8080
                    CidrIp: 0.0.0.0/0

참고: 앞의 예제 템플릿에서 VersionId “ab01234c-5d67-89ef-01gh-2ijk345l6m78" 앞의 **::**은 올바른 구문입니다. 버전 단계를 지정할 필요가 없으므로 동적 참조 문자열의 이 섹션은 비워 둡니다.


AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠