为什么Azure Key Vault安全?

时间:2016-11-23 16:01:33

标签: .net azure azure-keyvault

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

2 个答案:

答案 0 :(得分:4)

您误解了Key Vault。密钥保险库在某种意义上是安全的,没有任何东西通过公共互联网传输,与Key Vault和Azure资源的所有通信都通过Azure Backbone,因此默认情况下它们是安全的(如果您认为Azure是安全的,那么)。 /> 此外,使用Key Vault,您可以允许部署某些证书,而无需查看它们(或复制它们)。基本上,它支持RBAC。

答案 1 :(得分:4)

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

在Azure VM上运行应用程序的上下文中,您可以使用客户端证书身份验证,而不是使用client_secret进行身份验证,而不是documentation: Authenticate with a Certificate instead of a Client Secret中所述。

Key Vault Client Certificate Authentication Image

在上图中:

  • 应用程序通过证明它具有证书的私钥(如果您使用Windows,它基本上存储在CNG中)来对AAD进行身份验证。
  • 应用程序返回access_token,然后使用它访问密钥保管库。

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

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

Azure Compute的其他细节方法是使用Azure Managed Service Identity。使用Azure MSI,Azure将自动为您的资源(例如VM)分配身份/服务主体,并且您可以在特定端点上触发只能由您的资源访问的请求以获取access_token。但要小心Azure MSI仍处于公开预览状态,因此请在使用前查看已知问题。

Azure Managed Service Identity Image

上图说明了Azure Resource Manager如何为VM分配服务主体身份。

  • 在VM中启用MSI时,Azure将在您的AAD中创建服务主体。
  • 然后,Azure将为您的VM部署新的MSI VM扩展。这提供了http://localhost:50432/oauth2/token的端点,用于获取服务主体的access_token
  • 然后,您可以使用access_token访问授权服务主体访问权限的密钥保管库等资源。