Amazon SQS API 호출에 대한 AccessDenied 오류를 해결하려면 어떻게 해야 하나요?

2분 분량
0

Amazon Simple Queue Service(Amazon SQS) API 호출을 실행하면 다음 중 하나와 유사한 AccessDenied 오류가 나타납니다. “SendMessage 작업을 호출할 때 오류가 발생했습니다(AccessDenied): https://sqs.us-east-1.amazonaws.com/ 리소스에 대한 액세스가 거부되었습니다.” “SendMessage 작업을 호출할 때 오류가 발생했습니다(KMS.AccessdeniedException): 사용자 arn:aws:iam::xxxxx:user/xxxx은(는) 리소스 arn:aws:kms:us-east-1:xxxx:key/xxxx에 대하여 kms:GenerateDataKey를 수행할 권한이 없으므로 명시적으로 거부되었습니다” 이 문제를 해결하려면 어떻게 해야 하나요?

해결 방법

Amazon SQS 액세스 정책 및 IAM 정책

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

  • SQS 액세스 정책 또는 AWS Identity and Access Management(IAM) 정책에는 작업에 대한 액세스를 명시적으로 허용할 수 있는 권한이 포함되어 있어야 합니다.
  • SQS 대기열이 다른 계정에 있는 경우, SQS 액세스 정책과 IAM 정책 모두 명시적으로 액세스를 허용해야 합니다. 중요: 두 정책에서 명시적 거부는 명시적 허용을 재정의합니다.
  • 정책에서 조건 요소를 사용하는 경우 해당 조건이 액세스를 제한하는지 확인합니다.
  • 사용자 또는 역할이 서비스 제어 정책(SCP)을 사용하는 AWS Organizations 조직에 속한 경우 SCP가 사용자 또는 역할을 차단하고 있지 않은지 확인합니다.

API 호출에 사용되는 IAM 자격 증명을 확인하려면 다음get-caller-identity AWS CLI 명령을 실행합니다.

aws sts get-caller-identity

Amazon SQS 액세스 권한에 대한 자세한 내용은 Amazon SQS 대기열에 액세스하려면 어떤 권한이 필요합니까?를 참조하세요.

KMS 권한

Amazon SQS 대기열에 서버 측 암호화(SSE)가 설정되어 있는 경우 생산자와 소비자 모두에게 권한을 부여해야 합니다. 필요한 권한은AWS 관리형 AWS KMS 키 또는 고객 관리형 키로 제공할 수 있습니다. 고객 관리형 키 정책에는 각 대기열 생산자 및 소비자에 대한 액세스 권한이 포함되어야 합니다. 또는 KMS 키에 대한 KMS 권한을 포함하도록 IAM 정책을 업데이트할 수 있습니다.

  • 필수 생산자 권한: kms:GenerateDataKey 및 kms:Decrypt
  • 필수 소비자 권한: kms:Decrypt

다른 계정에서 SSE Amazon SQS 대기열에 액세스하려면 대기열에서 고객 관리형 키를 사용해야 합니다. 고객 관리형 키 정책만 수정할 수 있으므로 AWS 관리형 키를 사용할 수 없습니다. KMS 키 정책은 KMS 키의 교차 계정 액세스를 허용해야 하며, IAM 정책에는 KMS 키에 액세스할 수 있는 권한이 포함되어야 합니다.

자세한 내용은 키 관리를 참조하세요.

VPC 엔드포인트 정책

Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트를 통해 SQS에 액세스하는 경우, SQS VPC 엔드포인트 정책에서 액세스를 허용해야 합니다.

다음 예시 VPC 엔드포인트 정책은 IAM 사용자 MyUser가 SQS 대기열 MyQueeue로 메시지를 보낼 수 있도록 허용하도록 지정합니다. 기타 작업, IAM 사용자 및 SQS 리소스는 VPC 엔드포인트를 통한 액세스가 거부됩니다.

{
   "Statement": [{
      "Action": ["sqs:SendMessage"],
      "Effect": "Allow",
      "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue",
      "Principal": {
        "AWS": "arn:aws:iam:123456789012:user/MyUser"
      }
   }]
}