参考 > 参考 > mongo Shell方法 > 客户端字段级加密方法 > KeyVault.getKey()
在本页面
4.2版中的新功能。
KeyVault.
getKey
获取具有指定的的数据加密密钥UUID。数据加密密钥必须存在于与数据库连接关联的密钥库中。
UUID
getKey() 具有以下语法:
getKey()
keyVault = db.getMongo().getKeyVault() keyVault.getKey(UUID("<UUID String>"))
的UUID是BSON 亚型对象。binary data4
binary data
4
表示匹配数据加密密钥的文档。
如果密钥库中的任何密钥都没有指定,则不返回任何内容 UUID。
该mongo客户端的字段级的加密方法需要与客户端的字段级加密的数据库连接启用。如果当前数据库连接不是在启用客户端字段级加密的情况下启动的,则可以:
mongo
使用 外壳程序中的Mongo()构造函数mongo与所需的客户端字段级加密选项建立连接。该Mongo()方法同时支持Amazon Web Services和本地密钥管理服务(KMS)提供程序,用于客户主密钥(CMK)管理。
Mongo()
要么
使用mongoshell 命令行选项与所需选项建立连接。命令行选项仅支持AWS KMS提供程序进行CMK管理。
以下示例将本地管理的KMS用于客户端字段级加密配置。
为本地管理的密钥配置客户端字段级加密需要指定没有换行符的base64编码的96字节字符串。以下操作将生成满足所述要求的密钥并将其加载到mongo外壳中:
TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongo --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 。
mongodb://myMongo.example.net
encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", ClientSideFieldLevelEncryptionOptions )
检索keyVault对象,并使用KeyVault.getKey()来通过检索数据加密密钥UUID:
keyVault
KeyVault.getKey()
keyVault = encryptedClient.getKeyVault() keyVault.getKey(UUID("b4b41b33-5c97-412e-a02b-743498346079"))
getKey() 返回以下数据加密密钥:
{ "_id" : UUID("b4b41b33-5c97-412e-a02b-743498346079"), "keyMaterial" : BinData(0,"PXRsLOAYxhzTS/mFQAI8486da7BwZgqA91UI7NKz/T/AjB0uJZxTvhvmQQsKbCJYsWVS/cp5Rqy/FUX2zZwxJOJmI3rosPhzV0OI5y1cuXhAlLWlj03CnTcOSRzE/YIrsCjMB0/NyiZ7MRWUYzLAEQnE30d947XCiiHIb8a0kt2SD0so8vZvSuP2n0Vtz4NYqnzF0CkhZSWFa2e2yA=="), "creationDate" : ISODate("2019-08-12T21:21:30.569Z"), "updateDate" : ISODate("2019-08-12T21:21:30.569Z"), "status" : 0, "version" : NumberLong(0), "masterKey" : { "provider" : "aws", "key" : "arn:aws:kms:region:account:key/keystring", "region" : "region", "endpoint" : "kms.region.amazonaws.com:443" }, "keyAltNames" : [ "dataKeyAlternativeName" ] }