首页 > 解决方案 > Azure:如何为另一个租户中的应用注册创建 SQL 外部用户?

问题描述

我有以下内容:

这种分离的目的是将特定用户限制在 Azure 应用服务网站上。如何才能在我的 SQL 服务器上执行此代码以授予对位于租户 B 中的应用程序注册的访问权限?

CREATE USER [tenant_b_app_reg] FROM EXTERNAL PROVIDER;
EXEC sp_addrolemember [db_datareader], [tenant_b_app_reg];

这篇文章似乎与我的问题(授予服务主体访问其他租户中的应用程序的权限)类似,但我不能只关注几乎没有上下文的代码发布。也不清楚为什么我们在一个命令中多次发布相同的值object-id-of-sp-in-one-tenant,也不清楚是什么role-id

标签: azureazure-active-directoryazure-sql-database

解决方案


• 根据您的查询,“”在相关脚本中出现多次,因为一个租户中应用的“object-id”和“principal-id”不同,因为 object-id 指的是应用的唯一 id在该租户中注册,并且 principal-id 是指需要在该租户中或跨其他租户访问该应用程序的实体。principal-id 是指服务主体对象,它定义 Azure AD 租户中该应用程序的访问策略和权限。

• 而“role-id”是 azure 内置角色,它基于要分配给该应用程序的基于 azure 角色的访问控制功能,或者是为分配相关范围内的访问控制和权限而创建的任何自定义 azure 角色角色,即可能是“贡献者”或“用户访问管理员”。

 ‘New-AzureADServiceAppRoleAssignment `
   -ObjectId <object-id-of-sp-in-one-tenant> `
   -Id <role-id> `
   -PrincipalId <object-id-of-sp-in-one-tenant> `
   -ResourceId <app-id-in-other-tenant>’

• 因此,您可以参考其他线程中的脚本,并将object-id 和principal-id 替换为您环境中的相应内容。此外,您可以尝试为此目的向 Azure AD 中的托管标识用户授予数据库访问权限。您可以通过使用系统分配的托管标识连接到 SQL 数据库来执行此操作。

• 启用应用程序上的托管标识后,在 SQL 提示符上向具有所需 SQL 安全角色的 SQL 数据库中的该托管标识授予权限。完成后,修改 SQL 连接字符串并发布所做的更改。此外,请确保在 powershell 命令中输入适当的 app-id 和 user-id,以分配托管标识以通过企业应用注册访问 SQL 数据库。有关为跨租户的应用程序的 SQL DB 创建托管标识的更多详细信息,请查找以下文档链接:-

https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-connect-msi?tabs=windowsclient%2Cdotnet

https://docs.microsoft.com/en-us/azure/app-service/tutorial-dotnetcore-sqldb-app?pivots=platform-windows


推荐阅读