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

CSFLE のサーバーサイド スキーマ強制

項目一覧

  • 詳細

クライアント側フィールドレベル暗号化(CSFLE)対応のクライアント アプリケーションでは、 スキーマ検証を使用して、MongoDB インスタンスが特定のフィールドの暗号化を強制するようにできます。 暗号化が必要なフィールドを指定するには、 検証オブジェクトとともに 自動暗号化ルール キーワード $jsonSchemaを使用します。サーバーは、指定されたフィールドがBinary (BinData)サブタイプ6オブジェクトではない、そのコレクションへの書込み操作を拒否します。

自動暗号化を使用するように構成された CSFLE 対応のクライアントがサーバー側のスキーマに遭遇したときの動作については、「サーバー側のフィールド レベル暗号化の強制 」を参照してください。

明示的な暗号化を使用するように構成された CSFLE 対応のクライアントがサーバー側のスキーマに遭遇したときにどのように動作するかについては、「サーバー側のフィールド レベルの暗号化の強制 」を参照してください。

employeesコレクションを持つhrデータベースを考えてみましょう。 employeesコレクション内のドキュメントの形式は次のとおりです。

{
"name": "Jane Doe",
"age": 51
}

コレクションを使用するクライアント アプリケーションに次の動作を強制します。

  • ageフィールドを暗号化する場合、クライアントは次の暗号化ルールに従う必要があります。

    • UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")_idを持つデータ暗号化キーを使用します。

    • ランダム化された暗号化アルゴリズムを使用します。

    • ageフィールドは整数である必要があります。

  • nameフィールドを暗号化する場合、クライアントは次の暗号化ルールに従う必要があります。

    • UUID("33408ee9-e499-43f9-89fe-5f8533870617")_idを持つデータ暗号化キーを使用します。

    • 決定的な暗号化アルゴリズムを使用します。

    • nameフィールドは string である必要があります。

次のmongoshコードでは、 collModコマンドを使用してhr.employeesコレクションを更新し、 validatorを含めて、上記の動作を強制します。

db.getSiblingDB("hr").runCommand({
collMod: "employees",
validator: {
$jsonSchema: {
bsonType: "object",
properties: {
age: {
encrypt: {
keyId: [UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")],
algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random",
bsonType: "int",
},
},
name: {
encrypt: {
keyId: [UUID("33408ee9-e499-43f9-89fe-5f8533870617")],
algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic",
bsonType: "string",
},
},
},
},
},
});

CSFLE がサポートする暗号化アルゴリズムの詳細については、「フィールドと暗号化タイプ 」を参照してください。

暗号化スキーマと暗号化ルールの詳細については、「 CSFLE の暗号化スキーマ 」を参照してください。

戻る

Schemas

項目一覧