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

明示的な暗号化

項目一覧

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

Queryable Encryption の明示的な暗号化メカニズムの使用方法を学習します。 明示的な暗号化では、フィールドの暗号化に使用されるキーマテリアルを指定できます。 これにより、セキュリティをきめ細やかに制御できますが、コレクションの構成と 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メソッドを使用します。 以下を指定します。

  • 暗号化する値

  • 使用されるアルゴリズム( 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 プロバイダー 」を参照してください。

戻る

コレクション