存储Azure Vault客户端ID和客户端密钥

mac*_*x0r 6 .net-core azure-keyvault asp.net-core-2.0 .net-core-2.0

我正在使用.NET Core 2.0和ASP.NET Core 2.0进行应用程序开发."test"应用程序是.NET Core Console应用程序.我写的核心代码是一个类库.一旦正确测试.我选择这样做,因为我不会暂时使用它(它正在替换旧的ASPNET代码).

无论如何,由于我必须使用大量的API密钥来处理各种服务,所以我决定使用Microsoft Azure Key Vault来存储密钥.我有这个设置,并了解它是如何工作的.测试应用程序使用测试Azure帐户,因此它并不重要.由于这是替换遗留代码而且还处于起步阶段,因此我是唯一的开发人员.

基本上,我遇到了这个问题.从我所看到的Azure Key Vault上没有太多信息.很多示例都将客户端ID和密钥存储在纯文本 json文件中(例如:https://www.humankode.com/asp-net-core/how-to-store-secrets-in-azure-key -vault-using-net-core).我真的不明白这是如何安全的.如果有人要获得这些密钥,他们可以轻松访问Azure存储的信息,对吧?

Microsoft MSDN有一个授权访问的powershell命令(我丢失了原始链接,这是我能找到的最接近的链接:https://www.red-gate.com/simple-talk/cloud/platform-as-a-service/设置和配置-azure-key-vault /)我的开发操作系统是Windows 10,我的主服务器操作系统是Debian.

我该如何处理?

Set*_*Set 6

是的,你是对的,纯文本配置文件只能在开发期间使用,不能用于生产目的.通常,可用选项取决于您托管应用程序的位置和方式.

如果您有Azure Web App,则至少有下一个内置选项(来自文档):

  • 在Azure门户中为AppSettings添加ClientId和ClientSecret值.通过执行此操作,实际值将不在web.config中,而是通过具有单独访问控制功能的Portal进行保护.这些值将替换您在web.config中输入的值.确保名称相同.

  • 通过使用客户端ID和证书而不是客户端ID和客户端密钥来验证Azure AD应用程序.以下是在Azure Web App中使用证书的步骤:

    • 获取或创建证书
    • 将证书与Azure AD应用程序相关联
    • 将代码添加到Web App以使用证书
    • 将证书添加到Web应用程序

您还可以找到一种使用env变量来存储凭据的方法.只有在可以保证不能在prod机器上执行env变量的快照时,这可能没问题.查看被认为对您的秘密有害的环境变量以获取更多详细信息.


最后一件事:还有一种基于这个想法的技术,你需要存储/传递ClientSecret值,而ClientId应该根据托管App的机器/容器细节构建(例如docker container id) .我找到了Hashicorp Vault和AWS上托管的应用程序的示例,但总体思路是相同的:使用Vault进行秘密管理