Overview
.NET/C# ドライバーでは、 使用中の暗号化 と呼ばれる機能のセットを使用して、特定のドキュメント フィールドを暗号化できます。 使用中の暗号化により、アプリケーションは MongoDB に送信する前にデータを暗号化し、暗号化されたフィールドを持つドキュメントをクエリできます。
警告
MongoDB 8.2既知の問題点
Windowsプラットフォームでは、デフォルトのshell 引数を使用して mongocryptd のバージョン 8.2.0 を実行することはできません。この問題を回避するには、mongocryptd プロセスを手動で開始し、--logpath 引数を指定する必要があります。または、mongocryptd の代わりに 自動暗号化共有ライブラリ を使用します。
この問題とその解決方法の詳細については、 MongoDB 8.2 リリースノートの「 既知の問題 」を参照してください。
重要
$rerank ステージは、 クライアント側フィールドレベル暗号化 またはQueryable Encryptionを使用した自動暗号化用に構成されたクライアントではサポートされていません。 $rerank を含むパイプラインは、Unrecognized pipeline stage name: '$rerank' などのエラーで失敗します。
この制限は、暗号化されたフィールドがないコレクションを含むすべてのコレクションと、$unionWith などのサブパイプライン内での $rerank の使用に適用されます。
使用中の暗号化は、MongoDB に送信されるとき、または暗号化されたデータベース内にあるときに権限のないユーザーがプレーンテキスト データを表示するのを防ぎます。 アプリケーションで使用中の暗号化を有効にし、そのアプリケーションがデータの復号化を許可するには、アプリケーションのみがアクセスできる暗号化キーを作成する必要があります。 暗号化のキーにアクセスできるアプリケーションのみが、復号されたプレーンテキスト データにアクセスできます。 攻撃者がデータベースへのアクセスを取得した場合、暗号化のキーにアクセスできないため、暗号化された暗号化された暗号化データのみが表示されます。
次のタイプの機密データを含む MongoDB ドキュメント内のフィールドを暗号化するには、使用中の暗号化を使用します。
クレジット カード番号
住所
ヘルス情報
金融情報
その他の機密情報または個人を特定できる情報(PII)
MongoDBは、使用中の暗号化を有効にするために次の機能を提供しています。
Queryable Encryption
Queryable Encryption (QE) は、等価、範囲、接頭辞、接尾辞、および部分文字列のクエリなど、一意に暗号化されたフィールド値のクエリをサポートする使用中の暗号化機能です。範囲クエリのサポートには、MongoDB Server 8.0 以降が必要です。接頭辞、接尾辞、および部分文字列クエリのサポートには、MongoDB Server 9.0 以降が必要です。
次の表には、プレフィックス、サフィックス、および部分一致クエリに対する .NET/C# ドライバーのメソッドおよび対応する MongoDB Server の演算子を示します。
.NET/ C#ドライバー メソッド | 説明 | MongoDB Server演算子 |
|---|---|---|
| string 値の最初の文字が指定された string の文字と一致する場合、 | |
| string 値の末尾が指定された string の文字と一致する場合、 | |
| 文字列値内の文字のサブセットが指定された文字列内の文字と一致する場合、 | |
| 正規化された string 値が、指定された string の正規化された文字列バージョンと一致する場合、 |
Queryable Encryption の詳細については、サーバー マニュアルの「 Queryable Encryption 」を参照してください。
クライアントサイドのフィールド レベル暗号化
クライアント側フィールドレベル暗号化(CSFLE)は、暗号化されたフィールドの等価検索をサポートしています。MongoDB Serverバージョン4.2でCSFLEが導入されました。
QEとは異なり、CSFLEでは各フィールドの暗号化アルゴリズムを選択する必要があり、その選択によってフィールドをクエリできるかどうかが決まります。決定論的暗号化では、同じ入力値に対して常に同じ出力値が生成されます。一致する値は暗号化後も同じに見えるため、これらのフィールドで等価クエリを実行できます。ランダム化暗号化では、同じ入力値を暗号化するたびに異なる出力値が生成されます。ドライバーはこれらのフィールドを復号化できますが、クエリを実行することはできません。
決定論的暗号化は、クエリサポートのために機密性をある程度犠牲にします。暗号化されたフィールドの濃度が低い場合、攻撃者は各暗号化値の出現頻度を比較して元の値を推測できます。この手法は頻度分析と呼ばれます。クエリを実行しないフィールドを保護するには、ランダム化暗号化を使用します。
CSFLEの詳細については、サーバー マニュアルの「CSFLE」を参照してください。