암호화 키를 업데이트한 후에 다른 KMS 계정에서 AWS Secrets Manager 보안 암호에 액세스할 수 없고 오류 메시지가 나타납니다. 이를 해결하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2021년 1월 8일

AWS Secrets Manager 보안 암호를 검색하거나 액세스하려고 했지만 다음과 비슷한 오류 메시지를 수신했습니다.

"KMS에 대한 액세스가 허용되지 않음(Access to KMS is not allowed)", "내부 장애(InternalFailure)", 또는 "알 수 없는 오류 발생(An unknown error occurred)".

-또는-

“KMS 액세스가 허용되지 않습니다. 이 버전의 보안 암호는 현재 KMS 키로 암호화되지 않았습니다.(Access to KMS is not allowed. This version of secret is not encrypted with the current KMS key.)“

간략한 설명

Secrets Manager 보안 암호와 연결된 암호화 키를 변경하면 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 새 암호 키로 현재 또는 보안 암호의 이전 버전을 다시 암호화하지 않습니다. 즉, 새 KMS CMK로 보안 암호가 다시 암호화되지 않았기 때문에 교차 계정이라고도 하는 외부 계정은 보안 암호에 액세스할 수 없습니다. 보안 암호 값을 검색하려면 새 AWS Key Management Service(AWS KMS) 키를 사용하여 교차 계정에서 보안 암호를 다시 암호화해야 합니다.

참고: Secret Manager 콘솔을 사용하여 보안 암호와 연결된 암호화 키를 변경하면 새 버전의 보안 암호가 만들어지고 새 암호화 키로 암호화됩니다. 자세한 내용은 보안 암호의 암호화 및 복호화를 참조하세요.

해결 방법

다음 지침에 따라 새 KMS CMK 키로 암호를 다시 암호화합니다.

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

AWS Management Console

1.    Secrets Manager 콘솔을 여십시오.

2.    [Secret name]에서 보안 암호를 선택합니다.

3.    [보안 암호 값(Secret value)]에서 [(보안 암호 값 검색(Retrieve secret value)], [편집(Edit)]을 선택한 다음 [저장(Save)]을 선택합니다.

사용자는 "보안 암호 값이 성공적으로 편집되었습니다.(Your secret value has been successfully edited.)"라는 메시지를 수신합니다.

AWS CLI

보안 암호가 있는 소스 계정에서 다음 단계를 수행합니다.

1.    다음과 유사한 AWS CLI 명령 get-secret-value를 실행합니다.

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --query SecretString --output text

    {"CrossAccount":"DefaultEncryption"}

2.    creds.txt라는 파일을 만듭니다.

$ cat creds.txt
         
    {"CrossAccount":"DefaultEncryption"}

3.    AWS CLI update-secret 명령을 실행하여 다음과 유사한 암호화 키를 다시 암호화합니다.

$ aws secretsmanager update-secret --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --secret-string file://creds.txt
    {
    "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:cross-account",
    "Name": "cross-account",
    "VersionId": "f68246e8-1cfb-4c3b-952b-17c9298d3462"
    }
4.    교차 계정에서 다음과 유사한 AWS CLI 명령 get-secret-value를 실행합니다.
$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --version-stage AWSCURRENT --profile cross-account-user --region us-east-1 --query SecretString --output text

    {"CrossAccount":"DefaultEncryption"}