如何在ADF链接服务中使用无密钥Service Principal配置跨租户认证
跨租户ADF无密钥SP认证的Azure SQL迁移方案
方案1:带联合凭据(Federated Credentials)的服务主体(Service Principal)
这是当前推荐的无密钥跨租户认证方案,通过Azure AD联合身份凭据实现SP的无密钥身份验证:
在租户B创建并配置SP
登录租户B的Azure门户,创建新服务主体;进入SP的「证书和密码」→「联合凭据」,添加一条新凭据:- 凭据类型选「Azure资源」
- 关联租户A的ADF托管标识(或手动输入MI的
issuer和subject值,可通过Azure CLI命令az identity show --id <ADF-MI资源ID> --query "{issuer: issuer, subject: subject}"获取) - 设置凭据过期时间
为租户B的SP授予数据访问权限
在租户A的Azure SQL中创建对应SP的Azure AD登录名:CREATE LOGIN [租户B-SP名称] FROM EXTERNAL PROVIDER;在目标数据库创建用户并分配只读权限:
CREATE USER [租户B-SP名称] FROM LOGIN [租户B-SP名称]; ALTER ROLE db_datareader ADD MEMBER [租户B-SP名称];同样在租户B的Azure SQL中为该SP创建登录和用户,分配
db_datawriter等写入权限。在ADF中配置链接服务
配置源/目标Azure SQL链接服务时,选择「服务主体」认证方式,输入租户B的SP客户端ID和租户ID;认证类型选「联合凭据」,无需输入客户端密钥或证书,ADF会通过自身托管标识与SP的联合凭据完成身份验证。
方案2:托管标识作为外部来宾用户(Guest User)
若无法使用联合凭据,可尝试将租户A的ADF托管标识添加为租户B的外部来宾用户:
在租户B中添加ADF MI为来宾用户
登录租户B的Azure AD,进入「用户」→「新建来宾用户」,输入租户A的ADF MI对象ID或用户主体名称;为该来宾用户分配Azure SQL访问权限(可通过Azure AD角色或SQL登录/用户配置)。配置ADF链接服务
配置租户B的Azure SQL链接服务时,选择「托管标识」认证方式,ADF的MI会以租户B的来宾用户身份完成认证。
注意:此方案要求租户B的Azure AD允许外部来宾用户访问,部分场景下权限限制较多,稳定性不如联合凭据方案。
关键注意事项
- 联合凭据方案需要Azure AD Premium P1/P2许可证(多租户场景)。
- 确保跨租户Azure AD信任关系配置正确,租户A的ADF MI可被租户B的Azure AD识别。
- 测试链接服务时,需验证SP/MI的权限覆盖数据读取、写入操作。
内容的提问来源于stack exchange,提问作者Narsimha V
相关产品推荐
相关产品推荐

