Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

ClientEncryption.encrypt()

在此页面上

  • 行为
  • 例子
ClientEncryption.encrypt(encryptionKeyId, value, encryptionAlgorithm)

ClientEncryption.encrypt()valueencryptionKeyId使用指定的 和encryptionAlgorithm 加密 。encrypt()支持对字段值进行显式(手动)加密。

encrypt() 通过以下语法实现:

clientEncryption = db.getMongo().getClientEncryption()
clientEncryption.encrypt(
encryptionKeyId,
value,
encryptionAlgorithm
)
Parameter
类型
说明
encryptionKeyId
UUID

用于加密 value 的数据加密密钥。

UUID是具有子类型4的 BSON binary data对象,用于标识特定数据加密密钥。如果为数据库连接配置的密钥保管库中不存在数据加密密钥, encrypt()将返回错误。有关密钥保管库和数据加密密钥的详细信息,请参阅加密密钥保管库。

value
要加密的值。
encryptionAlgorithm
字符串

用于加密value的加密算法。

  • AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic

  • AEAD_AES_256_CBC_HMAC_SHA_512-Random

有关支持的加密算法的完整文档,请参阅加密算法。

返回:binary data具有 子类型6 的 对象 。

mongo客户端字段级加密方法需要启用客户端字段级加密的数据库连接。 如果当前数据库连接不是在启用客户端字段级加密的情况下启动的,则:

encrypt()支持使用以下 BSON 类型加密值:

  • minKey

  • maxKey

  • null

  • undefined

如果使用 AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic 加密字段, encrypt()支持以下BSON types :

  • double

  • decimal128

  • bool

  • object

  • array

以下示例使用本地托管的 KMS 进行客户端字段级加密配置。

为本地托管的密钥配置客户端字段级加密需要指定一个不带换行符的 base64 编码的 96 字节字符串。以下操作生成满足所述要求的密钥并将其加载到mongo shell:

TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')")
mongosh --nodb --shell --eval "var TEST_LOCAL_KEY='$TEST_LOCAL_KEY'"

使用生成的本地密钥字符串创建客户端字段级加密对象:

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, TEST_LOCAL_KEY)
}
}
}

使用Mongo()构造函数创建具有客户端字段级加密选项的数据库连接。 将mongodb://myMongo.example.net URI 替换为目标集群的连接字符串 URI

encryptedClient = Mongo(
"mongodb://myMongo.example.net:27017/?replSetName=myMongo",
ClientSideFieldLevelEncryptionOptions
)

检索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"
)

如果成功, encrypt()将返回加密后的值:

BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo=")

有关在启用客户端字段级加密的情况下启动 MongoDB 连接的完整文档,请参阅Mongo()

后退

客户端字段级加密 (Client-Side Field Level Encryption)

在此页面上