Amazon Simple Queue Service
開発者ガイド

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

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

重要

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

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

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

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

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

  3. [新しいキューの作成] ページで、正しいリージョンにいることを確認してから、[キュー名] を入力します。

    注記

    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 キーポリシーを設定する必要があります。詳細については、「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 Map<String, String> attributes = new HashMap<String, String>(); final CreateQueueRequest createRequest = new CreateQueueRequest("MyQueue").withAttributes(attributes); // 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 Map<String, String> attributes = new HashMap<String, String>(); final CreateQueueRequest createRequest = new CreateQueueRequest("MyQueue").withAttributes(attributes); // 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 を呼び出す前に、データキーを再利用してメッセージを暗号化または復号できる時間の長さ (秒) を指定します。KmsDataKeyReusePeriodSeconds アクションまたは CreateQueue アクションの SetQueueAttributes 属性を設定します。有効値は 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の「エイリアスの更新」を参照してください。