Amazon SQS キー管理 - Amazon Simple Queue Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SQS キー管理

Amazon は AWS Key Management Service (KMS) とSQS統合して、サーバー側の暗号化 () のKMSキーを管理しますSSE。SSE 情報とキー管理の定義Amazon での保管時の暗号化 SQSについては、「」を参照してください。Amazon SQSはKMSキーを使用して、メッセージを暗号化および復号するデータキーを検証および保護します。以下のセクションでは、Amazon SQSサービスのKMSキーとデータキーの操作について説明します。

AWS KMS 許可を設定する

すべてのKMSキーにはキーポリシーが必要です。Amazon の AWS マネージドキーのKMSキーポリシーを変更することはできませんSQS。このKMSキーのポリシーには、暗号化されたキューを使用するためのアカウント内のすべてのプリンシパル (Amazon の使用が許可されているSQS) のアクセス許可が含まれています。

カスタマーマネージドKMSキーの場合、キュープロデューサーとコンシューマーごとにアクセス許可を追加するようにキーポリシーを設定する必要があります。これを行うには、KMSキーポリシーでプロデューサーとコンシューマーをユーザーとして名前付けします。アクセス AWS KMS 許可の詳細については、「 デベロッパーガイド」のAWS KMS 「リソースとオペレーション」またはAWS KMS API「アクセス許可リファレンス」を参照してください。 AWS Key Management Service

または、暗号化されたメッセージを生成および消費するプリンシパルに割り当てられたIAMポリシーで必要なアクセス許可を指定することもできます。詳細については、「 デベロッパーガイド」の「 でIAMポリシーを使用する AWS KMS」を参照してください。 AWS Key Management Service

注記

Amazon との間で送受信するグローバルアクセス許可を設定できますがSQS、 IAM ポリシーの Resourceセクションで、特定のリージョンARNのKMSキーの完全な名前を明示的に指定 AWS KMS する必要があります。

AWS サービスのKMSアクセス許可を設定する

いくつかの AWS サービスは、Amazon SQSキューにイベントを送信できるイベントソースとして機能します。これらのイベントソースが暗号化されたキューと連携できるようにするには、カスタマーマネージドKMSキーを作成し、 AWS KMS APIサービスが必要なメソッドを使用するためのアクセス許可を キーポリシーに追加する必要があります。アクセス許可を設定するには、次の手順を実行します。

警告

Amazon SQS メッセージを暗号化するためのKMSキーを変更する場合、古いKMSキーで暗号化された既存のメッセージは、そのキーで暗号化されたままになることに注意してください。これらのメッセージを復号するには、古いKMSキーを保持し、そのキーポリシーが Amazon SQSに kms:Decrypt および のアクセス許可を付与していることを確認する必要がありますkms:GenerateDataKey。新しいメッセージを暗号化するための新しいKMSキーに更新したら、古いKMSキーで暗号化された既存のメッセージがすべて処理され、キューから削除されたことを確認してから、古いKMSキーを削除または無効にします。

  1. カスタマーマネージドKMSキーを作成します。詳細については、AWS Key Management Service デベロッパーガイドキーの作成を参照してください。

  2. AWS サービスイベントソースが kms:Decryptおよび kms:GenerateDataKeyAPIメソッドを使用できるようにするには、KMSキーポリシーに次のステートメントを追加します。

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

    上記の例の「Service」をイベント出典のサービス名に置き換えます。イベントソースには、次のサービスが含まれます。

    [イベントソース] サービス名
    Amazon CloudWatch イベント events.amazonaws.com
    Amazon S3イベント通知について s3.amazonaws.com
    Amazon SNSトピックサブスクリプション sns.amazonaws.com
  3. KMS キーARNの を使用して既存のSSEキューを設定します

  4. 暗号化されたキューARNの をイベントソースに提供します。

プロデューサーの AWS KMS アクセス許可を設定する

データキー再利用期間が終了した場合、プロデューサーによる次回のSendMessageまたはSendMessageBatchの呼び出しでは、kms:Decryptkms:GenerateDataKeyの呼び出しもトリガーされます。kms:Decryptの呼び出しでは、新しいデータキーを使用する前に整合性を検証します。したがって、プロデューサーはKMSキーの kms:Decryptおよび kms:GenerateDataKey アクセス許可を持っている必要があります。

次のステートメントをプロデューサーのIAMポリシーに追加します。キーリソースとキューリソースには、必ず正しいARN値を使用してください。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "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" }] }

コンシューマーの AWS KMS アクセス許可を設定する

データキー再利用期間が終了した場合、コンシューマーが次回に ReceiveMessage を呼び出すと、それを使用する前に新しいデータキーの整合性を検証するために、kms:Decrypt の呼び出しもトリガーされます。したがって、コンシューマーは、指定されたキュー内のメッセージを暗号化するために使用されるKMSキーに対するkms:Decryptアクセス許可を持っている必要があります。キューがデッドレターキュー として機能する場合、コンシューマーはソースキュー内のメッセージの暗号化に使用される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" }] }

混乱した代理保護によるアクセス許可の設定 AWS KMS

キーポリシーステートメントのプリンシパルが AWS サービスプリンシパルの場合、aws:SourceArn または aws:SourceAccount のグローバル条件キーを使用して混乱した使節問題から保護できます。これらの条件キーを使用するには、値を暗号化されているリソースの Amazon リソースネーム (ARN) に設定します。リソースARNの がわからない場合は、aws:SourceAccount代わりに を使用します。

このKMSキーポリシーでは、アカウントが所有するサービスの特定のリソース111122223333がKMS、Amazon SSEの使用中に発生する Decrypt および GenerateDataKeyアクションを呼び出すことができますSQS。

{ "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、無料利用枠を超える料金が発生する可能性があります。

  • データキーは暗号化用と復号化用に別々にキャッシュされますが、再利用期間はデータキーの両方のコピーに適用されます。

  • データキーの再利用期間が終了すると、 への次の呼び出し、SendMessageまたはSendMessageBatch通常、 メソッドへの AWS KMS GenerateDataKey呼び出しをトリガーして新しいデータキーを取得します。また、次の SendMessageおよび の呼び出しReceiveMessageでは、それぞれ への AWS KMS 呼び出しをトリガーDecryptして、データキーを使用する前にデータキーの整合性を検証します。

  • プリンシパル (AWS アカウント またはユーザー) はデータキーを共有しません (一意のプリンシパルによって送信されるメッセージは常に一意のデータキーを取得します)。したがって、 への呼び出し量は、データキーの再利用期間中に使用されている一意のプリンシパルの数の倍数 AWS KMS です。

AWS KMS コストの見積もり

コストを予測し、 AWS 請求書をよりよく理解するために、Amazon がKMSキーSQSを使用する頻度を知りたい場合があります。

注記

次の式は、予想されるコストを非常によく理解できますが、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つです。

  • 1つ目のキューのプロデューサー側プリンシパルは3つ、コンシューマー側プリンシパルは1つです。

  • 2つ目のキューのプロデューサー側プリンシパルは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、エラーが発生する可能性があります。次のリファレンスでは、エラーおよび考えられるトラブルシューティング方法について説明します。