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

暗号化スキーマの作成

項目一覧

  • このタスクについて
  • 手順
  • JSON 暗号化スキーマ ドキュメントを作成します。
  • 暗号化する各フィールドの暗号化パラメーターを指定します。

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

1

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

const encryptedFieldsObject = {
fields: []
}
2
  1. pathbsonTypeの文字列をfields配列に追加する

    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. フィールドをクエリ可能にするには、 queriesプロパティと 許可されたリストqueryTypesを追加します。

    Queryable Encryption は現在、 equalityクエリのみをサポートしています。

    {
    path: "myDocumentField",
    bsonType: "int",
    queries: { queryType: "equality" }
    }
  4. (任意)クエリ可能なフィールドにcontentionプロパティを含めて、検索パフォーマンスまたは書込みと更新のパフォーマンスのいずれかを優先します。

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

    詳細については、「 コンテンツ 」を参照してください

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

個人を特定できる情報(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"
},
]
}

戻る

フィールドとクエリ