C# 使用钥匙保险库可以获得什么?

C# 使用钥匙保险库可以获得什么?,c#,azure,azure-keyvault,C#,Azure,Azure Keyvault,为强调而编辑:这是客户端控制台应用程序,不是web应用程序 我有一个C#控制台应用程序,可以从Azure blob存储下载文件。该应用程序将作为计划任务无人值守运行,因此无法提示用户登录。我了解了如何使用Azure Key Vault存储连接字符串,并在Azure Active Directory中为应用程序创建了服务原则。应用程序使用客户端id和客户端密码通过AAD进行身份验证,然后从密钥库获取连接字符串。但这仍然让我需要将客户id和客户机密存储在某个地方。我是否真的得到了什么,或者我只是将问

为强调而编辑:这是客户端控制台应用程序,不是web应用程序


我有一个C#控制台应用程序,可以从Azure blob存储下载文件。该应用程序将作为计划任务无人值守运行,因此无法提示用户登录。我了解了如何使用Azure Key Vault存储连接字符串,并在Azure Active Directory中为应用程序创建了服务原则。应用程序使用客户端id和客户端密码通过AAD进行身份验证,然后从密钥库获取连接字符串。但这仍然让我需要将客户id和客户机密存储在某个地方。我是否真的得到了什么,或者我只是将问题从“如何保护连接字符串”转移到了“如何保护客户端机密”

方法:

您应该为应用程序服务本身创建托管标识,并使用应用程序服务的托管标识访问密钥库中存储和管理的机密和其他机密实体。Azure文档中提供了有关如何创建和集成此类托管身份的更多资源

好处:


您不再需要处理应用程序id和客户端id之类的应用程序机密,因为现在可以通过Azure托管身份进行处理。

有更好的身份验证方法来访问密钥库中的机密:您读过吗?密钥库还用于第三方服务的API密钥。因此,如果您只有一个连接字符串,并且您以这种方式保留Azure客户端id和机密,那么肯定会有最小的收益。但是,如果您有一个连接字符串,加上一些其他web服务的API密钥,它可以帮助您只需要保护一个id和密码。同样,如果你以这种方式保留客户id和机密。按照其他答案正确处理这些问题,事情会变得更好。@StuartLC不需要应用程序服务应用程序吗?这只是一个客户端控制台应用程序。@mason同一个问题,那个答案是关于应用程序服务或Azure VM的,我可以从客户端控制台应用程序执行吗?它是一个客户端控制台应用程序。没有应用程序服务。在这种情况下,没有使用密钥库的真正好处,你所考虑的唯一好处是你需要添加证书来访问密钥库,并且这个客户端控制台应用程序使用你在这个应用程序生态系统领域内维护的私钥来认证自己。“让此客户端控制台应用程序使用您在该应用程序本身领域内维护的私钥向vault进行身份验证“我不清楚这与我正在做的有什么不同?在您的环境中,您可以选择使用证书作为替代措施,使用AD验证您的控制台应用程序。这也将允许您访问AZ资源。如果有用,请记住将响应标记为已回答。让我们保持动力。