azure - Azure:如何为另一个租户中的应用注册创建 SQL 外部用户?
问题描述
我有以下内容:
- 租户 A 中的 Azure 应用服务
- 租户 A 中的 Azure SQL Server
- 租户 B 中的 Azure 应用程序/企业注册
这种分离的目的是将特定用户限制在 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
。
解决方案
• 根据您的查询,“”在相关脚本中出现多次,因为一个租户中应用的“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 创建托管标识的更多详细信息,请查找以下文档链接:-
推荐阅读
- reactjs - 如何在 React 中有条件地禁用表单
- python - Keras 预测二进制问题的浮点输出
- deep-learning - pytorch 保存和加载模型
- react-native - 尽管全球安装了世博会,但无法在此项目中找到世博会
- flutter - 热重载时的 Riverpod 状态更新
- database - 查询和链接表
- python-3.x - 无法在 Anaconda Python 上安装 web3 模块(尝试了 Wheeler 文件和原始文件下载)
- python - 如何在 Pandas 中使用合并或 VLOOKUP 功能合并两个数据框
- sorting - 我需要在附加时对附加的东西进行排序
- dart - 用于避免 dart csv 日志编写器的三重代码的设计模式(类属性、csv 标题、行值)