Queryable Encryption の制限
項目一覧
Atlas Search
Queryable Encryption はMongoDB Atlas Search と互換性がありません。
特定の制限のプレビュー
注意
Queryable Encryption の技術プレビュー中に次の制限が適用されます。
競合係数
競合係数は、同時接続数に基づいてパフォーマンスを調整するのに役立つ設定です。
競合係数は不変であり、暗号化のフィールドを指定するときにのみ設定できます。 デフォルト値は 0
です。
データキーの手動作成
暗号化するフィールドごとに一意の データ暗号化キー を手動で作成する必要があります。 将来のリリースでは、 encryptedFieldsMap
からkeyId
フィールドを省略でき、Queryable Encryption 互換ドライバーが DEKを自動的に作成するようになります。
手動圧縮
テクニカル プレビュー中にメタデータコレクションが1 GB を超える場合は、 インデックス圧縮を手動で実行する必要があります。 将来のリリースでは、メタデータコレクションが定義されたサイズを超えると、圧縮が自動的に実行されるようになります。
圧縮は、暗号化されたフィールドに関連付けられたメタデータ コレクションのサイズを縮小し、パフォーマンスを向上させるプロセスです。
encryptedFieldsMap
変更
テクニカル プレビュー中に、 MongoClient
に渡されるencryptedFieldsMap
を変更しないでください。 指定すると、クエリ時に予期しない誤った動作が発生する可能性があります。
読み取りおよび書込み操作のサポート
mongod
は暗号化されたBinData
} のみを保存し、暗号化されたフィールドを指定する任意の集計式またはクエリ演算子をBinData
の値に対して適用します。 式または演算子はBinData
フィールドをサポートする場合がありますが、復号化された値に対して同じ式または演算子を発行すると、結果の値が誤った値や予期しない値になる可能性があります。 式または演算子がBinData
値をサポートしていない場合、 mongod
はエラーをスローします。
トポロジー サポート
レプリカセットとシャーディングされたクラスターはサポートされています
スタンドアロン配置はサポートされていません
セカンダリ読み取りはサポートされていません
シャーディング
メタデータコレクションはシャーディングしてはなりません
シャードキーは暗号化されたフィールドであってはなりません
CRUD
Queryable Encryption はバッチ操作をサポートしていません。 次の操作はサポートされていません。-
db.collection.insertMany()
-db.collection.updateMany()
-db.collection.deleteMany()
Queryable Encryption は
db.collection.findAndModify()
引数を制限します。 -fields
は許可されていません -new
は false である必要があります
コレクション
Queryable Encryption は新しいコレクションのみをサポートします。 既存のコレクションに Queryable Encryption を追加または削除することはできません。
jsonSchema
にencrypt
キーワードが含まれている場合、Queryable Encryption コレクションの作成時にjsonSchema
からdb.createCollection()
を指定することはできません。 同じコレクションでは、クライアント側のフィールドレベル暗号化と Queryable Encryption は併用できません。jsonSchema
encryptedFields
jsonSchema
db.createCollection()
に暗号化されたフィールドの検証が含まれていない限り、 と の両方を に指定できます。Queryable Encryption は、暗号化されていないコレクションからの自動移行をサポートしていません。 ドキュメントは 1 つずつインポートする必要があります。
Queryable Encryption は、 クライアント側のフィールド レベル暗号化 で暗号化されたコレクションからの移行をサポートしていません。 ドキュメントを復号化し、1 つずつインポートする必要があります。
Queryable Encryption は、ビュー、時系列コレクション、またはCapped コレクション をサポートしていません。
Queryable Encryption は、 TTL インデックスまたは一意のインデックスをサポートしていません。
暗号化されたフィールドを含むコレクションの名前を変更することはできません。
jsonSchema
検証を無効にすることはできません。コレクション情報に
encryptedFields
が存在する場合の自動暗号化ドキュメント検証。validationLevel
をnone
に設定することはできません。validationAction
をwarn
に設定することはできません。
コレクションの削除
Queryable Encryptionが設定されていない
MongoClient
からコレクションを削除しても、関連付けられているメタデータコレクションは削除されません。``mongod`` メタデータ コレクションを削除する前に、暗号化されたフィールドを含むコレクションを削除すると、 は警告をログに記録します。
Tip
Queryable Encryption と互換性のあるドライバーは、Queryable Encryption 用に構成されたMongoClient
を使用する場合にコレクションを削除するときにメタデータ コレクションを削除します。
コレクションを作成
Queryable Encryption で使用するコレクションは、常に明示的に作成する必要があります。 暗黙的なコレクション作成を使用すると、必要なインデックスとメタデータ コレクションが作成されないため、クエリのパフォーマンスが低下します。
クエリ タイプ
encryptedFieldsMap
でコレクションを作成するときにフィールドに指定するクエリタイプは不変です。 既存のフィールドに新しいクエリ タイプを追加することはできません。また、既存のクエリ タイプを変更することもできません。
暗号化されたフィールド名
暗号化されたフィールド名は不変です。 たとえば、暗号化するフィールドとしてssn
を指定した場合、フィールド名をtaxPayerID
に$rename
することはできません。
ビュー
暗号化されたフィールドを持つコレクションに対するビューに対するサポートされていないクエリを防ぐために、アプリケーションは自動暗号化検証に依存することはできません。
Queryable Encryption で暗号化された値を含むコレクションのビューに対するクエリでは、基礎となるビュー集計パイプラインまたはクエリが暗号化されたフィールドを参照している場合、予期しない結果や不正確な結果が返されることがあります。 Queryable Encryption で暗号化された値を含むコレクションにビューを作成する場合は、予期しない結果や誤った結果のリスクを軽減するために、暗号化されたフィールドでの操作を避けてください。
ビューの詳細については、「ビュー 」を参照してください。
照合
Queryable Encryption は、ユーザー指定の照合またはコレクションのデフォルトの照合を無視します。 暗号化により、フィールド値がぼかして表示され、通常の照合動作が妨げられます。 暗号化されたフィールドに対する照合を区別するクエリでは、予期しない結果や誤った結果が返されることがあります。
照合の詳細については、照合ドキュメント を参照してください。
自動暗号化用に構成された MongoDB バージョン 6.0 以降の互換性のあるドライバーは、 自動暗号化の操作 をサポートしていますが、サポートされていない読み取りおよび書込み操作の場合、基礎となるサポート ライブラリはコレクション カタログをイントロスペクションしてデフォルトの照合を識別できません。 したがって、アプリケーションは Queryable Encryption の検証に依存して、照合のデフォルトを持つ暗号化されたフィールドに対するクエリを防ぐことはできません。
Unique Indexes
Unique indexes は、インデックス キーで暗号化されたフィールドが指定されている場合、一意性を保証できません。
Queryable Encryption では、特定の入力に対して常に異なる暗号化値が生成されます。 サーバーは、復号化された値が一意ではない場合でも、暗号化された各値を一意と見なします。 そのため、コレクションには、インデックスによって強制される一意の制約を持つフィールドの重複するプレーンテキスト値を持つ複数のドキュメントを含めることができます。
自動暗号化用に構成された MongoDB バージョン 6.0 以降の互換性のあるドライバーは、サポートされていない読み取りおよび書込み操作の自動暗号化の操作をサポートしていますが、基礎のサポート ライブラリは、特定のフィールドを一意として識別するためにインデックス カタログを内部検証することはできません。 アプリケーションは、ランダムに暗号化されたフィールドでの一意の制約違反を防ぐために、自動暗号化検証に依存することはできません。
_id フィールド
Queryable Encryption は MongoDB によって自動生成された値に依存しているため、 _id
フィールドを暗号化するように Queryable Encryption に指示することはできません。
読み取り/書込みクエリのサポート
自動暗号化は、コマンド、クエリ演算子、更新演算子、集計ステージ、および集計式のサブセットをサポートします。 完全なドキュメントについては、「自動暗号化がサポートする操作 」を参照してください。