AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

使用中の暗号化

Kotlin ドライバーでは、 使用中の暗号化と呼ばれる機能のセットを使用して、特定のドキュメント フィールドを暗号化できます。 使用中の暗号化により、アプリケーションは MongoDB に送信する前にデータを暗号化し、暗号化されたフィールドを持つドキュメントをクエリできます。

警告

MongoDB 8.2既知の問題点

mongocryptd のバージョン 8.2.0 はWindowsでは実行されない可能性があります。このバグは、mongocryptd の起動時に --logpath NUL 引数を指定すると、ドライバーによる使用中の暗号化に影響します。

To learn more about this issue and how to resolve it, see Known Issues in the MongoDB 8.2 Release Notes.

Kotlinドライバーは、 使用中の暗号化にmongodb-crypt暗号化ライブラリを使用します。このドライバー バージョンは mongodb-crypt v5.13.0 と互換性があります。

Tip

ドキュメントの請求書

ドライバー アーティファクトのバージョンを管理するには、アプリケーションにJVMドライバーの請求書(BOM) をアプリケーションに追加することをお勧めします。これにより、BOM でカバーされる個々のパッケージのバージョンを指定する必要がなくなり、依存関係の管理が簡素化されます。詳しくは、 クイック スタートガイドの「 ドライバー請求の追加 」ステップを参照してください。

次のMavenタブとGradleタブから選択すると、指定されたマネージャーを使用してプロジェクトにmongodb-crypt依存関係を追加する方法が確認できます。

<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-crypt</artifactId>
</dependency>
</dependencies>

重要

$rerank ステージは、 クライアント側フィールドレベル暗号化 またはQueryable Encryptionを使用した自動暗号化用に構成されたクライアントではサポートされていません。 $rerank を含むパイプラインは、Unrecognized pipeline stage name: '$rerank' などのエラーで失敗します。

この制限は、暗号化されたフィールドがないコレクションを含むすべてのコレクションと、$unionWith などのサブパイプライン内での $rerank の使用に適用されます。

使用中の暗号化は、MongoDB に送信されるとき、または暗号化されたデータベース内にあるときに権限のないユーザーがプレーンテキスト データを表示するのを防ぎます。 アプリケーションで使用中の暗号化を有効にし、そのアプリケーションがデータの復号化を許可するには、アプリケーションのみがアクセスできる暗号化キーを作成する必要があります。 暗号化のキーにアクセスできるアプリケーションのみが、復号されたプレーンテキスト データにアクセスできます。 攻撃者がデータベースへのアクセスを取得した場合、暗号化のキーにアクセスできないため、暗号化された暗号化された暗号化データのみが表示されます。

次のタイプの機密データを含む MongoDB ドキュメント内のフィールドを暗号化するには、使用中の暗号化を使用します。

  • クレジット カード番号

  • 住所

  • ヘルス情報

  • 金融情報

  • その他の機密情報または個人を特定できる情報(PII)

MongoDBは、使用中の暗号化を有効にするために次の機能を提供しています。

Queryable Encryption (QE) は、等価、範囲、接頭辞、接尾辞、および部分文字列のクエリなど、一意に暗号化されたフィールド値のクエリをサポートする使用中の暗号化機能です。範囲クエリのサポートには、MongoDB Server 8.0 以降が必要です。接頭辞、接尾辞、および部分文字列クエリのサポートには、MongoDB Server 9.0 以降が必要です。

Queryable Encryption の詳細については、サーバー マニュアルの「 Queryable Encryption 」を参照してください。

クライアント側フィールドレベル暗号化(CSFLE)は、暗号化されたフィールドの等価検索をサポートしています。MongoDB Serverバージョン4.2でCSFLEが導入されました。

QEとは異なり、CSFLEでは各フィールドの暗号化アルゴリズムを選択する必要があり、その選択によってフィールドをクエリできるかどうかが決まります。決定論的暗号化では、同じ入力値に対して常に同じ出力値が生成されます。一致する値は暗号化後も同じに見えるため、これらのフィールドで等価クエリを実行できます。ランダム化暗号化では、同じ入力値を暗号化するたびに異なる出力値が生成されます。ドライバーはこれらのフィールドを復号化できますが、クエリを実行することはできません。

決定論的暗号化は、クエリサポートのために機密性をある程度犠牲にします。暗号化されたフィールドの濃度が低い場合、攻撃者は各暗号化値の出現頻度を比較して元の値を推測できます。この手法は頻度分析と呼ばれます。クエリを実行しないフィールドを保護するには、ランダム化暗号化を使用します。

Tip

これらの概念の詳細については、 Wikipedia の次のエントリを参照してください。

CSFLEの詳細については、サーバー マニュアルの「CSFLE」を参照してください。