如果我直接在桌面应用程序中使用DocumentClient,似乎暴露出与构造Doucument Client中使用的api密钥有关的安全问题。 似乎没有固定密钥的方法。将密钥带到客户端可能会导致黑客完全控制数据库。在我看来,唯一的方法是将DocumentClient放在Web Api或云函数后面。
因此,如果您不能确保对应用程序的访问安全,请说不要在客户端中使用DocumentClient吗?
答案 0 :(得分:3)
直接访问DocumentClient意味着客户可以访问密钥。您可以利用混淆来尝试隐藏它,但实际上,仅监视应用程序的流量并捕获密钥,甚至在未加密的运行时,甚至可以将其作为字符串从内存中转储,这非常容易。您可以使用资源令牌,但这又是一个很大的风险。
您真正想要的是让您的桌面客户端通过自己的auth与API进行对话,而该认证将与CosmosDB本身进行对话。
答案 1 :(得分:1)
由于您已经可以访问Azure订阅,因此也可以将api密钥存储在Azure Key Vault中,这是专门用于存储机密的服务。
因此客户端将从密钥库请求api密钥。要访问密钥库,您可以使用here中所述的客户端证书对它进行身份验证。