【发布时间】:2020-03-25 14:37:16
【问题描述】:
为强调而编辑:这是一个客户端控制台应用程序,而不是网络应用程序。
我有一个从 Azure blob 存储下载文件的 C# 控制台应用程序。该应用程序将作为计划任务在无人参与的情况下运行,因此无法提示用户登录。我想出了如何使用 Azure Key Vault 来存储连接字符串,并在 Azure Active Directory 中为该应用程序创建了一个服务原则。该应用程序使用客户端 ID 和客户端密码向 AAD 进行身份验证,然后从 Key Vault 获取连接字符串。但这仍然让我需要在某处存储客户端 ID 和客户端密码。我真的得到了什么,或者我只是把问题从“如何保护连接字符串”转移了? “如何保护客户机密?”
【问题讨论】:
-
有更好的身份验证方式来访问 Key Vault 中的机密:Managed Identities
-
Key Vault 也用于第三方服务的 API 密钥。因此,如果您只有一个连接字符串,并且以这种方式保持您的 Azure 客户端 ID 和机密,是的,收益微乎其微。但是,如果您有一个连接字符串,以及一些其他 Web 服务的 API 密钥,它可以帮助您只需要保护 ONE id 和 secret。再说一次,那是如果您以这种方式保留客户ID和秘密。遵循其他答案以正确处理这些问题,事情会变得更好。
-
@StuartLC 这不需要应用服务应用程序吗?这只是一个客户端控制台应用程序。
-
@mason 同样的问题,那个答案谈到了应用服务或 Azure VM,我可以从客户端控制台应用程序中做到这一点吗?
标签: c# azure azure-keyvault