クライアント側のフィールドレベル自動暗号化
注意
エンタープライズ機能
フィールドレベル暗号化の自動機能は、MongoDB Enterprise 4.2 以降と MongoDB Atlas 4.2 以降のクラスターでのみ使用できます。
Overview
公式MongoDB4.2 + 互換ドライバー、mongosh
、およびMongoDB4.2 以降のレガシーmongo
シェルは、読み取りおよび書込み操作におけるフィールドの自動暗号化をサポートしています。公式 の完全なリスト用。クライアント側のフィールドレベル暗号化をサポートする + と互換性のあるドライバーについては、 ドライバーの互換性テーブル4 2を参照してください。
Applications must create a database connection object (e.g. MongoClient
)を含むドキュメントをインポートしようとすると、エラーを返します。 構成設定には、JSON schema 4ドラフト 標準構文 の厳密なサブセットを使用した自動暗号化ルールを含める必要があります。 および暗号化固有のスキーマ キーワード。アプリケーションは、読み取り/書込み操作の構築に関連付けられたコードを変更する必要はありません。 自動暗号化ルールに関する完全なドキュメントについては、「 自動暗号化ルール 」を参照してください。
公式の MongoDB 4.2 + 互換ドライバー、 mongosh
、および MongoDB 4.2以降のレガシーmongo
shell は、自動暗号化共有ライブラリを使用して自動暗号化ルールを解析し、ドキュメントの読み取りまたは書込み時に暗号化ルールを適用します。
書込み操作では、ドライバーまたは shell は MongoDB database に書込む前にフィールド値を暗号化します。
読み取り操作では、ドライバーまたは shell は読み取り操作を発行する前にクエリ内のフィールド値を暗号化します。
暗号化されたフィールドを返す読み取り操作の場合、ドライバーまたは shell は、ドライバーまたは shell がそれらの値を保護するために使用されるキーへのアクセスが構成されて いる場合にのみ 、暗号化された値を 自動的に復号化 します。
自動暗号化共有ライブラリはmongocryptdの推奨代替であり、新しいプロセスを生成する必要はありません。 mongocryptd
は引き続きサポートされます。 自動暗号化共有ライブラリの詳細については、「自動暗号化共有ライブラリ 」を参照してください。
クライアント側の自動フィールドレベル暗号化の有効化
公式の MongoDB 4.2 + 互換ドライバーはそれぞれ、自動暗号化とデータ暗号化キー管理をサポートするための新しい機能を導入しています。 自動クライアント側のフィールドレベル暗号化の実装に関する言語固有の手順については、ご希望のドライバーのドキュメントを参照してください。
mongosh
は、自動クライアント側フィールドレベル暗号化でデータベース接続をインスタンス化するための追加オプションをMongo()
メソッドに追加します。 完全な例については、「自動クライアント側暗号化が有効になっているクラスターへの接続 」を参照してください。
クライアント側のフィールド レベルの自動暗号化には、クライアント ホスト マシン上の 自動暗号化共有ライブラリ にアクセスする必要があります。 公式の MongoDB 4.2 + 互換ドライバーには、自動暗号化共有ライブラリを管理するための追加オプションがあります。 通常、システムPATH
内にある場合、 4.2 + 互換ドライバーとmongosh
は共有ライブラリにアクセスできます。
アプリケーションは、データベース接続をインスタンス化して、クライアント側のフィールドレベルの自動暗号化を有効にするときに次のコンポーネントを指定する必要があります。
データ暗号化キーのキーヴォールト。 キーヴォールトは、リモート MongoDB クラスターまたはクライアント側の暗号化データを保存している MongoDB クラスターのいずれかに存在できます。
CMK(Customer Master Key)の管理に使用されるサポート対象のKMS ( KMS )プロバイダー。 MongoDB は、指定されたCMKを使用してすべてのデータ暗号化キーを暗号化し、キーヴォールトに保存します。そのため、暗号化されていないメタデータのみが残ります。
4.2 + 互換ドライバー、
mongosh
、および MongoDB 4.2以降のレガシーmongo
shell は、保護されているフィールドを暗号化および復号化するか、新しいデータ暗号化キーを作成するために KMS にアクセスする必要があります。
サーバー側のフィールドレベル暗号化の強制
MongoDB 4.2以降、サーバーはスキーマ検証を使用して、コレクション内の特定のフィールドの暗号化を強制するをサポートしています。 自動クライアント側フィールドレベル暗号化を実行するクライアントは、データベース接続構成に応じて特定の動作をします。
接続
ClientSideFieldLevelEncryptionOptions
schemaMap
オブジェクトに指定されたコレクションのキーが含まれている場合、クライアントはそのオブジェクトを使用して自動フィールドレベルの暗号化を実行し、リモート スキーマを無視します。 ローカル ルールは、少なくとも、リモート スキーマが暗号化が必要とマークするフィールドを暗号化する必要があります。接続
ClientSideFieldLevelEncryptionOptions
schemaMap
オブジェクトに指定されたコレクションのキーが含まれていない場合、クライアントはコレクションのサーバー側リモート スキーマをダウンロードし、それを使用してフィールド レベルの自動暗号化を実行します。この構成では、クライアントは、自動フィールドレベル暗号化に関してサーバーが有効なスキーマを持っていると信頼する必要があります。 クライアントはリモート スキーマを使用して自動フィールドレベル暗号化を実行するだけで、スキーマで指定された他の検証ルールは強制されません。
サーバー側のクライアント側のフィールドレベル暗号化の適用に関する詳細なドキュメントについては、「フィールドレベル暗号化スキーマの強制 」を参照してください。