키 관리 - Amazon Simple Notification Service

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

키 관리

다음 섹션에서는 AWS Key Management Service(AWS KMS)의 관리형 키 작업에 대해 설명합니다. 다음에 대한 자세한 정보

참고

Amazon SNS는 대칭 암호화 KMS 키만 지원합니다. 다른 유형의 KMS 키를 사용하여 서비스 리소스를 암호화할 수 없습니다. KMS 키가 대칭인지 암호화 키인지 확인하는 것과 관련된 도움말은 비대칭 KMS 키 식별을 참조하세요.

AWS KMS 비용 추정

요금을 예측하고 AWS 청구 내역을 효과적으로 이해하려면 Amazon SNS의 AWS KMS key 사용 빈도를 알아보면 됩니다.

참고

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

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

R = B / D * (2 * P)

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

D는 데이터 키 재사용 기간입니다(초 단위—Amazon SNS는 최대 5 분 동안 데이터 키를 재사용함).

P는 Amazon SNS 주제로 보내는 게시 보안 주체의 수입니다.

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

예 1: 게시자 1명 및 주제 1개에 대한 AWS KMS API 호출 수 계산

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

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

  • 데이터 키 재사용 기간은 5분(300초)입니다.

  • 1개의 주제가 있습니다.

  • 1개의 게시 보안 주체가 있습니다.

2,678,400 / 300 * (2 * 1) = 17,856

예 2: 여러 게시자 및 주제 2개에 대한 AWS KMS API 호출 수 계산

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

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

  • 데이터 키 재사용 기간은 5분(300초)입니다.

  • 2개의 주제가 있습니다.

  • 첫 번째 주제에는 3개의 게시 보안 주체가 있습니다.

  • 두 번째 주제에는 5개의 게시 보안 주체가 있습니다.

(2,419,200 / 300 * (2 * 3)) + (2,419,200 / 300 * (2 * 5)) = 129,024

AWS KMS 권한 구성

SSE를 사용하려면 먼저 AWS KMS key 정책을 구성하여 주제 암호화 및 메시지 암호화 및 해독을 허용하도록 해야 합니다. AWS KMS 권한에 대한 예제 및 자세한 정보는 AWS Key Management Service 개발자 안내서AWS KMS API 권한: 작업 및 리소스 참조를 참조하세요. Amazon SNS 주제에 서버 측 암호화를 설정하는 방법에 대한 자세한 내용은 Amazon SNS 주제에 서버 측 암호화 설정 섹션을 참조하세요.

참고

IAM 정책을 사용하여 대칭 암호화 KMS 키 권한을 관리할 수도 있습니다. 자세한 정보는 AWS KMS에 IAM 정책 사용을 참조하세요.

Amazon SNS와 송수신하기 위한 전역 권한을 구성해도 되지만, AWS KMS는 IAM 정책의 Resource 섹션에 구체적인 리전별 KMS의 전체 ARN을 명시적으로 지정할 것을 요구합니다.

또한 AWS KMS key의 키 정책에서 필수 권한을 허용하는지 확인해야 합니다. 이렇게 하려면 Amazon SNS에서 암호화된 메시지를 생산하고 소비하는 보안 주체를 KMS 키 정책에서 사용자로 지정해야 합니다.

또는 Amazon SNS에서 암호화된 메시지를 수신하기 위해 게시 및 구독하는 보안 주체에 할당된 IAM 정책에서 필요한 AWS KMS 작업과 KMS ARN을 지정할 수 있습니다. 자세한 정보는 AWS Key Management Service 개발자 안내서AWS KMS에 대한 액세스 관리를 참조하세요.

Amazon SNS 주제에 대한 고객 관리형 키를 선택하고 조건 키 kms:ResourceAliases와 함께 IAM 정책 또는 KMS 키 정책을 사용하여 KMS 키에 대한 액세스를 제어하도록 별칭을 사용하는 경우 선택한 고객 관리형 키에도 별칭이 연결되어 있어야 합니다. 별칭을 사용하여 KMS 키에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서별칭을 사용하여 KMS 키에 대한 액세스 제어를 참조하세요.

사용자가 SSE를 사용하여 주제에 메시지 보내기 허용

게시자에게 AWS KMS key에 대한 kms:GenerateDataKey*kms:Decrypt 권한이 있어야 합니다.

{ "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": [ "sns:Publish" ], "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }

AWS 서비스 및 암호화된 주제의 이벤트 소스 간 호환성 활성화

여러 AWS 서비스는 Amazon SNS 주제에 이벤트를 게시합니다. 이러한 이벤트 소스가 암호화된 주제와 연동되도록 하려면 다음 단계를 수행해야 합니다.

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

  2. AWS 서비스에서 kms:GenerateDataKey*kms:Decrypt 권한을 갖도록 하려면 KMS 정책에 다음 문을 추가합니다.

    { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }
    이벤트 소스 서비스 보안 주체
    Amazon CloudWatch cloudwatch.amazonaws.com
    Amazon CloudWatch Events events.amazonaws.com
    AWS CodeCommit codecommit.amazonaws.com
    AWS CodeStar codestar-notifications.amazonaws.com
    AWS Database Migration Service dms.amazonaws.com
    AWS Directory Service ds.amazonaws.com
    Amazon DynamoDB dynamodb.amazonaws.com
    Amazon Inspector inspector.amazonaws.com
    Amazon Redshift redshift.amazonaws.com
    Amazon RDS events.rds.amazonaws.com
    Amazon S3 Glacier glacier.amazonaws.com
    Amazon Simple Email Service ses.amazonaws.com
    Amazon Simple Storage Service s3.amazonaws.com
    AWS Snowball importexport.amazonaws.com
    AWS Systems Manager Incident Manager

    AWS Systems Manager Incident Manager는 다음 2가지 서비스 원칙으로 구성됩니다.

    ssm-incidents.amazonaws.com; ssm-contacts.amazonaws.com
    참고

    일부 Amazon SNS 이벤트 소스는 AWS KMS key 정책에서 IAM 역할(서비스 보안 주체 아님)을 제공해야 합니다.

  3. aws:SourceAccountaws:SourceArn 조건 키를 KMS 리소스 정책에 추가하여 혼동된 대리자 공격으로부터 KMS 키를 더 보호합니다. 각 경우에 대한 정확한 세부 정보는 서비스별 설명서 목록(위)을 참조하세요.

    중요

    EventBridge-암호화된 주제에는 AWS KMS 정책에 aws:SourceAccountaws:SourceArn 추가가 지원되지 않습니다.

    { "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "customer-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type:customer-resource-id" } } }
  4. KMS를 사용하여 주제의 SSE를 활성화합니다.

  5. 암호화된 주제의 ARN을 이벤트 소스에 제공합니다.

AWS KMS 오류

Amazon SNS 및 AWS KMS로 작업할 때 오류가 발생할 수 있습니다. 아래 목록에서 이러한 오류와 문제 해결 방법을 설명합니다.

KMSAccessDeniedException

암호화 텍스트가 존재하지 않는 키 또는 액세스 권한이 없는 키를 참조합니다.

HTTP 상태 코드: 400

KMSDisabledException

지정한 KMS가 활성화되지 않아서 요청이 거부되었습니다.

HTTP 상태 코드: 400

KMSInvalidStateException

지정한 리소스의 상태가 이 요청에 유효하지 않아서 요청이 거부되었습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS KMS keys의 키 상태를 참조하세요.

HTTP 상태 코드: 400

KMSNotFoundException

지정한 엔터티 또는 리소스를 찾을 수 없으므로 요청이 거부되었습니다.

HTTP 상태 코드: 400

KMSOptInRequired

AWS 액세스 키 ID는 서비스에 대한 구독이 필요합니다.

HTTP 상태 코드: 403

KMSThrottlingException

요청 제한 때문에 요청이 거부되었습니다. 제한에 대한 자세한 정보는 AWS Key Management Service 개발자 안내서의 할당량을 참조하세요.

HTTP 상태 코드: 400