AWS Glue에서 AWS KMS 사이퍼텍스트에 대한 액세스가 거부된 400 오류를 해결하려면 어떻게 해야 합니까?

4분 분량
0

AWS Glue 크롤러 또는 AWS Glue ETL 작업을 실행할 때 400 오류가 발생합니다.

간략한 설명

AWS Glue를 사용할 때 Amazon Simple Service Solution(Amazon S3) 버킷과 같은 AWS 리소스에 액세스하려고 하면 다음 오류가 발생할 수 있습니다.

“사이퍼텍스트가 존재하지 않거나, 이 리전에 존재하지 않거나, 사용자가 액세스할 수 없는 고객 마스터 키를 의미합니다.”

AWS Glue 작업 또는 크롤러를 사용하여 AWS Key Management Service(AWS KMS) 키로 암호화된 AWS 서비스에 액세스할 때 이 오류가 발생합니다. 이 오류는 다음 이유 중 하나로 인해 발생할 가능성이 높습니다.

  • 암호화된 키에 액세스하려는 보안 주체에게 필요한 AWS KMS 권한이 없습니다.
  • AWS KMS 키가 존재하지 않거나 특정 AWS 리전에 존재하지 않습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류 메시지가 표시되는 경우 AWS CLI 최신 버전을 사용 중인지 확인합니다.

AWS Glue 역할 정책에 필요한 권한이 있는지 확인

먼저 사용 중인 AWS Glue 역할 정책에 리소스의 AWS KMS 키에 액세스하는 데 필요한 권한이 있는지 확인합니다.

예를 들어 AWSGlue-MyGlueCustomRole이라는 AWS Glue 역할이 있다고 가정해 보겠습니다. 이 역할은 AWS KMS 키 arn:aws:kms:us-east-1:XXXXXXXX9645:key/64d3e826-1a87-4cbc-95b8-fb386730a07 암호화된 S3 버킷에 액세스하는 것입니다. AWS Glue 역할 정책에는 기타 권한 외에도 다음과 같은 컨텍스트가 있어야 합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:XXXXXXXX9645:key/64d3e826-1a87-4cbc-95b8-fb386730a07"
        }
    ]
}

AWS KMS 키 정책에서 AWS Glue 역할을 허용하는지 확인합니다.

AWS KMS 키 정책에서는 AWS Glue 역할을 허용된 개체의 일부로 허용해야 합니다.

이전 예제에서 볼 때 AWS KMS 키 arn:aws:kms:us-east-1:XXXXXXXX9645:key/64d3e826-1a87-4cbc-95b8-fb386730a07 정책에는 다음과 같은 권한이 연결되어 있어야 합니다.

{
    "Sid": "Allow use of the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::XXXXXXXX9645:role/AWSGlue-MyGlueCustomRole "
        ]
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}

AWS KMS 키가 AWS Glue 작업과 동일한 리전에 있는지 확인합니다.

AWS KMS 키가 있는 리전을 확인하려면 다음 단계를 따릅니다.

1.    AWS KMS 콘솔을 엽니다.

2.    오류가 발생한 리전을 선택합니다.

3.    탐색 창에서 AWS 관리형 키 또는 고객 관리형 키를 선택합니다. 그런 다음 사용 중인 AWS KMS 키를 검색합니다. AWS CLI를 사용하여 AWS KMS 키를 검색할 수도 있습니다. 다음 명령은 키가 리전에 없는 경우 NotFoundException 오류를 반환합니다.

aws kms describe-key --key-id <Key-ID> --region <region-name>

참고: 이 예시에서는 <Key-ID><region-name>을 사용 중인 리전의 키 ID 및 이름으로 바꿔야 합니다.

4.    AWS CloudTrail API가 kms:Decryptkms:Encrypt를 호출하여 오류가 발생했는지 확인합니다. 또는 kms.amazonaws.com을 이벤트 소스로 사용하여 모든 이벤트 로그를 볼 수 있습니다.

교차 계정 예제

AWS Glue 역할과 AWS KMS 키가 다른 계정에 있는 경우 AWS 관리형 키가 아닌 고객 관리형 키를 사용하세요. AWS KMS 키는 원칙이 동일한 계정에서 제공되는 경우에만 사용할 수 있습니다. AWS 관리형 키의 키 정책은 수정할 수 없습니다. 두 번째 계정에서 AWS KMS 키에 액세스할 때는 원본과 대상 모두에 권한이 있는지 확인합니다.

계정 Y의 AWS Identity and Access Management(IAM) 사용자 X가 계정 Z의 AWS KMS 키를 사용할 수 있도록 허용하려는 경우를 가정해 보겠습니다. 이 경우 IAM 정책에 필요한 AWS KMS 작업이 있어야 합니다. AWS KMS 키 정책에서 동일한 작업을 허용해야 합니다. 자세한 내용은 다른 계정의 사용자가 AWS KMS 키를 사용하도록 허용을 참조하세요.

다음은 교차 계정에서 AWS KMS 키에 액세스할 때 발생하는 가장 일반적인 문제입니다.

오류 메시지가 서비스 제어 정책(SCP)으로 인해 발생한 경우 계정에 적용된 모든 SCP를 확인하세요. 이렇게 하면 kms:Decrypt 작업을 제한하는 SCP를 식별하는 데 도움이 됩니다. 영향을 받는 SCP를 업데이트하고 작업을 다시 시도하세요. 자세한 내용은 루트, OU 또는 계정에 연결된 정책 나열SCP 업데이트를 참조하세요. 이 오류의 다음 예를 참조하세요.

User: arn:aws:iam::XXXXXXXX9645:user/KMSDemO is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:XXXXXXXX9645:key/64d3e826-1a87-4cbc-95b8-fb386730a07 with an explicit deny in a service control policy"

IAM 엔터티에 권한 경계가 연결되어 있는 경우 경계는 엔터티의 최대 권한을 설정합니다. IAM 보안 주체의 권한 경계를 확인하여 필요한 AWS KMS 암호 해독 작업이 허용되는지 확인하십시오. 그런 다음 작업을 다시 시도합니다. 이 오류의 다음 예를 참조하세요.

User: arn:aws:iam::XXXXXXXX9645:user/KMSDemO is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:XXXXXXXX9645:key/64d3e826-1a87-4cbc-95b8-fb386730a07 because no permissions boundary allows the kms:Decrypt action"

VPC 엔드포인트를 사용하여 AWS KMS에 연결하는 경우 적용된 VPC 엔드포인트 정책을 확인합니다. 정책에서 kms:Decrypt 작업이 허용되는지 확인합니다. 이 오류의 다음 예를 참조하세요.

User: arn:aws:iam::XXXXXXXX9645:user/KMSDemO is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:XXXXXXXX9645:key/64d3e826-1a87-4cbc-95b8-fb386730a07 because no VPC endpoint policy allows the kms:Decrypt action"

관련 정보

AWS Glue에서 암호화 설정

AWS KMS의 키 정책

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