Amazon SNS 암호화 키 및 비용 관리 - Amazon Simple Notification Service

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

Amazon SNS 암호화 키 및 비용 관리

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

참고

Amazon은 대칭 암호화 KMS 키SNS만 지원합니다. 다른 유형의 KMS 키를 사용하여 서비스 리소스를 암호화할 수 없습니다. KMS 키가 대칭 암호화 키인지 여부를 결정하는 데 도움이 필요하면 비대칭 KMS 키 식별을 참조하세요.

AWS KMS 비용 예측

비용을 예측하고 AWS 청구서를 더 잘 이해하려면 Amazon에서 를 사용하는 빈도를 알고 싶을 수 SNS 있습니다 AWS KMS key.

참고

다음 공식은 예상 비용에 대한 매우 좋은 아이디어를 제공할 수 있지만 Amazon 의 분산 특성으로 인해 실제 비용이 더 높을 수 있습니다SNS.

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

R = B / D * (2 * P)

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

D 는 데이터 키 재사용 기간입니다(초 - Amazon은 최대 5분 동안 데이터 키를 SNS 재사용합니다).

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 키에 대한 권한을 관리할 수도 있습니다. 자세한 내용은 에서 IAM 정책 사용을 AWS KMS 참조하세요.

Amazon AWS KMS 에 전송하고 Amazon 에서 수신하도록 전역 권한을 구성할 수 있지만 SNS에서는 IAM 정책의 Resource 섹션에서 특정 리전ARNKMSs의 를 모두 명시적으로 명명해야 합니다.

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

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

Amazon SNS 주제에 대한 고객 관리형 키를 선택하고 별칭을 사용하여 조건 KMS 키 와 함께 IAM 정책 또는 KMS 키 정책을 사용하여 키에 대한 액세스를 제어하는 경우 선택한 고객 관리형 키에도 별칭이 연결되어 kms:ResourceAliases있는지 확인합니다. 별칭을 사용하여 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.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) s3.amazonaws.com
    AWS Snowball importexport.amazonaws.com
    AWS Systems Manager Incident Manager

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

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

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

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

    중요

    주제에는 aws:SourceAccount 및 를 AWS KMS 정책에 추가하는 aws:SourceArn 것이 지원되지 EventBridge-to-encrypted 않습니다.

    { "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. 를 사용하여 주제에 SSE 대해 를 활성화합니다KMS.

  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