翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 つあります。
-
2 つめのトピックには、公開中のプリンシパルが 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 との間で送受信するグローバルアクセス許可を設定できますがSNS、 AWS KMS では、IAMポリシーの Resource
セクションの特定のリージョンARNKMSsで のフルネームを明示的に指定する必要があります。
また、 のキーポリシーで必要なアクセス許可 AWS KMS key が許可されていることを確認する必要があります。これを行うには、Amazon で暗号化されたメッセージを生成および消費するプリンシパルをKMS、キーポリシーのユーザーSNSとして指定します。
または、Amazon KMSARNで暗号化されたメッセージを受信するために発行およびサブスクライブするプリンシパルに割り当てられた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トピックにイベントを発行します。これらのイベントソースで暗号化されたトピックを操作できるようにするには、以下のステップを実行します。
-
カスタマーマネージドキーを使用します。詳細については、AWS Key Management Service デベロッパーガイドのキーの作成を参照してください。
-
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.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ロールを指定する必要があります。
-
aws:SourceAccount
およびaws:SourceArn
条件キーをKMSリソースポリシーに追加して、混乱した代理攻撃からKMSキーをさらに保護します。それぞれの場合の正確な詳細については、サービス固有のドキュメントリスト (上記) を参照してください。重要
AWS KMS ポリシー
aws:SourceArn
へのaws:SourceAccount
と の追加は、トピックでは 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
" } } } -
を使用してトピックSSEで を有効にしますKMS。
-
暗号化されたトピック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