クライアント側とサーバー側の暗号化 - AWS Database Encryption SDK

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

クライアント側とサーバー側の暗号化

クライアント側の暗号化ライブラリの名前が AWS Database Encryption SDK に変更されました。このデベロッパーガイドでは、引き続き DynamoDB Encryption Client に関する情報を提供します。

AWS Database Encryption SDK for DynamoDB がサポートするクライアント側の暗号化では、テーブルデータをデータベースに送信する前に暗号化します。ただし、DynamoDB では、ディスクに保管されているテーブルを透過的に暗号化するサーバー側の保管時の暗号化機能を提供しており、ユーザーがテーブルにアクセスすると復号します。

選択するツールは、データの重要度と、アプリケーションのセキュリティ要件に応じて異なります。AWS Database Encryption SDK for DynamoDB と保管中の暗号化の両方を使用できます。暗号化されて署名された項目を DynamoDB に送信しても、保護されている項目は DynamoDB によって認識されません。バイナリ属性値を含む従来のテーブル項目を検出します。

サーバー側の保管時の暗号化

DynamoDB では、保管時の暗号化がサポートされています。これは、テーブルがディスクに保持されるときに DynamoDB がテーブルを透過的に暗号化し、ユーザーがテーブルデータにアクセスするときにテーブルを復号するサーバー側の暗号化機能です。

AWS SDK を使用して DynamoDB とインタラクションする場合、デフォルトでは、データは HTTPS 接続を介した転送中に暗号化され、DynamoDB エンドポイントで復号され、DynamoDB に格納される前に再暗号化されます。

  • デフォルトでの暗号化。DynamoDB は、書き込まれる際に、すべてのテーブルを透過的に暗号化および復号します。保管時の暗号化を有効または無効にするオプションはありません。

  • DynamoDB は暗号化キーを作成および管理します。各テーブルの一意のキーは、AWS KMS key で保護されるため、AWS Key Management Service (AWS KMS) が未暗号化のままになることはありません。デフォルトでは、DynamoDB は DynamoDB サービス アカウントの AWS 所有のキー を使用しますが、一部またはすべてのテーブルを保護するために、自分のアカウントの AWS マネージドキー またはカスタマーマネージドキーを選択することもできます。

  • テーブルデータはすべて、ディスク上で暗号化されます。暗号化されたテーブルがディスクに保存されると、DynamoDB は、プライマリキーおよびローカルとグローバルのセカンダリインデックスなど、すべてのテーブルデータを暗号化します。テーブルにソートキーが存在する場合、範囲の境界線を示すソートキーの一部が、プレーンテキスト形式でテーブルメタデータに保存されます。

  • テーブルに関連するオブジェクトも暗号化されます。保管時の暗号化は、永続的なメディアに書き込まれるたびに、DynamoDBストリームグローバルテーブルバックアップを保護します。

  • アクセスすると、項目は復号されます。テーブルがアクセスされるとき、DynamoDB は、ターゲット項目を含むテーブル部分を復号し、プレーンテキスト形式で項目を返します。

AWS Database Encryption SDK for DynamoDB

クライアント側の暗号化では、ソースから DynamoDB のストレージまで、伝送時および保管時のデータをエンドツーエンド保護します。プレーンテキストデータが AWS などのサードパーティーに公開されることはありません。新しい DynamoDB テーブルで AWS Database Encryption SDK for DynamoDB を利用することも、既存の Amazon DynamoDB テーブルを DynamoDB 用の Java クライアント側の暗号化ライブラリのバージョン 3.x に移行することもできます。

  • 転送時と保管時のデータは保護されます。AWS も含め、このようなデータがサードパーティーに公開されることはありません。

  • テーブル項目に署名できます。プライマリキー属性など、テーブル項目のすべてまたは一部の署名を計算するように、AWS Database Encryption SDK for DynamoDB に指示できます。この署名により、属性の追加や削除、属性値のスワップなど、項目全体への不正な変更を検出することができます。

  • キーリングを選択することで、データを保護する方法を決定します。キーリングは、データキー、そして最終的にはデータを保護するラッピングキーを決定します。タスクに実用的で、最も安全なラッピングキーを使用してください。

  • AWS Database Encryption SDK for DynamoDB によってテーブル全体が暗号化されることはありません。項目内でどの属性を暗号化するかを選択します。AWS Database Encryption SDK for DynamoDB によって項目全体が暗号化されることはありません。属性名、プライマリキー (パーティションキーおよびソートキー) 属性の名前または値は暗号化されません。

AWS Encryption SDK

DynamoDB に格納しているデータを暗号化している場合は、AWS Database Encryption SDK for DynamoDB をお勧めします。

AWS Encryption SDK は、クライアント側暗号化ライブラリで、汎用データの暗号化および復号に役立ちます。任意のタイプのデータを保護することはできますが、データベースレコードなどの構造化データは操作できません。AWS Database Encryption SDK for DynamoDB とは異なり、AWS Encryption SDK は、項目レベルの整合性チェックを行うことはできません。属性を認識するか、プライマリキーの暗号化を回避するロジックはありません。

AWS Encryption SDK を使用してテーブルの要素を暗号化している場合、AWS Database Encryption SDK for DynamoDB との互換性はないことにご留意ください。1 つのライブラリで暗号化し、もう 1 つのライブラリを使用して復号することはできません。