Amazon Simple Queue Service
開発者ガイド

チュートリアル: サーバー側の暗号化 (SSE) を使用して Amazon SQS キューを作成する

Amazon SQS の サーバー側の暗号化 (SSE) は、中国リージョン を除く、Amazon SQS を利用できるすべての商用リージョンで使用できます。 キューで SSE を有効にすると、キューのデータを保護できます。SSE の使用の詳細については、「サーバー側の暗号化を使用したデータの保護 (SSE) および AWS KMS」を参照してください。

重要

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

このチュートリアルでは、SSE を有効にして Amazon SQS キューを作成する方法について説明します。この例では FIFO キューを使用していますが、SSE は スタンダード キューと FIFO キューの両方に使用できます。

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

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

  2. [Create New Queue] を選択します。

  3. [Create New Queue] ページで、正しいリージョンにいることを確認してから、[Queue Name] を入力します。

    注記

    FIFO キューの名前は .fifo サフィックスで終わる必要があります。 FIFO キューは、米国東部(バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、および 欧州 (アイルランド) リージョンで使用できます。

  4. デフォルトでは [スタンダード] が選択されています。[FIFO] を選択します。

  5. [Configure Queue]、[Use SSE] の順に選択します。

  6. カスタマーマスターキー (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 は Amazon SQS に AWS 管理の 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 を入力またはコピーします。

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

  8. [Create Queue] を選択します。

    新しいキューは SSE を使用して作成されます。暗号化のステータス、CMK のエイリアス、[Description]、[Account]、[Key ARN]、および [Data Key Reuse Period] が [Encryption] タブに表示されます。

AWS SDK for Java

サンプルコードでの作業を始める前に、AWS 認証情報を指定してください。詳細については、AWS SDK for Java Developer Guide開発用の AWS 認証情報とリージョンのセットアップを参照してください。

SSE を使用するには、キューの暗号化およびメッセージの暗号化と復号を許可するよう AWS KMS キーポリシーを設定する必要があります。 また、カスタマーマスターキー (CMK) のキーポリシーで、必要なアクセス権限を許可していることを確認する必要があります。 詳細については、「Amazon SQS 用の SSE を使用する場合に必要な AWS KMS アクセス許可」を参照してください。

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

    注記

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

    • カスタム CMK を指定しない場合、Amazon SQS は Amazon SQS に AWS 管理の 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 AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); final CreateQueueRequest createRequest = new CreateQueueRequest("MyQueue"); final Map<String, String> attributes = new HashMap<String, String>(); // Enable サーバー側の暗号化 by specifying the alias ARN of the // AWS managed CMK for Amazon SQS. final String kmsMasterKeyAlias = "arn:aws:kms:us-east-2:123456789012:alias/aws/sqs"; attributes.put("KmsMasterKeyId", kmsMasterKeyAlias); // (Optional) Specify the length of time, in seconds, for which Amazon SQS can reuse attributes.put("KmsDataKeyReusePeriodSeconds", "60"); final CreateQueueResult createResult = client.createQueue(createRequest);

    次のコード例では、カスタムの CMK によって、SSE を使用して新しいキューを作成しています。

    final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); final CreateQueueRequest createRequest = new CreateQueueRequest("MyQueue"); final Map<String, String> attributes = new HashMap<String, String>(); // Enable サーバー側の暗号化 by specifying the alias ARN of the custom CMK. final String kmsMasterKeyAlias = "arn:aws:kms:us-east-2:123456789012:alias/MyAlias"; attributes.put("KmsMasterKeyId", kmsMasterKeyAlias); // (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", "864000"); final CreateQueueResult createResult = client.createQueue(createRequest);
  3. (オプション) Amazon SQS がもう一度 AWS KMS を呼び出す前に、データキーを再利用してメッセージを暗号化または復号できる時間の長さ (秒) を指定します。CreateQueue アクションまたは SetQueueAttributes アクションの KmsDataKeyReusePeriodSeconds 属性を設定します。有効値は 60 秒 (1 分) ~ 86,400 秒 (24 時間) の値です。値を指定しなかった場合は、デフォルト値として 300 秒 (5 分) が使用されます。

    上に示した最初のコード例では、データキーの再利用期間を 60 秒 (1 分) に設定しています。2 番目のコード例では、86,400 秒 (24 時間) に設定しています。次のコード例では、データキーの再利用期間を 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 またはデータキー再利用期間を取得するには、GetQueueAttributes アクション KmsMasterKeyIdKmsDataKeyReusePeriodSeconds 属性を使用します。

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