翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Python 用 DynamoDB 暗号化クライアントを使用する
このトピックでは、Python の DynamoDB 暗号化クライアントの一部機能について説明します。他のプログラミング言語には実装されていない機能も含まれます。これらの機能は、DynamoDB 暗号化クライアントを最も安全な方法で簡単に使用できるように設計されています。通常とは異なるユースケースを除き、この方法を使用することをお勧めします。
DynamoDB 暗号化クライアントでのプログラミングの詳細については、を参照してください。Python の例このガイドの「」例
クライアントのヘルパークラス
Python の DynamoDB 暗号化クライアントには、DynamoDB の Boto 3 クラスをミラーリングする複数のクライアントヘルパークラスが含まれています。これらのヘルパークラスでは、次のように、暗号化の追加、既存の DynamoDB アプリケーションへの署名、一般的な問題の回避を簡単に行うことができます。
-
項目のプライマリキーを暗号化できないように、プライマリキーの上書きアクションを AttributeActions オブジェクトを追加するか、
AttributeActions
オブジェクトを使用してプライマリキーを暗号化するようにクライアントに明示的に指示している場合は例外をスローします。AttributeActions
オブジェクトのデフォルトアクションがDO_NOTHING
の場合、クライアントのヘルパークラスではプライマリキーのアクションが使用されます。それ以外の場合は、SIGN_ONLY
を使用します。 -
の作成TableInfo オブジェクトを入力し、DynamoDB 暗号化コンテキストDynamoDB の呼び出しに基づきます。これにより、DynamoDB 暗号化コンテキストが正確になり、クライアントはプライマリキーを識別できます。
-
次のようなSupport メソッド
put_item
そしてget_item
を使用すると、DynamoDB テーブルが読み書きされるときにテーブルを透過的に暗号化および復号できます。ただし、update_item
メソッドはサポートされていません。
クライアントのヘルパークラスを使用します。低レベルの項目エンクリプタを使用して直接やり取りする必要はありません。項目エンクリプタで高度オプションを設定する必要がある場合を除き、これらのクラスを使用します。
クライアントのヘルパークラスには、以下のものが含まれます。
-
EncryptedTable
を使用するアプリケーションの場合表 DynamoDB のリソースを使用して、一度に 1 つのテーブルを処理します。 -
EncryptedResource
を使用するアプリケーションの場合サービスリソース バッチ処理用の DynamoDB のクラス。 -
EncryptedClient
を使用するアプリケーションの場合下位レベルクライアント DynamoDB の「」
クライアントヘルパークラスを使用するには、DynamoDB を呼び出すアクセス許可が発信者に必要です。DescribeTableターゲットテーブルでの操作。
TableInfo クラス
-TableInfo
クライアントのヘルパークラスを使用している場合は、TableInfo
オブジェクトが作成、使用されます。それ以外の場合、オブジェクトを明示的に作成できます。例については、項目エンクリプタを使用する を参照してください。
電話するとrefresh_indexed_attributes
のメソッドTableInfo
オブジェクトの場合、DynamoDB を呼び出して、オブジェクトのプロパティ値が入力されます。DescribeTableオペレーション. テーブルのクエリは、ハードコーディングのインデックス名よりも信頼性がはるかに高まります。-TableInfo
クラスにはencryption_context_values
に必要な値を提供するプロパティDynamoDB 暗号化コンテキスト。
♪refresh_indexed_attributes
メソッドを使用すると、DynamoDB を呼び出すアクセス権限が発信者に必要です。DescribeTableターゲットテーブルでの操作。
Python の属性アクション
属性アクションは、項目の各属性に対して実行するアクションを項目エンクリプタに指示します。属性アクションを Python で指定するには、デフォルトアクションで AttributeActions
オブジェクトと、特定の属性の例外を作成します。有効な値は、列挙型の CryptoAction
で定義されています。
属性アクションを使用してテーブル項目を暗号化した後、データモデルから属性を追加または削除すると、署名の検証エラーが発生し、データの復号ができなくなることがあります。詳細な説明については、「データモデルの変更」を参照してください。
DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2
たとえば、この AttributeActions
オブジェクトは、すべての属性のデフォルトとして ENCRYPT_AND_SIGN
を確立し、ISBN
属性および PublicationYear
属性の例外を指定します。
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )
クライアントのヘルパークラスを使用している場合は、プライマリキー属性の属性アクションを指定する必要はありません。クライアントのヘルパークラスを使用して、プライマリキーを暗号化することはできません。
クライアントのヘルパークラスを使用しておらず、デフォルトアクションが ENCRYPT_AND_SIGN
の場合は、プライマリキーのアクションを指定する必要があります。プライマリキーに推奨されているアクションは SIGN_ONLY
です。簡単に行うには、set_index_keys
メソッドを使用します。このメソッドでは、プライマリキーに SIGN_ONLY、デフォルトアクションの場合には DO_NOTHING が使用されます。
プライマリキー属性を暗号化しないでください。DynamoDB がテーブル全体のスキャンを実行せずに項目を見つけられるように、プレーンテキストの状態を維持する必要があります。
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())