키 관리 - Amazon Simple Queue Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

키 관리

Amazon SQS는 (KMS) 와 통합되어 서버 측 암호화 AWS Key Management Service (SSE) 를 위한 KMS 키를 관리합니다. SSE 정보 및 키 관리 정의는 저장 시 암호화 섹션을 참조하세요. Amazon SQS는 KMS 키를 사용하여 메시지를 암호화하고 복호화하는 데이터 키를 검증하고 보호합니다. 다음 단원에서는 Amazon SQS 서비스에서 KMS 키 및 데이터 키를 사용하는 작업에 대해 설명합니다.

AWS KMS 권한 구성

모든 KMS 키에는 키 정책이 있어야 합니다. Amazon SQS의 AWS 관리형 KMS 키의 키 정책은 수정할 수 없다는 점에 유의하십시오. 이 KMS 키의 정책에는 해당 계정의 모든 주체(Amazon SQS를 사용할 권한이 있는 주체)가 암호화된 대기열을 사용할 수 있는 권한이 포함되어 있습니다.

고객 관리형 KMS 키의 경우 각 대기열 생산자 및 소비자에 대한 권한을 추가하도록 키 정책을 구성해야 합니다. 이렇게 하려면 KMS 키 정책에서 생산자와 소비자를 사용자로 지정하면 됩니다. AWS KMS 권한에 대한 자세한 내용은 AWS Key Management Service 개발자 AWS KMS 안내서의 리소스 및 운영 또는 AWS KMS API 권한 참조를 참조하십시오.

또는 필요한 권한을 암호화된 메시지를 생산 및 소비하는 보안 주체에게 할당된 IAM 정책에 지정해도 됩니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 AWS KMS로 IAM 정책 사용을 참조하세요.

참고

Amazon SQS에서 보내고 받을 수 있는 글로벌 권한을 구성할 수 있지만, IAM 정책 섹션에서 특정 지역의 KMS 키 전체 ARN 이름을 명시적으로 AWS KMS 지정해야 합니다. Resource

서비스에 대한 KMS 권한을 구성합니다 AWS .

여러 AWS 서비스가 Amazon SQS 대기열로 이벤트를 전송할 수 있는 이벤트 소스 역할을 합니다. 이러한 이벤트 소스가 암호화된 대기열과 함께 작동하도록 하려면 고객 관리형 KMS 키를 생성하고 서비스가 필요한 API 방법을 사용할 수 있는 권한을 키 정책에 추가해야 합니다. AWS KMS 권한을 구성하려면 다음 단계를 수행합니다.

  1. 고객 관리형 KMS 키를 생성합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 키 생성을 참조하세요.

  2. AWS 서비스 이벤트 소스가 kms:GenerateDataKeykms:Decrypt API 메서드를 사용할 수 있도록 허용하려면 KMS 키 정책에 다음 명령문을 추가하십시오.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }] }

    위의 예에서 “service”를 이벤트 소스의 서비스 이름으로 바꿉니다. 이벤트 소스에는 다음 서비스가 포함됩니다.

    이벤트 소스 서비스 이름
    아마존 CloudWatch 이벤트 events.amazonaws.com
    Amazon S3 이벤트 알림 s3.amazonaws.com
    Amazon SNS 주제 구독 sns.amazonaws.com
  3. KMS 키의 ARN을 사용하여 기존 SSE 대기열을 구성합니다.

  4. 암호화된 대기열의 ARN을 이벤트 소스에 제공합니다.

생산자의 KMS 권한 구성

데이터 키 재사용 기간이 만료되면 다음에 생산자가 SendMessage 또는 SendMessageBatch를 호출했을 때 kms:GenerateDataKeykms:Decrypt 호출도 트리거됩니다. kms:Decrypt 호출은 새 데이터 키를 사용하기 전에 이 데이터 키의 무결성을 확인하기 위한 것입니다. 따라서 생산자에게 KMS 키의 kms:GenerateDataKeykms:Decrypt 권한이 있어야 합니다.

생산자의 IAM 정책에 다음 문을 추가합니다. 키 리소스와 대기열 리소스에 올바른 ARN 값을 사용해야 합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" }] }

소비자의 KMS 권한 구성

데이터 키 재사용 기간이 만료되면 다음에 소비자가 ReceiveMessage를 호출했을 때 kms:Decrypt 호출도 트리거되며, 이는 새 데이터 키를 사용하기 전에 이 데이터 키의 무결성을 확인하기 위한 것입니다. 따라서 지정된 대기열에서 메시지 암호화에 사용한 KMS 키의 kms:Decrypt 권한이 소비자에게 있어야 합니다. 이 대기열이 DLQ(Dead Letter Queue)인 경우, 소비자는 소스 대기열에서 메시지 암호화에 사용한 KMS 키에 대한 kms:Decrypt 권한도 가지고 있어야 합니다. 소비자의 IAM 정책에 다음 문을 추가합니다. 키 리소스와 대기열 리소스에 올바른 ARN 값을 사용해야 합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" }] }

혼동된 대리자 보호를 사용하여 KMS 권한 구성

키 정책문의 보안 주체가 AWS 서비스 보안 주체인 경우 aws:SourceArn 또는 aws:SourceAccount 전역 조건 키를 사용하여 혼동된 대리자 문제를 방지할 수 있습니다. 이러한 조건 키를 사용하려면 값을 암호화되는 리소스의 Amazon 리소스 이름(ARN)으로 설정합니다. 리소스의 ARN을 모르면 aws:SourceAccount를 대신 사용합니다.

이 KMS 키 정책에서는 계정별로 소유한 서비스의 특정 리소스가 Amazon SQS의 SSE 사용 중에 발생하는 111122223333Decrypt 작업을 위해 KMS를 호출할 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "<replaceable>service</replaceable>.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:service::111122223333:resource" ] } } }] }

SSE가 활성화된 Amazon SQS 대기열을 사용하는 경우 다음 서비스에서 aws:SourceArn을 지원합니다.

  • Amazon SNS

  • Amazon S3

  • CloudWatch 이벤트

  • AWS Lambda

  • CodeBuild

  • Amazon Connect Customer Profiles

  • AWS Auto Scaling

  • Amazon Chime

데이터 키 재사용 기간 이해

데이터 키 재사용 기간은 Amazon SQS가 한 데이터 키를 재사용할 수 있는 최대 기간을 정의합니다. 데이터 키 재사용 기간이 종료되면 Amazon SQS에서 새 데이터 키를 생성합니다. 재사용 기간에 대한 다음 지침에 유의하십시오.

  • 재사용 기간이 짧을수록 보안은 향상되지만 호출 횟수가 많아져 프리 AWS KMS 티어를 초과하여 요금이 부과될 수 있습니다.

  • 데이터 키는 암호화 및 암호 해독에 대해 별도로 캐시되지만 재사용 기간은 데이터 키의 두 복사본 모두에 적용됩니다.

  • 데이터 키 재사용 기간이 끝나면 SendMessageBatch 일반적으로 다음 번 호출이 SendMessage 발생하거나 새 데이터 키를 가져오기 위한 AWS KMS GenerateDataKey 메서드 호출이 트리거됩니다. 또한 다음 호출에서는 데이터 키를 사용하기 전에 데이터 키의 무결성을 AWS KMS Decrypt 확인하기 위한 호출을 각각 트리거합니다. SendMessage ReceiveMessage

  • 보안 주체 (AWS 계정 또는 사용자) 는 데이터 키를 공유하지 않습니다. 즉, 고유한 보안 주체가 보낸 메시지는 항상 고유한 데이터 키를 받습니다. 따라서 호출량은 데이터 키 재사용 AWS KMS 기간 동안 사용 중인 고유 보안 주체 수의 배수입니다.

비용 추정 AWS KMS

비용을 예측하고 AWS 청구서를 더 잘 이해하려면 Amazon SQS가 KMS 키를 얼마나 자주 사용하는지 알고 싶을 수 있습니다.

참고

다음 공식으로 예상되는 비용을 거의 정확하게 짐작할 수 있지만, Amazon SQS의 분산 특성상 실제 비용은 더 높을 수 있습니다.

대기열당 API 요청 수(R)를 계산하려면 다음 수식을 사용하세요.

R = (B / D) * (2 * P + C)

여기서 B는 청구 기간(초)입니다.

D데이터 키 재사용 기간(초)입니다.

P는 Amazon SQS 대기열로 전송하는 생성 보안 주체의 수입니다.

C는 Amazon SQS 대기열로부터 받는 소비 보안 주체의 수입니다.

중요

일반적으로, 생산 보안 주체에서 발생하는 비용이 소비 보안 주체의 두 배입니다. 자세한 설명은 데이터 키 재사용 기간 이해 섹션을 참조하세요.

생산자와 소비자의 사용자가 서로 다른 경우, 비용이 증가합니다.

다음은 계산 예제입니다. 정확한 요금 정보는 AWS Key Management Service 요금을 참조하세요.

예 1: 보안 주체 2명과 대기열 1개에 대한 AWS KMS API 호출 수 계산

이 예에서는 다음과 같이 가정합니다.

  • 청구 기간은 1월 1일부터 31일까지입니다(2,678,400초).

  • 데이터 키 재사용 기간은 5분(300초)로 설정되어 있습니다.

  • 대기열은 1개입니다.

  • 생산 보안 주체 1개와 소비 보안 주체 1개가 있습니다.

(2,678,400 / 300) * (2 * 1 + 1) = 26,784

예 2: 여러 생산자와 소비자, 그리고 대기열 2개에 대한 AWS KMS API 호출 수 계산

이 예에서는 다음과 같이 가정합니다.

  • 청구 기간은 2월 1일부터 28일까지입니다(2,419,200초).

  • 데이터 키 재사용 기간은 24시간(86,400초)으로 설정되어 있습니다.

  • 대기열은 2개입니다.

  • 첫 번째 대기열에 생산 보안 주체 3개와 소비 보안 주체 1개가 있습니다.

  • 두 번째 대기열에 생산 보안 주체 5개와 소비 보안 주체 2개가 있습니다.

(2,419,200 / 86,400 * (2 * 3 + 1)) + (2,419,200 / 86,400 * (2 * 5 + 2)) = 532

AWS KMS 오류

Amazon SQS 및 AWS KMS 을 (를) 사용하여 작업할 때 오류가 발생할 수 있습니다. 아래 참조에서 이러한 오류와 문제 해결 방법을 설명합니다.