从Azure应用程序服务连接到Azure Sql数据库适用于系统分配但不适用于用户分配的托管标识



我可以通过以下方式将我的(.Net 6(Azure应用程序连接到我的Azure Sql Server:

  1. 打开Azure应用程序上的系统分配标识
  2. 将Azure Sql Server实例中的Azure Active Directory管理员设置为此新标识
  3. 将此新标识添加为Sql Server访问控制中的所有者(或参与者(
  4. 在(.net 6(应用程序的代码中使用连接字符串,例如(Server=tcp:mydbs.database.windows.net;database=thedb;Authentication=Active Directory Managed Identity;TrustServerCertificate=True;(

有很多Azure CLI指南可以帮助您做到这一点,但Azure Web UI现在可以做更多的工作,并且以上步骤都有效。

但是,我需要从另一个Azure应用程序连接到同一个数据库。你不能让2个身份成为数据库的管理员,所以我试着改用用户分配的身份(我作为资源组的一部分创建的(。步骤是:

  1. 关闭Azure应用程序中的系统管理Id,并在"标识"页面上添加用户管理标识
  2. 已将Azure Sql Server实例中的Azure Active Directory管理员更改为此新的用户管理标识
  3. 已将此标识添加为Sql访问控制中的所有者
  4. 保持连接字符串不变

它不起作用。我认为当应用程序尝试登录数据库时,Sql连接并没有像系统管理Id那样获取用户管理Id。

有什么想法吗?

好的,解决这个问题的一种方法是在AAD中创建一个组,将Azure应用程序系统Id放入其中,然后在Azure Sql数据库中赋予它管理权限。然后,我可以在需要时将更多Azure应用程序系统ID添加到组中。我仍然想知道让(.Net 6(Azure应用程序使用用户分配的身份所需的步骤或连接字符串技巧。

最新更新