暗号化スキーマの作成
このタスクについて
暗号化されたフィールドをクエリ可能にするには、暗号化スキーマを作成します。 このスキーマは、どのフィールドがクエリ可能で、どのクエリタイプが許可されているかを定義します。 詳細については、「暗号化されたフィールドとクエリ 」を参照してください。
手順
暗号化する各フィールドの暗号化パラメーターを指定します。
path
とbsonType
の文字列をfields
配列に追加するconst encryptedFieldsObject = { fields: [ { path: "myDocumentField", bsonType: "int" } ] } 重要
暗号化には、
_id
フィールドを除く任意のフィールドを指定できます。明示的な暗号化を使用している場合は、 DEK ID を含む
keyId
フィールドを追加します。{ path: "myDocumentField", bsonType: "int", keyId: "<unique data encryption key>" } Tip
自動暗号化を使用すると、MongoDB は各フィールドの暗号化キーを作成します。 クライアントで
AutoEncryptionSettings
を構成し、createEncryptedCollection
ヘルパー メソッドを使用してコレクションを作成します。フィールドをクエリ可能にするには、
queries
プロパティと 許可されたリストqueryTypes
を追加します。Queryable Encryption は現在、
equality
クエリのみをサポートしています。{ path: "myDocumentField", bsonType: "int", queries: { queryType: "equality" } } (任意)クエリ可能なフィールドに
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" }, ] }