如何在应用程序中将Azure KeyVault参考用于connectionString

时间:2019-08-19 21:40:01

标签: azure connection-string azure-keyvault

更新:修复在下面的评论中。主持人能否将其固定为答案。谢谢!

我正在尝试设置Azure KeyVault,而无需对我的Web.Config文件进行任何代码更改。我有一个Web应用程序,该应用程序具有用于数据存储的SQL数据库,并且我试图以这种方式替换connectionString,以便在使用Azure App Service配置的应用程序部署过程中动态注入该连接字符串。我正在使用对我的密钥库机密的引用在我的App服务配置中对此进行引用。但是,我无法访问数据,并且出现以下错误:

https://imgur.com/a/9MkAfF5

我尝试了以下操作:

  1. 创建KeyVault实例
  2. 向KeyVault添加秘密
  3. 授予对Web应用程序的访问权限,以便能够使用Azure Active Directory访问此KeyVault。我创建了一个新的应用程序注册,并为其分配了密钥库的访问策略,以赋予该活动目录所有访问/设置/获取/列出机密的权限。
  4. 通过转到我的应用程序服务并转到配置并按如下所示添加连接字符串,将Key Vault集成到我的Azure App Service中:

https://imgur.com/a/kBKKbTG

如您所见,我使用的是来自KeyVault的以下形式的引用:

@ Microsoft.KeyVault(SecretUri = https://xxx.vault.azure.net/secrets/mysecret/xxxzxxzxxzxzx

我什至尝试使用这样的引用:

@ Microsoft.KeyVault(VaultName = xxx-kv-arm; SecretName = connectionString; SecretVersion = xxx)

在我的Azure App Service配置中,以从密钥库访问机密,并在部署期间将其作为connectionString传递。

我的Web.config:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="SchoolContext" connectionString=" " providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

</configuration>

我到底在做什么错?

1 个答案:

答案 0 :(得分:1)

  

但是,我的azure活动目录中没有看到此应用程序服务,   关于这为什么的任何线索?

您可以在企业应用程序下找到该应用程序,请记住将应用程序类型设置为所有应用程序

enter image description here

该问题已由操作员解决,只需将其添加到答案中即可使其对其他人可见。

转到App服务,转到“身份”,然后启用系统分配的身份。这将使我们能够转到我的Key Vault实例并为此应用程序服务本身而不是新的Azure Active Directory配置访问策略。

这里是document供您参考。