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

3분 분량
0

AWS Secrets Manager 암호를 검색하거나 액세스하고 싶은데 오류가 발생합니다.

해결 방법

Secrets Manager 암호를 검색하거나 액세스할 수 없는 경우 다음 오류 중 하나가 표시될 수 있습니다.

  • "You can't access a secret from a different AWS account if you encrypt the secret with the default KMS service key."
  • "Access to KMS is not allowed"
  • "InternalFailure"
  • "An unknown error occurred"
  • "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 계정에서 액세스할 수 없습니다.

교차 계정의 경우 ID 기반 정책 및 리소스 기반 정책에서 보안 주체가 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 키를 사용하여 암호를 다시 암호화해야 합니다.

참고: 기본적으로 Secrets Manager 콘솔을 사용하여 암호와 연결된 AWS KMS 키를 변경하면 새 버전의 암호가 생성되고 새 AWS KMS 키로 암호화됩니다. 자세한 내용은 AWS Secrets Manager의 암호 암호화 및 암호 해독을 참조하세요.

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

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

AWS Management Console

1.    Secrets Manager 콘솔을 엽니다.

2.    암호 이름에서 암호를 선택합니다.

3.    작업을 선택한 다음, 드롭다운 목록을 선택하고 AWS KMS 키를 선택하고, 새 암호화 키로 새 버전의 암호 생성 확인란을 선택한 다음, 저장을 선택합니다.

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 Secrets Manager 암호에 대한 권한

AWS 공식
AWS 공식업데이트됨 2년 전