チュートリアル: 既存の Amazon SQS キューに サーバー側の暗号化 (SSE) を設定する - Amazon Simple Queue Service

チュートリアル: 既存の Amazon SQS キューに サーバー側の暗号化 (SSE) を設定する

キューで SSE を有効にすると、キューのデータを保護できます。SSE の使用の詳細については、「保管時の暗号化」を参照してください。

重要

SSE が有効なキューへのすべてのリクエストでは、HTTPS と署名バージョン 4 を使用する必要があります。

SSE を無効にしても、キュー内の既存のメッセージは暗号化されたままになります。ただし、KMS キーが有効でアクセス可能になっている限り、これらのメッセージは引き続きコンシューマーに対して利用可能です。

このチュートリアルでは、既存の Amazon SQS キューの SSE を有効化、無効化、および設定する方法について学習します。

AWS マネジメントコンソール

  1. Amazon SQS コンソールにサインインします。

  2. キューの一覧から、キューを選択します。

  3. [Queue Actions (キューアクション)] の [Configure Queue (キューの設定)] を選択します。

    [Configure QueueName (QueueName の設定)] ダイアログボックスが表示されます。

  4. SSE を有効または無効にするには、[Use SSE] チェックボックスを使用します。

  5. カスタマーマスターキー (CMK) ID。詳細については、「重要な用語」を参照してください。 を指定する

    CMK のタイプごとに、CMK の [Description]、[Account]、および [Key ARN] が表示されます。

    重要

    CMK の所有者ではない場合、または kms:ListAliases および kms:DescribeKey アクセス許可がないアカウントでログインしている場合、Amazon SQS コンソールで CMK に関する情報は表示できません。

    CMK の所有者に、これらのアクセス権限を付与するよう依頼します。詳細については、AWS Key Management Service Developer Guideの「AWS KMS API のアクセス許可: アクションとリソースのリファレンス」を参照してください。

    • AWS で管理されている Amazon SQS 用 CMK を使用するには、リストから選択します。

      注記

      以下に留意してください。

      • カスタム CMK を指定しない場合、Amazon SQS は AWS に Amazon SQS 管理の CMK を使用します。カスタム CMK を作成する手順については、AWS Key Management Service Developer Guideの「キーの作成」を参照してください。

      • 初めて AWS マネジメントコンソールを使用してキューに Amazon SQS の AWS 管理の CMK を指定する場合、AWS KMS は Amazon SQS 用に AWS 管理の CMK を作成します。

      • または、SSE が有効なキューで SendMessage または SendMessageBatch アクションを初めて使用する場合、AWS KMS は Amazon SQS の AWS 管理の CMK を作成します。

    • AWS アカウントからカスタム CMK を使用するには、リストからその CMK を選択します。

      注記

      カスタム CMK を作成する手順については、AWS Key Management Service Developer Guideの「キーの作成」を参照してください。

    • AWS アカウントまたは他の AWS アカウントからカスタム CMK ARN を使用するには、リストから [Enter an existing CMK ARN] を選択し、CMK を入力またはコピーします。

  6. (オプション) [Data key reuse period] で、1 分~24 時間の値を指定します。デフォルトは 5 分です。詳細については、データキー再利用期間について を参照してください。

  7. [Save Changes] を選択します。

    変更は、キューに適用されます。

AWS SDK for Java

次の例では、AWS Java SDK を使用しています。SDK のインストールとセットアップについては、AWS SDK for Java Developer Guideの「AWS SDK for Java のセットアップ」を参照してください。

サンプルコードを実行する前に、AWS の認証情報を設定します。詳細については、『AWS SDK for Java Developer Guide』の「開発用の AWS 認証情報とリージョンのセットアップ」を参照してください。

AWS KMS キーポリシーでキューの暗号化とメッセージの暗号化/復号が許可されていることを確認する必要があります。 の詳細については、「AWS KMS アクセス許可の設定」を参照してください。

SSE を使用してキューを設定するには

  1. カスタマーマスターキー (CMK) ID。詳細については、「重要な用語」を参照してください。 を取得する

    注記

    以下に留意してください。

    • カスタム CMK を指定しない場合、Amazon SQS は AWS に Amazon SQS 管理の CMK を使用します。カスタム CMK を作成する手順については、AWS Key Management Service Developer Guideの「キーの作成」を参照してください。

    • 初めて AWS マネジメントコンソールを使用してキューに Amazon SQS の AWS 管理の CMK を指定する場合、AWS KMS は Amazon SQS 用に AWS 管理の CMK を作成します。

    • または、SSE が有効なキューで SendMessage または SendMessageBatch アクションを初めて使用する場合、AWS KMS は Amazon SQS の AWS 管理の CMK を作成します。

  2. サーバー側の暗号化 を有効にするには、CreateQueue アクションまたは SetQueueAttributes アクションの KmsMasterKeyId 属性を設定することで CMK ID を指定します。

    次のコード例では、AWS で管理されている Amazon SQS 用 CMK によって、既存キューに対して SSE を有効にしています。

    final SetQueueAttributesRequest setAttributesRequest = new SetQueueAttributesRequest(); final Map<String, String> attributes = new HashMap<String, String>(); setAttributesRequest.setQueueUrl(queueUrl); // Enable サーバー側の暗号化 by specifying the alias for the // AWS managed CMK for Amazon SQS. final String kmsMasterKeyAlias = "alias/aws/sqs"; attributes.put("KmsMasterKeyId", kmsMasterKeyAlias); setQueueAttributesRequest.setAttributes(attributes); final SetQueueAttributesResult setAttributesResult = client.setQueueAttributes(setAttributesRequest);

    既存のキューに対して サーバー側の暗号化 を無効にするには、SetQueueAttributes アクションを使用して、KmsMasterKeyId 属性を空の文字列に設定します。

    重要

    null は、KmsMasterKeyId の有効な値ではありません。

  3. (オプション) Amazon SQS が AWS KMS を呼び出す前に、データキーを再利用してメッセージを暗号化または復号できる時間の長さ (秒) を指定します。KmsDataKeyReusePeriodSeconds アクションまたは CreateQueue アクションの SetQueueAttributes 属性を設定します。有効値は 60 秒 (1 分) ~ 86,400 秒 (24 時間) の値です。値を指定しなかった場合は、デフォルト値として 300 秒 (5 分) が使用されます。

    次のコード例では、データキーの再利用期間を 60 秒 (1 分) に設定しています。

    // (Optional) Specify the length of time, in seconds, for which Amazon SQS can reuse // a data key to encrypt or decrypt messages before calling AWS KMS again. attributes.put("KmsDataKeyReusePeriodSeconds", "60");

キューの属性の取得については、Amazon Simple Queue Service API Reference の「」を参照してください。

特定のキューの CMK ID またはデータキー再利用期間を取得するには、KmsMasterKeyId アクション KmsDataKeyReusePeriodSecondsGetQueueAttributes 属性を使用します。

同じエイリアスを持つ別の CMK へのキューの切り替えについては、AWS Key Management Service Developer Guide の「エイリアスの更新」を参照してください。