기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
키 관리
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 권한을 구성하려면 다음 단계를 수행합니다.
-
고객 관리형 KMS 키를 생성합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 키 생성을 참조하세요.
-
AWS 서비스 이벤트 소스가
kms:GenerateDataKey
및kms: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
-
KMS 키의 ARN을 사용하여 기존 SSE 대기열을 구성합니다.
-
암호화된 대기열의 ARN을 이벤트 소스에 제공합니다.
생산자의 KMS 권한 구성
데이터 키 재사용 기간이 만료되면 다음에 생산자가 SendMessage
또는 SendMessageBatch
를 호출했을 때 kms:GenerateDataKey
및 kms:Decrypt
호출도 트리거됩니다. kms:Decrypt
호출은 새 데이터 키를 사용하기 전에 이 데이터 키의 무결성을 확인하기 위한 것입니다. 따라서 생산자에게 KMS 키의 kms:GenerateDataKey
및 kms: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 사용 중에 발생하는 111122223333
및 Decrypt
작업을 위해 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 KMSGenerateDataKey
메서드 호출이 트리거됩니다. 또한 다음 호출에서는 데이터 키를 사용하기 전에 데이터 키의 무결성을 AWS KMSDecrypt
확인하기 위한 호출을 각각 트리거합니다.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 을 (를) 사용하여 작업할 때 오류가 발생할 수 있습니다. 아래 참조에서 이러한 오류와 문제 해결 방법을 설명합니다.