明示的な暗号化
項目一覧
Overview
Queryable Encryption の明示的な暗号化メカニズムの使用方法を学習します。 明示的な暗号化では、フィールドの暗号化に使用されるキーマテリアルを指定できます。 これにより、セキュリティをきめ細やかに制御できますが、コレクションの構成と MongoDB ドライバーのコードの記述が複雑になります。
明示的な暗号化とは、データベースで実行する各操作に対して、ドキュメント内のフィールドを暗号化および復号化する方法を指定するメカニズムです。
次の MongoDB 製品で明示的な暗号化が利用できます。
MongoDB Community Server
MongoDB Enterprise Advanced
MongoDB Atlas
明示的な暗号化の使用
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 Community Server では自動復号化が利用できます。 自動暗号化には MongoDB Enterprise または MongoDB Atlas が必要です。
サーバー側のフィールドレベル暗号化の強制
「暗号化のフィールド」 を指定して、コレクション内の特定のフィールドの暗号化を強制します。
Indexed
フィールドにはサーバー上のインデックスが必要です。 インデックスは、 db.createCollection()
でencryptedFields
オプションを指定して作成されます。
MongoDB インスタンスが特定のフィールドの暗号化を強制する場合、明示的な暗号化を使用して Queryable Encryption を実行するクライアントは、指定されたようにそれらのフィールドを暗号化する必要があります。 サーバー側での Queryable Encryption 適用の設定方法については、「フィールドの暗号化とクエリ可能性 」を参照してください。
詳細
キーヴォールト コレクション、データ暗号化キー、CMK の詳細については、「キーとキーヴォールト 」を参照してください。
KMSプロバイダーとkmsProviders
オブジェクトの詳細については、「 KMS プロバイダー 」を参照してください。