Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Direct KMS マテリアルプロバイダー - AWS データベース暗号化 SDK

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

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

Direct KMS マテリアルプロバイダー

注記

クライアント側の暗号化ライブラリの名前が AWS Database Encryption SDK に変更されました。次のトピックには、DynamoDB Encryption Client for Java のバージョン 1.x~2.x および DynamoDB Encryption Client for Python のバージョン 1.x~3.x に関する情報が記載されています。詳細については、「AWS Database Encryption SDK for DynamoDB バージョンのサポート」を参照してください。

Direct KMS マテリアルプロバイダー (Direct KMS プロバイダー) は、AWS KMS key によってテーブル項目を保護しているため、AWS Key Management Service (AWS KMS) は必ず暗号化されます。この暗号化マテリアルプロバイダーより、テーブル項目ごとに一意の暗号化キーと署名キーが返ります。これを行うには、項目を暗号化または復号する AWS KMS たびに を呼び出します。

DynamoDB 項目を高頻度かつ大規模に処理している場合、1 AWS KMS requests-per-second数の制限を超えると、処理が遅延する可能性があります。制限を超過する必要がある場合は、AWS サポート センターでケースを作成してください。また、最新プロバイダーなど、キーの再利用が制限された暗号化マテリアルプロバイダーの使用を検討することもできます。

Direct KMS プロバイダーを使用するには、発信者に AWS アカウント、 で GenerateDataKey および Decrypt オペレーションを呼び出すための AWS KMS key、少なくとも 1 つの、および アクセス許可が必要です AWS KMS key。 AWS KMS key は対称暗号化キーである必要があります。DynamoDB 暗号化クライアントは非対称暗号化をサポートしていません。DynamoDB グローバルテーブルを使用している場合、AWS KMS マルチリージョンキーを指定することもできます。詳細については、「使用方法」を参照してください。

注記

Direct KMS プロバイダーを使用すると、プライマリキー属性の名前と値は、関連する AWS KMS オペレーションのAWS KMS 暗号化コンテキストと AWS CloudTrail ログにプレーンテキストで表示されます。ただし、DynamoDB 暗号化クライアントが、暗号化された属性値をプレーンテキストで公開することはありません。

Direct KMS プロバイダーは、DynamoDB 暗号化クライアントがサポートしている複数の暗号化マテリアルプロバイダー (CMP) の 1 つです。他の CMP の詳細については、「暗号マテリアルプロバイダー」を参照してください。

サンプルコードについては、以下を参照してください。

使用方法

Direct KMS プロバイダーを作成するには、キー ID パラメータを使用して、アカウントに対称暗号化 KMS キーを指定します。キー ID パラメータの値は、キー ID、キー ARN、エイリアス名、または AWS KMS keyのエイリアス ARN にすることができます。キー ID の詳細については、AWS Key Management Service デベロッパーガイドの「キー識別子」を参照してください。

Direct KMS プロバイダーでは、対称暗号化 KMS キーが必要です。非対称 KMS キーを使用することはできません。ただし、マルチリージョン KMS キー、インポートされたキーマテリアルを含む KMS キー、またはカスタムキーストア内の KMS キーを使用できます。KMS キーに kms:GenerateDataKey アクセス許可と kms:Decrypt アクセス許可がある必要があります。そのため、 マネージドまたは AWS 所有の KMS キーではなく、カスタマー AWS マネージドキーを使用する必要があります。

DynamoDB Encryption Client for Python は、キー ID パラメータ値にリージョンが含まれている場合、そのリージョン AWS KMS から呼び出すリージョンを決定します。それ以外の場合は、 AWS KMS クライアントでリージョンを指定するか、 で設定したリージョンを使用します AWS SDK for Python (Boto3)。Python でのリージョンの選択については、 AWS SDK for Python (Boto3) API リファレンスの「設定」を参照してください。

Java 用 DynamoDB 暗号化クライアントは、指定したクライアントにリージョンが含まれている場合、クライアントのリージョン AWS KMS AWS KMS から呼び出すリージョンを決定します。リージョンが含まれていない場合、 AWS SDK for Javaで設定されたリージョンが使用されます。でのリージョンの選択については AWS SDK for Java、「 AWS SDK for Java デベロッパーガイド」のAWS リージョン 「選択」を参照してください。

Java
// Replace the example key ARN and Region with valid values for your application final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, keyArn);
Python

次の例では、キー ARN を使用して AWS KMS keyを指定しています。キー識別子に が含まれていない場合 AWS リージョン、DynamoDB 暗号化クライアントは、設定された Botocore セッションがある場合、または Boto のデフォルトからリージョンを取得します。

# Replace the example key ID with a valid value kms_key = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key)
// Replace the example key ARN and Region with valid values for your application final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, keyArn);

Amazon DynamoDB グローバルテーブルを使用している場合は、 AWS KMS マルチリージョンキーでデータを暗号化することをお勧めします。マルチリージョンキーは異なる AWS KMS keys にあり AWS リージョン 、同じキー ID とキーマテリアルを持つため、同じ意味で使用できます。詳細については、AWS Key Management Service デベロッパーガイドの「マルチリージョンキーを使用する」を参照してください。

注記

グローバルテーブルのバージョン 2017.11.29 を使用している場合は、予約されたレプリケーションフィールドが暗号化または署名されないように属性アクションを設定する必要があります。詳細については、「古いバージョンのグローバルテーブルの問題」を参照してください。

DynamoDB 暗号化クライアントでマルチリージョンキーを使用するには、マルチリージョンキーを作成し、アプリケーションを実行するリージョンにレプリケートします。次に、DynamoDB 暗号化クライアントが AWS KMSを呼び出すリージョンでマルチリージョンキーを使用するように Direct KMS プロバイダーを設定します。

次の例では、マルチリージョンキーを使用して、米国東部 (バージニア北部) (us-east-1) リージョンのデータを暗号化し、米国西部 (オレゴン) (us-west-2) リージョンのデータを復号するように DynamoDB 暗号化クライアントを設定します。

Java

この例では、DynamoDB 暗号化クライアントは、 AWS KMS クライアントのリージョン AWS KMS から を呼び出すためのリージョンを取得します。keyArn 値は、同じリージョンのマルチリージョンキーを識別します。

// Encrypt in us-east-1 // Replace the example key ARN and Region with valid values for your application final String usEastKey = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-east-1' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usEastKey);
// Decrypt in us-west-2 // Replace the example key ARN and Region with valid values for your application final String usWestKey = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usWestKey);
Python

この例では、DynamoDB 暗号化クライアントは、キー ARN のリージョン AWS KMS から を呼び出すためのリージョンを取得します。

# Encrypt in us-east-1 # Replace the example key ID with a valid value us_east_key = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_east_key)
# Decrypt in us-west-2 # Replace the example key ID with a valid value us_west_key = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_west_key)

この例では、DynamoDB 暗号化クライアントは、 AWS KMS クライアントのリージョン AWS KMS から を呼び出すためのリージョンを取得します。keyArn 値は、同じリージョンのマルチリージョンキーを識別します。

// Encrypt in us-east-1 // Replace the example key ARN and Region with valid values for your application final String usEastKey = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-east-1' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usEastKey);
// Decrypt in us-west-2 // Replace the example key ARN and Region with valid values for your application final String usWestKey = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usWestKey);

仕組み

以下の図に示されているように、Direct KMS プロバイダーは、指定した AWS KMS key で保護されている暗号化キーおよび署名キーを返します。

DynamoDB 暗号化クライアントでの Direct KMS プロバイダーの入力、処理、および出力
  • 暗号化マテリアルを生成するために、Direct KMS プロバイダーは、指定した を使用して各項目に一意のデータキーを生成する AWS KMS ように に要求 AWS KMS key します。これにより、データキーのプレーンテキストコピーから項目の暗号化キーと署名キーが導出され、暗号化データキーと一緒に返ります。このデータキーは、項目のマテリアル記述属性に保存されます。

    項目エンクリプタでは、この暗号化キーおよび署名キーを使用します。また、メモリから可能な限り早くそれらを削除します。導出されたデータキーの暗号化されたコピーのみ、暗号化された項目に保存されます。

  • 復号マテリアルを生成するために、Direct KMS プロバイダーは暗号化されたデータキーを復号 AWS KMS するように に要求します。これにより、プレーンテキストデータキーより検証キーおよび署名キーが導出され、項目エンクリプタに返されます。

    項目エンクリプタは項目を検証し、検証が成功すると、暗号化された値が復号されます。次に、可能な限り早く、メモリよりキーが削除されます。

暗号化マテリアルを取得する

このセクションでは、項目エンクリプタより暗号化マテリアルのリクエストを受け取るときの Direct KMS プロバイダーの入力、出力、処理の詳細について説明します。

入力 (アプリケーションから)

  • のキー ID AWS KMS key。

入力 (項目エンクリプタから)

出力 (項目エンクリプタへ)

  • 暗号化キー (プレーンテキスト)

  • 署名キー

  • 実際のマテリアル説明で、これらの値は、クライアントより項目に追加されるマテリアル説明属性に保存されます。

    • amzn-ddb-env-key: によって暗号化された Base64-encodedされたデータキー AWS KMS key

    • amzn-ddb-env-alg: 暗号化アルゴリズム。デフォルトは AES/256

    • amzn-ddb-sig-alg: 署名アルゴリズム。デフォルトは HmacSHA256/256

    • amzn-ddb-wrap-alg: kms

Processing

  1. Direct KMS プロバイダー AWS KMS は、指定された を使用して項目の一意のデータキー AWS KMS key を生成するリクエストを送信します。 https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.htmlこのオペレーションによって、プレーンテキストキーと、 AWS KMS keyで暗号化されたコピーが返ります。これは、初期のキーマテリアルと呼ばれます。

    このリクエストの AWS KMS 暗号化テキストには、次のプレーンテキスト形式の値が含まれています。これらのシークレットではない値は、暗号化されたオブジェクトに暗号的にバインドされているため、復号時には同じ暗号化コンテキストが必要です。これらの値を使用して、 AWS CloudTrail ログ AWS KMS で への呼び出しを識別できます。

    • amzn-ddb-env-alg - 暗号化アルゴリズム。デフォルトは AES/256

    • amzn-ddb-sig-alg - 署名アルゴリズム。デフォルトは HmacSHA256/256

    • (オプション) aws-kms-table – テーブル名

    • (オプション) パーティションキー名パーティションキー値 (バイナリ値は Base64 エンコード形式)

    • (オプション) ソートキー名ソートキー値 (バイナリ値は Base64 エンコード形式)

    Direct KMS プロバイダーは、項目の DynamoDB AWS KMS 暗号化コンテキストから暗号化コンテキストの値を取得します。 DynamoDB DynamoDB 暗号化コンテキストにテーブル名などの値が含まれていない場合、その名前と値のペアは AWS KMS 暗号化コンテキストから省略されます。

  2. Direct KMS プロバイダーは、対称暗号化キーおよび署名キーをデータキーから導出します。デフォルトでは、セキュアハッシュアルゴリズム (SHA) 256 および RFC5869 HMAC ベースのキー導出関数を使用して、256 ビット AES 対称暗号化キーおよび 256 ビット HMAC-SHA-256 署名キーを導出します。

  3. Direct KMS プロバイダーは、項目エンクリプタに出力を返します。

  4. 項目エンクリプタは、暗号化キーを使用して、指定された属性を暗号化し、署名キーを使用して署名します。この際、実際のマテリアル記述で指定されたアルゴリズムを使用します。可能な限り早く、メモリよりプレーンテキストキーが削除されます。

復号マテリアルを取得する

このセクションでは、項目エンクリプタより復号マテリアルのリクエストを受け取るときの Direct KMS プロバイダーの入力、出力、処理の詳細について説明します。

入力 (アプリケーションから)

  • のキー ID AWS KMS key。

    キー ID の値は、キー ID、キー ARN、エイリアス名、または AWS KMS keyのエイリアス ARN にすることができます。キー ID に含まれていない値 (リージョンなど) はすべて、AWS 名前付きプロファイルで入手できる必要があります。キー ARN により、 AWS KMS で必要なすべての値が提供されます。

入力 (項目エンクリプタから)

出力 (項目エンクリプタへ)

  • 暗号化キー (プレーンテキスト)

  • 署名キー

Processing

  1. Direct KMS プロバイダーは、暗号化された項目のマテリアル記述属性から暗号化されたデータキーを取得します。

  2. 指定された AWS KMS key を使用して暗号化されたデータキーを復号 AWS KMS するように に要求します。オペレーションでプレーンテキストのキーが返ります。

    このリクエストでは、データキーの生成および暗号化に使用したのと同じ AWS KMS 暗号化コンテキストを使用する必要があります。

    • aws-kms-table – テーブル名

    • パーティションキー名パーティションキー値 (バイナリ値は Base64 エンコード形式)

    • (オプション) ソートキー名ソートキー値 (バイナリ値は Base64 エンコード形式)

    • amzn-ddb-env-alg - 暗号化アルゴリズム。デフォルトは AES/256

    • amzn-ddb-sig-alg - 署名アルゴリズム。デフォルトは HmacSHA256/256

  3. Direct KMS プロバイダーでは、セキュアハッシュアルゴリズム (SHA) 256 および RFC5869 HMAC ベースのキー導出関数を使用して、データキーから 256 ビット AES 対称暗号化キーおよび 256 ビット HMAC-SHA-256 署名キーを導出します。

  4. Direct KMS プロバイダーは、項目エンクリプタに出力を返します。

  5. 項目エンクリプタは、署名キーを使用して項目を検証します。成功すると、暗号化された属性値は対称暗号化キーを使用して復号されます。これらのオペレーションでは、実際のマテリアル記述で指定された暗号化アルゴリズムおよび署名アルゴリズムが使用されます。項目エンクリプタによって、可能な限り早く、メモリよりプレーンテキストキーが削除されます。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.