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

暗号化スキーマの作成

項目一覧

  • このタスクについて
  • 始める前に
  • 手順
  • JSON 暗号化スキーマ ドキュメントを作成します。
  • 暗号化するフィールドを指定します。
  • 必要なフィールドに対する等価クエリを有効にします。
  • 目的のフィールドに対して範囲クエリを有効にします。

暗号化されたフィールドをクエリ可能にするには、 暗号化スキーマを作成します。このスキーマは、どのフィールドがクエリ可能で、どのクエリタイプが許可されているかを定義します。詳細については、「暗号化されたフィールド 」と「 有効なクエリ 」を参照してください。

重要

Queryable Encryptionは等価クエリと範囲クエリをサポートします。フィールドは 1 つのクエリ タイプでのみ構成できます。

暗号化されたフィールドをクエリ可能にする場合は、パフォーマンスとセキュリティを考慮してください。各構成オプションがこれらにどのように影響するかについて詳しくは、「最適な検索およびストレージを使用するために暗号化されたフィールドを構成する 」を参照してください。

1

ネストされたfields配列を持つ encryptedFieldsObjectを含めます。

const encryptedFieldsObject = {
fields: []
}
2
  1. path文字列とbsonType文字列を フィールド配列内のドキュメントに追加します。

    const encryptedFieldsObject = {
    fields: [
    {
    path: "myDocumentField",
    bsonType: "int"
    }
    ]
    }

    重要

    暗号化には、 _idフィールドを除く任意のフィールドを指定できます。

  2. 明示的な暗号化を使用している場合は、 DEK IDを含むkeyIdフィールドを追加します。

    {
    path: "myDocumentField",
    bsonType: "int",
    keyId: "<unique data encryption key>"
    }

    Tip

    自動暗号化を使用すると、MongoDB は各フィールドの暗号化キーを作成します。 クライアントでAutoEncryptionSettingsを構成し、 createEncryptedCollectionヘルパー メソッドを使用してコレクションを作成します。

3

これにより、 $eq$ne$in$nin演算子を使用したクエリが可能になります。

queriesオブジェクトを追加し、 queryType"equality"に設定します。

{
path: "myDocumentField",
bsonType: "int",
queries: { queryType: "equality" }
}
4

これにより、 $lt$lte$gt$gte演算子を使用したクエリが可能になります。

次のオプションがセキュリティとパフォーマンスにどのように影響するかについて詳しくは、「最適な検索およびストレージを使用するために暗号化されたフィールドを構成する 」を参照してください。

  1. queriesオブジェクトを追加し、 queryType"range"に設定します。

    {
    path: "myDocumentRangeField",
    bsonType: "int",
    queries: { queryType: "range" }
    }
  2. 次のフィールドを設定します。

    フィールド
    タイプ
    説明
    フィールドと同じ bsonType

    bsonTypedecimalまたはdoubleの場合は必須です。任意ですが、 intlong 、またはdateの場合は強く推奨します。デフォルトはbsonTypeの最小値と最大値です。

    可能であれば、クエリに限界を指定するとパフォーマンスが向上します。これらを含む値をクエリすると、 MongoDBはエラーを返します。

    {
    path: "myDocumentRangeField",
    bsonType: "int",
    queries: { queryType: "range",
    min: 0,
    max: 1200
    }
    }

この例では、医療データの暗号化スキーマを作成する方法を示します。

個人を特定できる情報(PII)、クレジットカード情報、機密性の高い医療情報が含まれている次のドキュメントを検討してみましょう。

{
"firstName": "Jon",
"lastName": "Snow",
"patientId": 12345187,
"address": "123 Cherry Ave",
"medications": [
"Adderall",
"Lipitor"
],
"patientInfo": {
"ssn": "921-12-1234",
"billing": {
"type": "visa",
"number": "1234-1234-1234-1234"
}
}
}

PII と機密医療情報を安全に保つために、この暗号化スキーマは関連フィールドを追加します。

const encryptedFieldsObject = {
fields: [
{
path: "patientId",
bsonType: "int"
},
{
path: "patientInfo.ssn",
bsonType: "string"
},
{
path: "medications",
bsonType: "array"
},
{
path: "patientInfo.billing",
bsonType: "object"
}
]
}

queriesプロパティを追加すると、 フィールドとpatientId patientInfo.ssnフィールドがクエリ可能になります。この例では、等価クエリを有効にします。

const encryptedFieldsObject = {
fields: [
{
path: "patientId",
bsonType: "int",
queries: { queryType: "equality" }
},
{
path: "patientInfo.ssn",
bsonType: "string",
queries: { queryType: "equality" }
},
{
path: "medications",
bsonType: "array"
},
{
path: "patientInfo.billing",
bsonType: "object"
},
]
}

戻る

フィールドとクエリ