Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / / /

明示的な暗号化

項目一覧

  • Overview
  • 明示的な暗号化の使用
  • ClientEncryption インスタンスの作成
  • 読み取り操作と書込み操作におけるフィールドの暗号化
  • 自動復号化
  • サーバー側のフィールドレベル暗号化の強制
  • 詳細

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

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

  • MongoDB Community Server

  • MongoDB Enterprise Advanced

  • MongoDB Atlas

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

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

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

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

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

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

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

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

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

  • 暗号化する値

  • 使用されるアルゴリズム: IndexedUnindexed 、またはRange

  • データ暗号化キーの ID

  • 競合係数IndexedまたはRangeアルゴリズムを使用している場合)

  • IndexedまたはRangeアルゴリズムを使用して読み取り操作を実行している場合は、フィールドに定義されているクエリタイプを に設定します。

  • rangeオプションmin, maxRangeアルゴリズムを使用している場合)

注意

クエリ タイプ

クエリ タイプは読み取り操作にのみ適用されます。

クエリ タイプの詳細については、「サポートされているクエリ タイプと動作 」を参照してください。

フィールドにqueryTypeを指定する場合は、 IndexedアルゴリズムまたはRangeアルゴリズムを使用します。

Indexed は等価クエリをサポートします。 Rangeは範囲クエリをサポートしています。 IndexedRangeフィールドにはサーバー上のインデックスが必要です。 インデックスは、db.createCollection()encryptedFieldsオプションを指定して作成されます

注意

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 プロバイダー 」を参照してください。

戻る

コレクション