明示的な暗号化
項目一覧
Overview
Queryable Encryption の明示的な暗号化メカニズムの使用方法を学習します。
明示的な暗号化は、データベースで実行する各操作で、ドキュメント内のフィールドを暗号化および復号化する方法を指定するメカニズムです。
明示的な暗号化は、バージョン 6.0 以降を使用する次の MongoDB 製品で利用できます。
MongoDB Community Server
MongoDB Enterprise Advanced
MongoDB Atlas
明示的な暗号化の使用
次のセクションでは、Queryable Encryption 対応アプリケーションで明示的な暗号化を使用する方法の概要を説明します。
ClientEncryption
インスタンスの作成
ClientEncryption
mongosh
は、Key Vault コレクションと明示的な暗号化に関係する KMS 操作をカプセル化する とドライバー全体で使用される抽象化です。
ClientEncryption
インスタンスを作成するには、次の手順を指定します。
カスタマー マスター キーをホストするKMSへのアクセス用に構成された
kmsProviders
オブジェクトキーヴォールト コレクションの名前空間
MongoDB Community Server を使用する場合は、
bypassQueryAnalysis
オプションをTrue
に設定しますキーヴォールト コレクションへのアクセス権を持つ
MongoClient
インスタンス
その他のClientEncryption
オプションについては、「 Queryable Encryption の MongoClient オプション 」を参照してください。
注意
コード例は現在利用できていませんが、近日サポートされる予定です。
読み取り操作と書込み操作におけるフィールドの暗号化
読み取りおよび書込み操作を実行する前に、アプリケーション全体で読み取りおよび書込み操作を更新し、アプリケーションがフィールドを暗号化する必要があります。
フィールドを暗号化するには、 ClientEncryption
インスタンスのencrypt
メソッドを使用します。 以下を指定します。
暗号化する値
使用されるアルゴリズム(
Indexed
またはUnindexed
のいずれか)データ暗号化キーの ID
競合係数(
Indexed
アルゴリズムを使用している場合)読み取り操作を実行している場合は、フィールドに定義されているクエリタイプを設定します(
Indexed
アルゴリズムを使用している場合)
アルゴリズムの選択
フィールドにqueryType
を指定する場合は、 Indexed
アルゴリズムを使用します。
Indexed
は等価クエリをサポートします。 Indexed
フィールドにはサーバー上のインデックスが必要です。 インデックスは、db.createCollection()
でencryptedFields
オプションを指定して作成されます
自動復号化
フィールドを自動的に復号化するには、 MongoClient
インスタンスを次のように構成する必要があります。
kmsProviders
オブジェクトを指定するキーヴォールトコレクションを指定する
MongoDB Community Server を使用する場合は、
bypassQueryAnalysis
オプションをTrue
に設定します
注意
MongoDB Community Server で自動復号化が利用可能
自動暗号化には MongoDB Enterprise または MongoDB Atlas が必要ですが、自動復号化はバージョン 6.0 以降を使用する次の MongoDB 製品で利用できます。
MongoDB Community Server
MongoDB Enterprise Advanced
MongoDB Atlas
サーバー側のフィールドレベル暗号化の強制
「暗号化のフィールド」 を指定して、コレクション内の特定のフィールドの暗号化を強制します。
Indexed
フィールドにはサーバー上のインデックスが必要です。 インデックスは、 db.createCollection()
でencryptedFields
オプションを指定して作成されます。
特定のフィールドの暗号化を強制するように構成された MongoDB インスタンスで明示的な暗号化メカニズムを使用して Queryable Encryption を実行するクライアントは、MongoDB インスタンスに指定されているようにそれらのフィールドを暗号化する必要があります。
サーバー側での Queryable Encryption 適用の設定方法については、「フィールドの暗号化とクエリ可能性 」を参照してください。
詳細
キーヴォールト コレクション、データ暗号化キー、CMK の詳細については、「キーとキーヴォールト 」を参照してください。
KMSプロバイダーとkmsProviders
オブジェクトの詳細については、「 KMS プロバイダー 」を参照してください。