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

如何以服务身份通过OAuth2.0访问Microsoft资源管理API

如何以服务身份访问Azure资源管理API获取资源组数据

完全可以用服务身份(服务主体)通过OAuth2.0客户端凭证流程访问Azure资源管理API,文档里展示的用户交互流程只是其中一种授权方式,服务端自动化场景下客户端凭证流程是官方推荐的方案。

具体操作步骤

1. 创建Azure AD服务主体

在Azure门户中创建一个应用注册,完成后记录三个关键信息:

  • 客户端ID(Application ID)
  • 客户端密钥(Client Secret)
  • 租户ID(Tenant ID)

2. 分配RBAC权限

给这个服务主体分配对应Azure资源的权限,比如要读取资源组,至少需要Reader角色(可分配到订阅、资源组或更细粒度的范围)。

3. 获取服务身份的访问令牌

通过客户端凭证流程向Azure AD令牌端点请求令牌,示例请求(curl):

curl -X POST https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id={客户端ID}" \
  -d "scope=https://management.azure.com/.default" \
  -d "client_secret={客户端密钥}" \
  -d "grant_type=client_credentials"

返回结果中的access_token就是调用资源管理API所需的令牌。

4. 调用资源管理API获取资源组

用拿到的令牌发起请求,示例:

curl -X GET https://management.azure.com/subscriptions/{订阅ID}/resourcegroups?api-version=2021-04-01 \
  -H "Authorization: Bearer {access_token}"

其他获取资源组及资源的方式

除了直接调用REST API,还有几种更适合自动化场景的方式:

  • Azure CLI:先以服务主体登录,再执行命令
    az login --service-principal -u {客户端ID} -p {客户端密钥} --tenant {租户ID}
    az group list
    
  • Azure PowerShell:使用服务主体认证后执行命令
    $cred = Get-Credential -UserName {客户端ID} -Message "输入客户端密钥"
    Connect-AzAccount -ServicePrincipal -Credential $cred -Tenant {租户ID}
    Get-AzResourceGroup
    
  • Azure SDK:比如Python的azure-mgmt-resources库,通过服务主体认证后调用SDK方法,无需手动处理令牌和API请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:42:18