

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

# クライアント側とサーバー側の暗号化
<a name="client-server-side"></a>


****  

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

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

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

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

DynamoDB では、[保管時の暗号化](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html)がサポートされています。これは、テーブルがディスクに保持されるときに DynamoDB がテーブルを透過的に暗号化し、ユーザーがテーブルデータにアクセスするときにテーブルを復号する*サーバー側の暗号化*機能です。

 AWS SDK を使用して DynamoDB を操作する場合、デフォルトでは、データは HTTPS 接続を介して転送中に暗号化され、DynamoDB エンドポイントで復号され、DynamoDB に保存される前に再暗号化されます。
+ **デフォルトでの暗号化。**DynamoDB は、書き込まれる際に、すべてのテーブルを透過的に暗号化および復号します。保管時の暗号化を有効または無効にするオプションはありません。
+ **DynamoDB は暗号化キーを作成および管理します。**各テーブルの一意のキーは、[AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) で保護されるため、[AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (AWS KMS) が未暗号化のままになることはありません。デフォルトでは、DynamoDB は DynamoDB サービス アカウントの [AWS 所有のキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) を使用しますが、一部またはすべてのテーブルを保護するために、自分のアカウントの [AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) または[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を選択することもできます。
+ **テーブルデータはすべて、ディスク上で暗号化されます。**暗号化されたテーブルがディスクに保存されると、DynamoDB は、[プライマリキー](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey)およびローカルとグローバルの[セカンダリインデックス](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.SecondaryIndexes)など、すべてのテーブルデータを暗号化します。テーブルにソートキーが存在する場合、範囲の境界線を示すソートキーの一部が、プレーンテキスト形式でテーブルメタデータに保存されます。
+ **テーブルに関連するオブジェクトも暗号化されます。**保管時の暗号化は、永続的なメディアに書き込まれるたびに、[DynamoDBストリーム](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html)、[グローバルテーブル](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html)、[バックアップ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BackupRestore.html)を保護します。
+ **アクセスすると、項目は復号されます。**テーブルがアクセスされるとき、DynamoDB は、ターゲット項目を含むテーブル部分を復号し、プレーンテキスト形式で項目を返します。

**AWS Database Encryption SDK for DynamoDB**

クライアント側の暗号化では、ソースから DynamoDB のストレージまで、伝送時および保管時のデータをエンドツーエンド保護します。プレーンテキストデータは、以下を含む第三者に公開されることはありません AWS。 AWS Database Encryption SDK for DynamoDB を新しい DynamoDB テーブルで使用するか、既存の Amazon DynamoDB テーブルを AWS Database Encryption SDK for DynamoDB の最新バージョンに移行できます。
+ **転送時と保管時のデータは保護されます。**以下を含む第三者に公開されることはありません AWS。
+ **テーブル項目に署名できます。**プライマリキー属性など、テーブル項目のすべてまたは一部の署名を計算するように、 AWS Database Encryption SDK for DynamoDB に指示できます。この署名により、属性の追加や削除、属性値のスワップなど、項目全体への不正な変更を検出することができます。
+ [キーリングを選択](keyrings.md)することで、**データを保護する方法を決定**します。キーリングは、データキー、そして最終的にはデータを保護するラッピングキーを決定します。タスクに実用的で、最も安全なラッピングキーを使用してください。
+ ** 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](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) は、クライアント側暗号化ライブラリで、汎用データの暗号化および復号に役立ちます。任意のタイプのデータを保護することはできますが、データベースレコードなどの構造化データは操作できません。 AWS Database Encryption SDK for DynamoDB とは異なり、 は項目レベルの整合性チェックを提供 AWS Encryption SDK できず、属性を認識したり、プライマリキーの暗号化を防ぐロジックはありません。

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