You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure如何为另一租户的应用注册创建SQL外部用户

跨租户为Azure应用注册授予SQL Server访问权限操作指南

前置操作逻辑说明

要让租户B的应用注册访问租户A的SQL Server,首先需要将租户B的应用注册作为来宾服务主体添加到租户A的Azure AD中,之后才能在SQL内创建外部用户并授权。

步骤1:将租户B的应用注册添加到租户A

首先切换到租户A的Azure权限上下文,执行如下Azure CLI命令,将租户B的应用注册同步为租户A的来宾服务主体:

# 登录租户A
az login --tenant <租户A的租户ID>
# 同步租户B的应用注册到租户A,此处填租户B应用注册的客户端ID(应用程序ID)
az ad sp create --id <租户B应用注册客户端ID>

执行完成后,可在租户A的「Azure AD > 企业应用」列表中搜索到该应用注册的来宾实例,获取其在租户A中的对象ID即可。你之前疑问的同一条命令多次传入的object-id-of-sp-in-one-tenant,分别对应不同租户下的服务主体实例ID:同一个应用注册在所属租户和受邀租户中的对象ID是完全独立的,需要分别取值传入,不可混用。

步骤2:配置SQL Server的Azure AD管理员

执行创建外部用户的SQL命令,必须使用Azure AD管理员身份连接SQL,首先完成管理员配置:

  • 进入租户A的SQL Server资源页
  • 左侧菜单栏选择「Azure Active Directory」
  • 点击「设置管理员」,选择租户A内的任意AAD用户/组作为管理员,保存配置

步骤3:执行SQL授权命令

使用刚才设置的AAD管理员身份连接到需要授权的目标用户数据库(不要连接默认master库,除非需要全实例权限),直接执行你准备好的SQL语句即可:

-- 方括号内填写租户B应用注册的显示名称,也可填写其客户端ID
CREATE USER [tenant_b_app_reg] FROM EXTERNAL PROVIDER;
EXEC sp_addrolemember [db_datareader], [tenant_b_app_reg];

常见参数说明

你提到的role-id是Azure AD自定义应用角色的唯一标识,如果你仅使用SQL内置的db_datareader这类固定角色,不需要额外配置role-id参数,直接执行上述SQL语句即可。只有在需要自定义数据访问权限时,才需要预先在应用注册中定义角色、获取对应的role-id进行授权。

权限验证

可使用租户B应用注册的客户端ID、客户端密钥请求Azure AD令牌,用令牌连接租户A的SQL Server执行查询操作,确认权限配置生效。

内容的提问来源于stack exchange,提问作者John Stud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:27:03