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

如何在Azure Data Factory中获取托管标识的文本格式access_token

无需Azure Function,直接在ADF中获取MSI Access Token对接AWS S3

核心方案:利用ADF托管标识直接请求Azure AD元数据端点获取token

ADF作为PaaS服务无法访问Azure VM专属的IMDS私有接口,需改用Azure AD公开的元数据端点,结合ADF自身的托管标识身份验证,直接获取可用于AWS STS的access_token,无需中转组件。


方法一:Web活动直接获取并使用Token

1. 准备必要参数

  • 从ADF资源的「标识」→「系统分配」页复制客户端ID
  • 从Azure AD概述页复制租户ID
  • 确认之前配置的Application ID URI(即AWS侧身份提供商设置的受众)
  • 复制AWS侧创建的带S3权限的角色ARN

2. 配置Token获取Web活动

创建Web活动,参数如下:

  • 请求方法:GET
  • URL:https://management.azure.com/metadata/identity/oauth2/token?api-version=2018-02-01&resource=<Application ID URI>&client_id=<ADF MSI客户端ID>
  • 身份验证:选择「托管标识」,身份类型选「系统分配」
  • 请求头部:添加键值对 Metadata: true(必填,否则会返回权限错误)

调用后,响应JSON中的access_token字段即为所需的令牌,可通过@activity('<Web活动名称>').output.access_token在后续活动中引用。

3. 配置AWS STS临时凭证获取活动

再创建一个Web活动调用AWS STS接口:

  • 请求方法:POST
  • URL:https://sts.amazonaws.com/
  • 请求正文(form-data格式):
    Action=AssumeRoleWithWebIdentity
    Version=2011-06-15
    RoleArn=<AWS角色ARN>
    RoleSessionName=adf-s3-session
    WebIdentityToken=@activity('<Token获取活动名称>').output.access_token
    

提取响应中的AccessKeyId、SecretAccessKey、SessionToken,即可用于配置ADF的S3链接服务。


方法二:Lookup活动简化Token提取

若需更简洁的JSON解析,可使用Lookup活动替代Web活动获取token:

  • 配置参数与上述Web活动完全一致
  • Lookup活动会自动解析JSON响应,后续可直接用@activity('<Lookup活动名称>').output.firstRow.access_token引用令牌

关键验证点

确保以下配置无遗漏:

  • Azure侧:ADF MSI已被分配包含Microsoft.Authorization/*/read权限的自定义角色
  • AWS侧:身份提供商的受众与Azure Application ID URI完全匹配,角色信任策略正确指向Azure AD身份提供商

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:25:32