【问题标题】:What do I gain by using Key Vault?使用 Key Vault 可以获得什么?
【发布时间】: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


【解决方案1】:

方法:

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

好处:

您不再需要处理应用程序 ID 和客户端 ID 等应用程序机密,因为现在通过 Azure 托管标识处理这些信息。

【讨论】:

  • 这是一个客户端控制台应用程序。没有应用服务。
  • 在这种情况下,使用密钥保管库并没有真正的好处,您考虑的唯一好处是您需要添加证书以访问密钥保管库并让此客户端控制台应用程序自行验证使用您在此应用生态系统本身范围内维护的私钥到保险库
  • “让这个客户端控制台应用程序使用你在这个应用程序生态系统本身的领域内维护的私钥对保险库进行身份验证”我不清楚这与我有什么不同已经在做了吗?
  • 在您的上下文中,您可以选择使用证书作为替代措施,使用 AD 对您的控制台应用程序进行身份验证。这也将允许您访问 AZ 资源。
  • 如果有用,请记得将回复标记为已回答。让我们保持动力。
猜你喜欢
  • 1970-01-01
  • 2020-05-04
  • 2019-01-27
  • 2018-03-26
  • 2017-04-07
  • 1970-01-01
  • 2016-04-24
  • 2022-07-22
  • 2018-04-30
相关资源
最近更新 更多