我们有一个 Azure 数据库同步组,它有时需要由应用程序启动 - 例如,用户做了一些需要将数据从一个数据库同步到另一个数据库的事情(通常是添加一个新用户)。
通过将机器的身份 GUID 添加到适当的 SQL Server 角色,我们已授予 Web 应用程序(使用托管服务身份)启动此同步的权限 - 这很有效。
之后,我们在 Staging 和 Prod 服务器上创建了部署槽 - 虽然根站点仍然可以工作,但在部署槽中运行的应用程序会抛出异常,指出它没有启动同步的权限。
我找不到任何文档来获取部署槽(又名 Bar)的对象 ID(实际 GUID)以添加到此语句中:
az role assignment create --role "SQL Server Contributor" --assignee-object-id "Bar" --resource-group Foo
编辑:我没有在插槽上手动设置身份,也没有在根应用程序上 - 我刚刚打开 MSI 并试图发现身份。老实说,如果它能够与根应用程序相同,那就没问题了。
我敏锐地意识到 SQL Server Contributor 是授予 Web 服务器的巨大权限,但它似乎是我可以授予实际有权启动数据库同步的服务器的最低权限。