6

Azure Key Vault 为何或如何安全?我需要在服务器上存储密钥 URI 和客户端 ID 和客户端机密,因此如果有人授予对托管应用程序的服务器的访问权限,他将能够访问存储在 Key Vault 中的密钥和机密。这意味着将它们存储在服务器上同样安全,对吧?

4

2 回答 2

8

这对于 OP 来说已经晚了,但我希望它可以帮助其他人在使用 Azure Key Vault 时解决鸡蛋问题。

对于在 Azure VM 上运行应用程序的上下文client_secret,您可以使用客户端证书身份验证,而不是用于身份验证,如本文档中所述:使用证书而不是客户端密钥进行身份验证

Key Vault 客户端证书身份验证映像

在上图中:

  • 应用程序通过证明它具有证书的私钥(如果您使用的是 Windows ,它基本上存储在CNG中)来向 AAD 进行身份验证。
  • 应用程序取回access_token并使用它来访问 Key Vault。

开发人员无需知道证书的私钥值即可成功验证其应用程序。相反,他们只需要知道导入的pfx(私钥及其证书的容器)在证书存储中的位置。

至少在 Windows 上,您作为机密管理员可以将私钥和证书转换为受密码pfx保护的格式,然后将其部署到 Windows 证书存储中。这样,除非他们知道文件的密码,否则没有人可以知道私钥。pfx


Azure Compute 的另一种方法细节是使用Azure Managed Service Identity。使用 Azure MSI,Azure 将自动为您的资源(例如 VM)分配一个标识/服务主体,并且您可以在特定端点上触发请求,这些请求只能由您的资源访问以获取access_token. 但请注意 Azure MSI 仍处于公共预览阶段,因此请在使用前查看已知问题。

Azure 托管服务标识映像

上图说明了 Azure 资源管理器如何将服务主体标识分配给您的 VM。

  • 在 VM 中启用 MSI 时,Azure 将在 AAD 中创建服务主体。
  • 然后,Azure 将向您的 VM 部署新的 MSI VM 扩展。这在http://localhost:50432/oauth2/token提供了一个端点,用于获取access_token服务主体的。
  • 然后,您可以使用access_token访问授权服务主体访问的资源,例如 Key Vault。
于 2018-03-23T09:34:35.097 回答
6

您误解了 Key Vault。从某种意义上说,Key Vault 是安全的,没有任何东西通过公共 Internet 传输,与 Key Vault 和 Azure 资源的所有通信都通过 Azure 主干,因此默认情况下它们是安全的(好吧,如果你相信 Azure 是安全的)。
此外,使用 Key Vault,您可以允许部署某些证书,而无需查看它们(或复制它们)。基本上,它支持 RBAC。

于 2016-11-23T16:15:54.273 回答