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

明示的な暗号化によるQueryable Encryption

明示的な暗号化により、セキュリティをきめ細やかに制御できますが、コレクションの構成や MongoDB ドライバー のコード記述の複雑さは増します。 明示的な暗号化では、データベースで実行する各操作に対してドキュメント内のフィールドを暗号化する方法を指定し、このロジックをアプリケーション全体に含めます。

次の MongoDB 製品で明示的な暗号化が利用できます。

  • MongoDB Community Server

  • MongoDB Enterprise Advanced

  • MongoDB Atlas

ClientEncryption mongoshは、明示的な暗号化に関係するキーヴォールトコレクションと KMS 操作をカプセル化するドライバーと で使用される抽象化です。

ClientEncryptionインスタンスを作成するには、次の手順を指定します。

  • カスタマー マスター キーをホストするKMSプロバイダーへのアクセス用に構成されたkmsProvidersオブジェクト

  • キーヴォールト コレクションの名前空間

  • MongoDB Community Server を使用する場合は、 bypassQueryAnalysisオプションをTrueに設定します

  • キーヴォールト コレクションへのアクセス権を持つMongoClientインスタンス

その他のClientEncryptionオプションについては、「 Queryable Encryption の MongoClient オプション 」を参照してください。

読み取りおよび書込み操作を実行する前に、アプリケーション全体で読み取りおよび書込み操作を更新し、アプリケーションがフィールドを暗号化する必要があります。

フィールドを暗号化するには、 ClientEncryptionインスタンスのencryptメソッドを使用します。 以下を指定します。

  • 暗号化する値

  • データ暗号化キーの ID

  • アルゴリズム

    • unindexed: クエリ不可の暗号化フィールドの場合。

    • indexed: は等価クエリをサポートします。

    • range: 範囲クエリをサポートします。

  • クエリ可能な暗号化フィールドに対する読み取り操作の場合は、 queryType を指定します。以下のすべてのアルゴリズムでは、サーバー上にインデックスが必要です。このインデックスは、 中にencryptedFields db.createCollection()オプションを指定したときに作成されます。

  • クエリ可能な暗号化されたフィールドに対する読み取り操作の場合は、範囲フィールドのクエリ可能な最小値や最大値などの追加オプションを指定します。

アルゴリズム
queryType
追加のパラメーター

indexed

equality

range

range

注意

MongoDB 8.0 以降、rangePreview Queryable Encryptionアルゴリズムは非推奨となり、削除されました。代わりに Rangeアルゴリズムを使用してください。

Queryable Encryptionコレクションで rangePreview が使用されている場合は、 MongoDB 8.0 にアップグレードする前に、コレクションを削除する必要があります。

フィールドを自動的に復号化するには、 MongoClientインスタンスを次のように構成します。

  • kmsProvidersオブジェクトを指定する

  • キーヴォールトコレクションを指定する

  • MongoDB Community Server を使用する場合は、 bypassQueryAnalysisオプションをTrueに設定します

注意

MongoDB Community Server での自動復号化

MongoDB Community Server では自動復号化が利用できます。 自動暗号化には MongoDB Enterprise または MongoDB Atlas が必要です。

コレクション内の特定のフィールドの暗号化を強制する手順。

Indexed およびRangeフィールドにはサーバー上のインデックスが必要です。 インデックスは、db.createCollection() でencryptedFieldsオプションを指定して作成されます

MongoDBインスタンスが特定のフィールドの暗号化を強制する場合、明示的な暗号化化を使用してQueryable Encryptionを実行するクライアントは、指定されたようにそれらのフィールドを暗号化する必要があります。 サーバー側でのQueryable Encryptionの設定方法については、「暗号化されたフィールド 」と「 有効なクエリ 」を参照してください。

キーヴォールト コレクション、データ暗号化キー、カスタマー マスター キーの詳細については、「暗号化キーとキーヴォールト 」を参照してください。

KMS プロバイダーと kmsProviders オブジェクトの詳細については、 KMS プロバイダー を参照してください。