翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon DynamoDB 暗号化クライアントの概念
このトピックでは、Amazon DynamoDB 暗号化クライアントで使用されている概念と用語について説明します。
DynamoDB 暗号化クライアントのコンポーネントがやり取りする方法については、「」DynamoDB 暗号化クライアントの動作。
暗号化マテリアルプロバイダー (CMP)
DynamoDB 暗号化クライアントを実装する場合、最初のタスクの 1 つは次のとおりです。暗号化マテリアルプロバイダーを選択する(CMP) (別名暗号化マテリアルプロバイダー). 残りの実装の多くは、この選択によって決まります。
暗号化マテリアルプロバイダー (CMP) は項目エンクリプタが、テーブル項目を暗号化し署名するのに使用する暗号化マテリアルを収集、アセンブルし、返します。CMP は、使用する暗号化アルゴリズムと、暗号化キーと署名キーを生成して保護する方法を決定します。
CMP は項目エンクリプタとやり取りします。項目エンクリプタは、暗号化または復号マテリアルを CMP に要求し、CMP はそれを項目エンクリプタに返します。次に、項目エンクリプタは、暗号化マテリアルを使用して、項目の暗号化、署名、検証、および復号を行います。
CMP は、クライアントの設定時に指定します。互換性のあるカスタム CMP を作成するか、ライブラリ内の多くの CMP のいずれかを使用できます。ほとんどの CMP は、複数のプログラミング言語で使用できます。
項目エンクリプタ
-項目エンクリプタは DynamoDB 暗号化クライアントの暗号化オペレーションを実行する低レベルのコンポーネントです。項目エンクリプタは、暗号化マテリアルプロバイダー (CMP) に暗号化マテリアルをリクエストし、CMP より返るマテリアルを使用して、テーブル項目を暗号化して署名するか、検証して復号します。
項目エンクリプタと直接やり取りするか、ライブラリにあるヘルパーを使用することができます。たとえば、Java 用 DynamoDB 暗号化クライアントにはAttributeEncryptor
ヘルパークラスDynamoDBMapper
と直接やり取りする代わりにDynamoDBEncryptor
項目エンクリプタ。Python ライブラリには、項目エンクリプタとやり取りする、EncryptedTable
、EncryptedClient
、および EncryptedResource
ヘルパークラスが含まれています。
属性アクション
属性アクションは、項目の各属性に対して実行するアクションを項目エンクリプタに指示します。
属性アクションの値は、次のいずれかの値になります。
-
暗号化して署名— 属性値を暗号化します。項目の署名に属性 (名前と値) を含めます。
-
署名のみ— 項目署名に属性を含めます。
-
何もしない— 属性を暗号化または署名しないでください。
機密データを保存できるすべての属性は、暗号化と署名を使用します。プライマリキー属性 (パーティションキーとソートキー) は、署名のみを使用します。マテリアル説明属性および署名属性は、署名も暗号化もされていません。これらの属性の属性アクションを指定する必要はありません。
属性アクションを慎重に選択します。不確かな場合は、暗号化と署名を使用します。DynamoDB 暗号化クライアントを使用してテーブル項目を保護した後は、署名検証エラーのリスクを冒すことなく、属性のアクションを変更することはできません。詳細については、データモデルの変更 を参照してください。
プライマリキー属性を暗号化しないでください。DynamoDB がテーブル全体のスキャンを実行せずに項目を見つけられるように、プレーンテキストの状態を維持する必要があります。
そのファイルにDynamoDB 暗号化コンテキストがプライマリキー属性を識別します。それらを暗号化しようとするとクライアントはエラーをスローします。
属性アクションの指定に使用する手法は、プログラミング言語ごとに異なります。また、使用するヘルパークラスに固有の場合もあります。
詳細については、使用しているプログラミング言語のドキュメントを参照してください。
マテリアル記述
暗号化されたテーブル項目のマテリアル説明は、暗号化アルゴリズムなどの情報で構成されます。この情報は、テーブル項目が暗号化および署名される仕組みに関するものです。暗号化マテリアルプロバイダー (CMP) は、暗号化し、署名するための暗号化マテリアルをアセンブルするときに、マテリアル説明を記録します。後で、項目を検証および復号するために暗号化されたマテリアルをアセンブルする必要がある場合は、そのマテリアル記述をガイドとして使用します。
DynamoDB 暗号化クライアントでは、マテリアル記述は 3 つの関連する要素について参照します。
- リクエストされたマテリアル説明
-
暗号化マテリアルプロバイダー (CMP) によっては、暗号化アルゴリズムなどの高度なオプションを指定できます。選択肢を示すために、名前と値のペアをDynamoDB 暗号化コンテキストテーブルアイテムを暗号化するリクエストで指定します。この要素は、リクエストされたマテリアル説明と呼ばれます。リクエストされたマテリアル記述の有効値は、選択した CMP によって定義されます。
注記 マテリアル記述は安全なデフォルト値を上書きできるため、やむを得ない理由がない限り、リクエストされたマテリアル記述を省略することをお奨めします。
- 実際のマテリアル記述
-
暗号化マテリアルプロバイダー (CMP) が返すマテリアル説明は、実際のマテリアル説明と呼ばれます。CMP が暗号化マテリアルを構築したときに使用した実際の値について説明します。また、通常、リクエストされたマテリアル記述で構成され、ある場合は追加と変更を含みます。
- マテリアル記述属性
-
クライアントは、実際のマテリアル説明を暗号化項目のマテリアル説明属性に保存します。このマテリアル記述属性名は、
amzn-ddb-map-desc
で、その値は実際のマテリアル記述です。クライアントは、マテリアル記述属性の値を使用して、項目の検証および復号を行います。
DynamoDB 暗号化コンテキスト
-DynamoDB 暗号化コンテキストは、テーブルと項目に関する情報をに提供します。暗号化マテリアルプロバイダー(CMP)。高度な実装では、DynamoDB 暗号化コンテキストにリクエストされたマテリアル記述。
テーブル項目を暗号化すると、DynamoDB 暗号化コンテキストが暗号化された属性値に暗号化でバインドされます。暗号化したときに、DynamoDB 暗号化コンテキストが暗号化に使用された DynamoDB 暗号化コンテキストに対して大文字と小文字を区別して完全に一致しない場合、復号オペレーションは失敗します。とやり取りする場合項目エンクリプタ暗号化メソッドまたは復号メソッドを呼び出すときに DynamoDB 暗号化コンテキストを提供する必要があります。ほとんどのヘルパーは DynamoDB 暗号化コンテキストを作成します。
-DynamoDB 暗号化コンテキストDynamoDB 暗号化クライアントでは、暗号化コンテキストにAWS Key Management Service(AWS KMS) とAWS Encryption SDK。
DynamoDB 暗号化コンテキストには、次のフィールドを含めることができます。すべてのフィールドと値はオプションです。
-
テーブル名
-
パーティションキー名
-
ソートキー名
-
属性名と値のペア
プロバイダーストア
プロバイダーストアは、暗号化マテリアルプロバイダー (CMP) を返すコンポーネントです。プロバイダーストアは、CMP を作成するか、別のプロバイダーストアなどの別のソースから CMP を取得できます。プロバイダーストアは、作成した CMP のバージョンを、保存されたそれぞれの CMP がリクエスタのマテリアル名とバージョン番号によって識別される永続的ストレージに保存します。
-最新プロバイダーDynamoDB 暗号化クライアントでは、プロバイダストアから CMP を取得しますが、プロバイダストアを使用して任意のコンポーネントに CMP を提供できます。各最新のプロバイダーは 1 つのプロバイダーストアに関連付けられていますが、プロバイダーストアは複数のホスト間で多くのリクエスタに CMP を提供できます。
プロバイダーストアは、オンデマンドで新しいバージョンの CMP を作成し、新しいバージョンと既存のバージョンを返します。また、指定されたマテリアル名の最新バージョン番号も返されます。これにより、リクエスタは、プロバイダーストアからリクエストできる新しいバージョンの CMP がリリースされるタイミングを把握することができます。
DynamoDB 暗号化クライアントにはMetaStore。これは、DynamoDB に格納され、内部 DynamoDB 暗号化クライアントを使用して暗号化されるキーを使用してラップされた CMP を作成するプロバイダーストアです。
詳細はこちら: