ClientEncryption.encrypt()
ClientEncryption.encrypt(keyId, value, algorithm or encOptions)
ClientEncryption.encrypt()
은 지정된keyId
와algorithm
또는encOptions
로 지정된 알고리즘을 사용하여value
를 암호화합니다.encrypt()
는 필드 값의 명시적(수동) 암호화를 지원합니다.반환합니다: 하위 유형이 6 인 binary data
객체 .
구문
clientEncryption = db.getMongo().getClientEncryption() clientEncryption.encrypt( keyId, value, algorithm or encOptions, )
Parameter | 유형 | 설명 |
---|---|---|
keyId | UUID |
UUID 는 특정 데이터 암호화 키를 식별하는 하위 유형 |
value | 암호화할 값입니다. | |
algorithm or encOptions | 문자열 또는 문서 |
|
행동
mongosh
클라이언트 사이드 필드 수준 및 Queryable Encryption 메서드를 사용하려면 클라이언트 사이드 암호화를 위해 구성된 데이터베이스 연결이 필요합니다. 클라이언트 사이드 필드 수준 암호화가 활성화된 상태에서 현재 데이터베이스 연결이 시작되지 않은 경우 다음 중 하나를 수행합니다.
mongosh
의Mongo()
생성자를 사용하여 필요한 클라이언트 측 필드 수준 암호화 옵션과 연결을 설정합니다.Mongo()
메서드는 고객 마스터 키(CMK) 관리를 위해 다음과 같은 키 관리 서비스(KMS) 공급자를 지원합니다.
or
mongosh
명령줄 옵션을 사용하여 필요한 옵션과의 연결을 설정합니다. 명령줄 옵션은 CMK 관리를 위한 Amazon Web Services KMS 제공자만 지원합니다.
지원되지 않는 BSON type
encrypt()
를 사용하여 다음 BSON types 의 값을 암호화할 수 없습니다.
minKey
maxKey
null
undefined
AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic
를 사용하여 필드를 암호화하는 경우 encrypt()
는 다음 BSON types를 지원하지 않습니다 .
double
decimal128
bool
object
array
예제
Client-Side Field Level Encryption
다음 예에서는 클라이언트 사이드 필드 수준 암호화 구성을 위해 로컬로 managed KMS를 사용합니다.
암호화된 연결 만들기
암호화된 클라이언트 만들기
Mongo()
생성자를 클라이언트 사이드 필드 수준 암호화 옵션과 함께 사용하여 데이터베이스 연결을 생성합니다. mongodb://myMongo.example.net
URI를 대상 cluster의 연결 문자열 URI 로 바꿉니다.
encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
데이터 암호화
ClientEncryption
객체를 검색하고 ClientEncryption.encrypt()
메서드를 사용하여 특정 데이터 암호화 키 UUID
및 암호화 알고리즘을 사용하여 값을 암호화합니다.
clientEncryption = encryptedClient.getClientEncryption(); clientEncryption.encrypt( UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"), "123-45-6789", "AEAD_AES_256_CBC_HMAC_SHA_512-Random" )
algorithm
필드가 있는 문서를 사용하여 알고리즘을 지정할 수도 있습니다.
clientEncryption = encryptedClient.getClientEncryption(); clientEncryption.encrypt( UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"), "123-45-6789", { algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random" } )
결과 예시
성공하면 encrypt()
는 암호화된 값을 반환합니다.
BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo=")
클라이언트 사이드 필드 레벨 암호화가 활성화된 상태에서 MongoDB 연결을 시작하는 방법에 대한 전체 설명서는 Mongo()
를 참조하세요.
Queryable Encryption
다음 예에서는 Queryable Encryption 구성을 위해 로컬로 관리되는 KMS를 사용합니다.
암호화된 연결 만들기
암호화된 클라이언트 만들기
Queryable Encryption옵션이 구성된 Mongo()
생성자를 사용하여 데이터베이스 연결을 생성합니다. mongodb://myMongo.example.net
URI를 대상 클러스터의 연결 문자열 URI로 바꿉니다.
encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
데이터 암호화
ClientEncryption
객체를 검색하고 ClientEncryption.encrypt()
메서드를 사용하여 특정 데이터 암호화 키 UUID
및 암호화 알고리즘을 사용하여 값을 암호화합니다.
const eDB = "encrypted" const eKV = "__keyVault" const clientEncryption = encryptedClient.getClientEncryption(); const keyVaultClient = Mongo().getDB(eDB).getCollection(eKV) const dek = keyVaultClient.findOne({ keyAltNames: "dataKey1" }) clientEncryption.encrypt( dek._id, "123-45-6789", "Unindexed" )
필드가 포함된 문서를 사용하여 알고리즘을 지정할 수도 있습니다.
algorithm
queryType
contentionFactor
const eDB = "encrypted" const eKV = "__keyVault" const clientEncryption = encryptedClient.getClientEncryption(); const keyVaultClient = Mongo().getDB(eDB).getCollection(eKV) const dek = keyVaultClient.findOne({ keyAltNames: "dataKey1" }) clientEncryption.encrypt( dek._id, "123-45-6789", { algorithm: "Indexed", queryType: "equality", contentionFactor: 4 } )
결과 예시
성공하면 encrypt()
는 암호화된 값을 반환합니다.
Binary(Buffer.from("05b100000005640020000000005ab3581a43e39a8e855b1ac87013e841735c09d19ae86535eea718dd56122ba50573002000000000703d2cba9832d90436c6c92eb232aa5b968cdcd7a3138570bc87ef0a9eb3a0e905630020000000009cb61df010b1bb54670a5ad979f25f4c48889059dfd8920782cf03dd27d1a50b05650020000000003f5acea703ea357d3eea4c6a5b19139a580089341424a247839fd4d5cf0d312a12636d00040000000000000000", "hex"), 6)
자세히 알아보기
클라이언트 사이드 필드 레벨 암호화가 활성화된 상태에서 MongoDB 연결을 시작하는 방법에 대한 전체 설명서는 Mongo()
를 참조하세요.