암호화된 AWS Secrets Manager 보안 암호에 액세스하는 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

AWS Secrets Manager 보안 암호를 검색하거나 액세스하려고 했지만 다음 중 하나와 유사한 오류를 수신했습니다.

“기본 KMS 서비스 키로 보안 암호를 암호화하면 다른 AWS 계정에서 보안 암호에 액세스할 수 없습니다.“ "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.)“

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

다른 계정의 보안 암호에 액세스할 때 보안 암호가 AWS KMS 관리형 키로 암호화되지 않았는지 확인합니다.

AWS 관리형 키 정책은 읽기 전용이므로 편집할 수 없습니다. 하지만 AWS Key Management Service(AWS KMS) 관리형 키 및 고객 관리형 키 정책을 볼 수 있습니다. AWS KMS 관리형 키 정책은 편집할 수 없으므로 이러한 키 정책에 대해 교차 계정 권한을 부여할 수 없습니다. AWS KMS 관리형 키를 사용하여 암호화된 Secrets Manager 보안 암호는 다른 AWS 계정에서 액세스할 수 없습니다.

교차 계정의 경우 자격 증명 기반 정책 및 리소스 기반 정책에서 보안 주체가 AWS KMS 키에 액세스할 수 있도록 허용하는지 확인합니다.

자격 증명 정책에서는 보안 주체가 다음과 유사하게 AWS KMS 키에 액세스할 수 있도록 허용해야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:Region:AccountID:key/EncryptionKey"
    }
  ]
}

리소스 기반 정책은 다음과 유사하게 보안 주체가 AWS KMS 키에 액세스할 수 있도록 허용해야 합니다.

{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::AccountID:user/UserName",
      "arn:aws:iam::AccountID:role/RoleName"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

AWS KMS 키가 업데이트된 후 보안 암호가 새 AWS KMS 키로 암호화되었는지 확인합니다.

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

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

새 AWS KMS 키로 보안 암호를 다시 암호화합니다.

다음 단계에 따라 AWS Management Console 또는 AWS CLI를 사용하여 새 AWS KMS 키로 보안 암호를 다시 암호화합니다.

AWS Management Console

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

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

3.    **작업(Action)**을 선택한 다음 드롭다운 목록을 선택하고 AWS KMS 키를 선택한 다음 새 암호화 키로 새 버전의 암호 만들기(Create new version of secret with new encryption key) 확인란을 선택하고 **저장(Save)**을 선택합니다.

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 명령을 실행하여 다음과 유사한 암호화 키를 다시 암호화합니다.

.    참고: 고객 관리형 키를 사용하는 경우 키에 대한 kms:GenerateDataKeykms:Decrypt 권한도 있어야 합니다.

$ 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

    {"CrossAccount":"DefaultEncryption"}

관련 정보

AWS Secrets Manager 콘솔에서 리소스 기반 정책을 사용하여 AWS 계정 전반에 걸쳐 암호에 안전하게 액세스하는 방법

AWS 계정 간에 AWS Secrets Manager 보안 암호를 공유하려면 어떻게 해야 하나요?

다른 계정의 사용자에 대한 권한

AWS 공식
AWS 공식업데이트됨 6달 전