

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

# 暗号化された Amazon SQS キューサブスクリプションによる Amazon SNS トピック暗号化の設定
<a name="sns-enable-encryption-for-topic-sqs-queue-subscriptions"></a>

トピックのサーバー側の暗号化 (SSE) を有効にしてトピックのデータを保護できます。暗号化された Amazon SQS キューにメッセージを送信することを Amazon SNS に許可するには、Amazon SQS キューに関連付けられたカスタマーマネージドキーのポリシーステートメントにより、 AWS KMS API アクション (`GenerateDataKey` と `Decrypt`) へのアクセス権を Amazon SNS サービスプリンシパルに付与する必要があります。SSE の使用の詳細については、「[サーバー側の暗号化を使用した Amazon SNS データの保護](sns-server-side-encryption.md)」を参照してください。

このトピックでは、 AWS マネジメントコンソールを使用して、暗号化された Amazon SQS キューサブスクリプションを持つ Amazon SNS トピックの SSE を有効にする方法について説明します。

## ステップ 1: カスタム KMS キーを作成する
<a name="create-custom-cmk"></a>

1. 少なくとも `AWSKeyManagementServicePowerUser` ポリシーを持つユーザーで [AWS KMS コンソール](https://console.aws.amazon.com/kms/)にサインインします。

1. [**キーの作成**] を選択します。

1. 対称暗号化 KMS キーを作成するには、**[Key type]**] (キーのタイプ) で **[Symmetric]** (対称) を選択します。

    AWS KMS コンソールで非対称 KMS キーを作成する方法については、「[非対称 KMS キーを作成する (コンソール)](https://docs.aws.amazon.com/kms/latest/developerguide/asymm-create-key.html#create-asymmetric-keys-console)」を参照してください。

1. **[Key usage]** (キーの使用) では、**[Encrypt and decrypt]** (暗号化および復号) オプションがすでに選択されています。

   MAC コードを生成して検証する KMS キーの作成方法については、「[HMAC KMS キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/hmac-create-key.html)」を参照してください。

   **[詳細オプション]** については、「[特定用途のキー](https://docs.aws.amazon.com/kms/latest/developerguide/key-types.html)」を参照してください。

1. [**次へ**] を選択します。

1. KMS キーのエイリアスを入力します。エイリアス名の先頭を **aws/** にすることはできません。**aws/** プレフィックスは、アカウント AWS マネージドキー で を表すために Amazon Web Services によって予約されています。
**注記**  
エイリアスを追加、削除、更新すると、KMS キーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「[AWS KMSの ABAC](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html)」および「[エイリアスを使用して KMS キーへのアクセスを制御する](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#hmac-key-concept)」を参照してください。

   エイリアスは KMS キーを識別するために使用する表示名です。保護する予定のデータタイプ、または KMS キーで使用する予定のアプリケーションを示すエイリアスを選択することをお勧めします。

   エイリアスは AWS マネジメントコンソールで KMS キーを作成するときに必要です。[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションを使用する場合、これらのオペレーションはオプションです。

1. (オプション) KMS キーの説明を入力します。

   今すぐ説明を追加するか、[キーの状態](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)が `Pending Deletion` または `Pending Replica Deletion` でない限り、後でいつでも更新できます。既存のカスタマーマネージドキーの説明を追加、変更、または削除するには、 で[説明を編集する](https://docs.aws.amazon.com/kms/latest/developerguide/editing-keys.html) AWS マネジメントコンソール か、[UpdateKeyDescription](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html) オペレーションを使用します。

1. (オプション) タグキーとオプションのタグ値を入力します。KMS キーに複数のタグを追加するには、[**Add tag**] (タグを追加) を選択します。
**注記**  
KMS キーのタグ付けまたはタグ解除により、KMS キーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「[AWS KMSの ABAC](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html)」および「[タグを使用してKMS キーへのアクセスを制御する](https://docs.aws.amazon.com/kms/latest/developerguide/tag-authorization.html)」を参照してください。

    AWS リソースにタグを追加すると、 AWS は使用量とコストをタグ別に集計したコスト配分レポートを生成します。タグは、KMS キーへのアクセスの制御にも使用できます。KMS キーのタグ付けについては、「[キーのタグ付け](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html)」および「[AWS KMSの ABAC](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html)」を参照してください。

1. [**次へ**] を選択します。

1. KMS キーを管理できる IAM ユーザーとロールを選択します。
**注記**  
このキーポリシーは、この KMS キー AWS アカウント を完全に制御します。これにより、アカウント管理者は IAM ポリシーを使用して、他のプリンシパルに KMS キーを管理する許可を付与できます。詳細については、「[デフォルトのキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html)」を参照してください。  
   
IAM ベストプラクティスでは、長期の認証情報を持つ IAM ユーザーの使用は推奨されていません。可能な限り、一時的な認証情報を提供する IAM ロールを使用してください。詳細については、「IAM ユーザーガイド」の「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

1. (オプション) 選択した IAM ユーザーとロールがこの KMS キーを削除しないようにするには、ページの下部にある [**Key deletion**] (キーの削除) セクションで、[**Allow key administrators to delete this key**] (キー管理者にこのキーの削除を許可する) のチェックボックスをオフにします。

1. [**次へ**] を選択します。

1. [暗号化オペレーション](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations)でキーを使用できる IAM ユーザーとロールを選択します。[**次へ**] を選択します。

1. [**キーポリシーの表示と編集**] ページで、次のステートメントをキーポリシーに追加し、[**完了**] を選択します。

   ```
   {
       "Sid": "Allow Amazon SNS to use this key",
       "Effect": "Allow",
       "Principal": {
           "Service": "sns.amazonaws.com"
       },
       "Action": [
           "kms:Decrypt",
           "kms:GenerateDataKey*"
       ],
       "Resource": "*"
   }
   ```

新しいカスタマーマネージドキーがキーのリストに表示されます。

## ステップ 2: 暗号化された Amazon SNS トピックを作成する
<a name="create-encrypted-topic"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. ナビゲーションパネルで、[**トピック**] を選択します。

1. **[トピックを作成]** を選択します。

1. [**新しいトピックの作成**] ダイアログボックスの [**トピック名**] に、トピックの名前 (例: `MyEncryptedTopic`) を入力し、[**トピックの作成**] を選択します。

1. [**暗号化**] セクションを展開し、以下の操作を実行します。

   1. [**サーバー側の暗号化を有効にする**] を選択します。

   1. カスタマーマネージドキーを指定します。詳細については、「[重要な用語](sns-server-side-encryption.md#sse-key-terms)」を参照してください。

      カスタマーマネージドキーのタイプごとに、**説明**、**アカウント**、およびカスタマーマネージドキー **ARN** が表示されます。
**重要**  
カスタマーマネージドキーの所有者ではない場合、または `kms:ListAliases` および `kms:DescribeKey` の許可がないアカウントでログインした場合、Amazon SNS コンソールでカスタマーマネージドキーに関する情報を表示できません。  
これらの許可を付与するように、カスタマーマネージドキーの所有者へ依頼してください。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMS API アクセス権限: アクションとリソースのリファレンス](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)」を参照してください。

   1. **[カスタマーマネージドキー]** で、[以前に作成した](#create-custom-cmk) **[MyCustomKey]** を選択してから、**[サーバー側の暗号化を有効化]** を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

   トピックの SSE が有効になり、[**マイトピック**] ページが表示されます。

   トピックの**暗号化**ステータス、 AWS **アカウント**、**カスタマーマネージドキー**、カスタマーマネージドキーの **ARN**、および**説明**が **[暗号化]** タブに表示されます。

暗号化された新しいトピックが、トピックのリストに表示されます。

## ステップ 3: 暗号化された Amazon SQS キューを作成してサブスクライブする
<a name="create-encrypted-queue"></a>

1. [Amazon SQS コンソール](https://console.aws.amazon.com/sqs/)にサインインします。

1. [**新しいキューの作成**] を選択します。

1. [**新しいキューの作成**] ページで、次の操作を実行します。

   1. [**キュー名**] (例: `MyEncryptedQueue1`) を入力します。

   1. [**標準キュー**]、[**キューの設定**] の順に選択します。

   1. [**SSE の使用**] を選択します。

   1. **[AWS KMS key]** で、[以前に作成した](#create-custom-cmk) **[MyCustomKey]** を選択してから、**[キューの作成]** を選択します。

1. プロセスを繰り返して、2 つめのキュー (例えば、`MyEncryptedQueue2`) を作成します。

   暗号化された新しいキューがキューのリストに表示されます。

1. Amazon SQS コンソールで、`MyEncryptedQueue1` および `MyEncryptedQueue2` を選択して、[**キューのアクション**]、[**SNS トピックへのキューのサブスクライブ**] の順に選択します。

1. [**トピックへのサブスクライブ**] ダイアログボックスの [**トピックの選択**] で、[**MyEncryptedTopic**]、[**サブスクライブ**] の順に選択します。

   暗号化されたトピックに対する暗号化されたキューのサブスクリプションは、[**トピックのサブスクリプション結果**] ダイアログボックスに表示されます。

1. [**OK**] を選択してください。

## ステップ 4: 暗号化されたトピックにメッセージを発行する
<a name="publish-to-encrypted-topic"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. ナビゲーションパネルで、[**トピック**] を選択します。

1. トピックのリストから [**MyEncryptedTopic**] を選択し、[**メッセージの発行**] を選択します。

1. [**メッセージの発行**] ページで、次の操作を行います。

   1. (オプション) [**メッセージの詳細**] セクションで、[**件名**] (`Testing message publishing` など) を入力します。

   1. [**メッセージの本文**] セクションで、メッセージの本文 (`My message body is encrypted at rest.` など) を入力します。

   1. [**メッセージの発行**] を選択します。

メッセージは、サブスクライブされた暗号化キューに発行されます。

## ステップ 5: メッセージの配信を確認する
<a name="verify-message-delivery"></a>

1. [Amazon SQSコンソール](https://console.aws.amazon.com/sqs/)にサインインします。

1. キューのリストから **[MyEncryptedQueue1]** を選択し、次に **[Send and receive messages]** (メッセージの送受信) を選択します。

1. **[Send and receive messages in MyEncryptedQueue1]** (MyEncryptedQueue1 のメッセージの送信と受信) ページで、**[Poll for messages]** (メッセージのポーリング) を選択します。

   [先ほど送信した](#publish-to-encrypted-topic)メッセージが表示されます。

1. メッセージを表示するには、[**詳細**] を選択します。

1. 完了したら、[**閉じる**] をクリックします。

1. [**MyEncryptedQueue2**] に対してこの処理を繰り返します。