【发布时间】:2018-10-30 17:21:39
【问题描述】:
我们有一个 Azure 数据库同步组,不时需要由应用程序启动 - 例如,用户做了一些需要将数据从一个数据库同步到另一个数据库的操作(通常是添加一个新用户)。
我们已授予 Web 应用程序(使用托管服务标识)启动此同步的权限,方法是将机器的标识 GUID 添加到适当的 SQL Server 角色 - 这很有效。
之后我们在 Staging 和 Prod 服务器上创建了部署槽 - 虽然根站点仍然可以工作,但在部署槽中运行的应用程序会引发异常,指出它没有启动同步的权限。
我找不到任何文档来获取 部署槽(又名 Bar)的对象 ID(实际 GUID) - 添加到此语句中:
az role assignment create --role "SQL Server Contributor" --assignee-object-id "Bar" --resource-group Foo
编辑:我没有在插槽上手动设置身份,也没有在根应用程序上设置身份 - 我刚刚打开 MSI 并试图发现身份。老实说,要是能和root应用一样就好了。
我非常清楚 SQL Server Contributor 是授予 Web 服务器的巨大权限,但它似乎是我可以授予实际有权启动数据库同步的服务器的最低权限。
【问题讨论】:
-
您是否在插槽上启用了托管标识?它在 AAD 中创建了一个单独的身份。您可以在 Azure Active Directory 的企业应用程序下找到它。只需确保将过滤器设置为所有应用程序即可。
-
我有,但我让它自动设置。编辑了我的问题以阐述这一点。
-
发布这个作为答案,行得通!
标签: azure azure-sql-database azure-deployment-slots