我们有一个带有 SQL Server 的 Azure VM,我们还有一个应用服务 Web 应用程序。
自从我们开启此功能以来,应用程序服务具有托管身份:
现在我想向 SQL Server 验证此应用程序服务。
我可以通过创建到托管标识本身的 SQL Server 标识映射来成功完成此操作。
像这样:
CREATE LOGIN [my-app-service]
FROM EXTERNAL PROVIDER;
然后给它数据库权限。
问题是我认为这不太可扩展。我们有几个需要数据库访问的应用程序。因此,我的计划是在 Entra 中创建一个组并将托管身份添加到该组。
与普通用户(开发人员)合作,我成功实现了这一目标。
例如在 Entra 中:
然后在 SQL Server 中:
CREATE LOGIN [Developers - internal]
FROM EXTERNAL PROVIDER;
并添加数据库权限等等。
当尝试通过托管身份实现此目标时,我没有成功。
我已将服务主体添加到我的组中,但这不起作用。
我怀疑将托管身份添加为普通会员并不是正确的做法。还有一个称为应用程序的部分。
我可以将其他企业应用程序添加到组中,但是当我导航到我的托管身份时,将其添加到组中的按钮被禁用。我还添加了我能想到的所有权限(云应用程序管理员、应用程序管理员根据this)。还是无法正常工作。
有人知道如何解决根本问题吗?通过组使用托管身份验证 SQL Server,而不是身份本身?
有人知道是否可以启用“添加用户/组”按钮?
我过去曾采用过这种工作方式,至少是直接会员。只要有服务主体在组中就足够了。
您可能还需要等待一段时间(最坏情况下超过一天)才能将更改应用于代币。
这似乎在本例中有效。我不是 100% 确定 Azure SQL 如何检查组成员资格,但我假设有某种缓存需要等待才能应用更改。