PyMongo字段级加密:如何通过keyAltName调用getKeyByAltName获取密钥?
解决MongoDB 6.0中
getKeyByAltName命令不存在的问题 你遇到的问题是因为MongoDB 5.0及更高版本已移除getKeyByAltName命令,尽管4.2版本的文档提到该命令,但它在后续版本中被废弃并替换。针对你的场景,有两种可行的解决方案:
方案1:使用getDataKeyByAltName命令替代
这是MongoDB 5.0+推荐的替代命令,专门用于查询客户端字段级加密(CSFLE)的密钥:
from pymongo import MongoClient # 连接MongoDB客户端 client = MongoClient() # 切换到密钥库数据库 key_vault_db = client["keyVault"] # 执行查询命令 result = key_vault_db.command("getDataKeyByAltName", keyAltName="nameofkeyaltnameadmin") print(result)
方案2:直接查询密钥存储集合
密钥默认存储在keyVault数据库的datakeys集合中,你可以直接通过查询语句匹配别名:
from pymongo import MongoClient client = MongoClient() datakeys_collection = client["keyVault"]["datakeys"] # 根据keyAltNames字段匹配目标别名 target_key = datakeys_collection.find_one({"keyAltNames": "nameofkeyaltnameadmin"}) print(target_key)
注意事项
- 如果你的密钥库配置了自定义数据库或集合名称,需对应修改代码中的名称
- 执行查询的用户需要具备
keyVault数据库的读取权限
内容的提问来源于stack exchange,提问作者Ben Smith
相关产品推荐
相关产品推荐

