如何在不存储凭据的情况下连接到KeyVault?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不存储凭据的情况下连接到KeyVault?相关的知识,希望对你有一定的参考价值。

我的Web应用程序有许多存储在KeyVault中的安全配置元素。为了连接它,我们有一些使用应用ID和密钥的代码,这反过来,因为它们允许访问密钥保管库,是安全凭据。

我可以使用应用程序的身份作为凭证以某种集成安全方式连接到KeyVault吗?或者是否有其他方法来保护这些凭据?

我已经考虑过使用加密保护配置元素,但是还有另一个必须维护,保护和部署的资产(密钥)。这比明文配置更好,但我想在这里找出最好的解决方案。

答案

如果要使用Azure Active Directory从Web App访问Key Vault,可以执行以下操作

  1. 转到您的Web应用程序
  2. 转到托管服务标识并使用Azure Active Directory注册Web应用程序(稍后单击On按钮和Save),这将创建托管服务标识。 Managed service identity
  3. 现在转到密钥库并打开Access policies选项卡
  4. 单击“添加新”
  5. 从模板中选择Secret Management作为Configure
  6. 在“选择主体”选项中,选择为您的Web应用程序创建的托管服务标识(应该将其命名为您的应用程序)enter image description here
  7. 现在转到Key权限,至少选择Get,以获取对密钥的访问权限(Secrets和Certificates的相同过程)。

完成所有这些步骤后,您可以转到您的网络应用程序代码并获取,例如,如下所示的秘密:

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

 var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

 var secret = await keyVaultClient.GetSecretAsync("https://keyvaultname.vault.azure.net/secrets/secret").ConfigureAwait(false);

您将需要在您的应用程序中安装Microsoft.Azure.Services.AppAuthenticationMicrosoft.Azure.KeyVault NuGet软件包。

另一答案

如果您的应用程序在Web应用程序中运行,Managed Service Identity会为您的应用程序提供一个身份,您可以使用该身份使用AAD访问Key Vault和其他资源。

以上是关于如何在不存储凭据的情况下连接到KeyVault?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 *** 映像的情况下连接到 docker 中的 ***?

在不设置 SRV 记录的情况下连接到 Google 帐户

如何在不使用@符号连接到DB的情况下连接到DB。调用sqlplus UNAME @ DBNAME /密码@ \ Filelocation

如何在不使用 EF 的情况下连接到 ASP.NET Core Web API 中的数据库?

在不安装客户端软件的情况下连接到 ***

有啥方法可以在不使用 XMPP 协议的情况下连接到 Facebook 聊天服务?