翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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キーを削除または無効にします。
-
カスタマーマネージドKMSキーを作成します。詳細については、AWS Key Management Service デベロッパーガイドのキーの作成を参照してください。
-
AWS サービスイベントソースが
kms:Decrypt
およびkms:GenerateDataKey
APIメソッドを使用できるようにするには、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
-
KMS キーARNの を使用して既存のSSEキューを設定します。
-
暗号化されたキューARNの をイベントソースに提供します。
プロデューサーの AWS KMS アクセス許可を設定する
データキー再利用期間が終了した場合、プロデューサーによる次回のSendMessage
またはSendMessageBatch
の呼び出しでは、kms:Decrypt
とkms: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 KMSGenerateDataKey
呼び出しをトリガーして新しいデータキーを取得します。また、次の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、エラーが発生する可能性があります。次のリファレンスでは、エラーおよび考えられるトラブルシューティング方法について説明します。