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

如何使用Azure Go SDK操作角色分配?含特定主体分配列表查询

使用Azure Go SDK处理角色分配:查询特定主体的角色分配

核心依赖包

需要导入Azure身份认证包和授权管理包:

import (
    "context"
    "fmt"
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v2"
)

1. 创建角色分配客户端

利用默认Azure凭据(支持本地开发、Azure托管环境等多种认证场景)初始化客户端:

// 初始化默认凭据
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
    panic(err) // 实际项目中请替换为业务错误处理逻辑
}

// 初始化角色分配客户端(替换为你的订阅ID)
client, err := armauthorization.NewRoleAssignmentsClient("your-subscription-id", cred, nil)
if err != nil {
    panic(err)
}

2. 查询特定主体的角色分配

通过设置Filter参数,使用Azure RBAC的过滤语法assignedTo('<principal-id>')筛选目标主体的角色分配。你可以根据需要指定查询范围(订阅、资源组、资源等):

示例1:查询订阅范围内的角色分配

// 替换为目标主体的ID(用户/服务主体/组的Azure AD ID)
principalID := "target-principal-id"
filter := fmt.Sprintf("assignedTo('%s')", principalID)

// 创建分页查询器
pager := client.NewListPager(&armauthorization.RoleAssignmentsClientListOptions{
    Filter: &filter,
})

// 遍历所有结果页
for pager.More() {
    page, err := pager.NextPage(context.TODO())
    if err != nil {
        panic(err)
    }

    // 处理每个角色分配条目
    for _, assignment := range page.Value {
        fmt.Printf("角色分配ID: %s\n", *assignment.ID)
        fmt.Printf("角色定义ID: %s\n", *assignment.Properties.RoleDefinitionID)
        fmt.Printf("主体ID: %s\n", *assignment.Properties.PrincipalID)
        fmt.Printf("作用范围: %s\n", *assignment.Properties.Scope)
        fmt.Println("---")
    }
}

示例2:查询资源组范围内的角色分配

如果需要限定在特定资源组查询,使用NewListForResourceGroupPager方法:

resourceGroupName := "your-resource-group-name"
pager := client.NewListForResourceGroupPager(resourceGroupName, &armauthorization.RoleAssignmentsClientListForResourceGroupOptions{
    Filter: &filter,
})

// 后续遍历逻辑同示例1

关键注意事项

  • 权限要求:执行查询的身份需要具备Microsoft.Authorization/roleAssignments/read权限,常见角色如Reader、Role Based Access Control Administrator都包含该权限。
  • 过滤语法扩展:可以组合过滤条件,比如assignedTo('<principal-id>')+and+atScope()仅查询当前范围(不包含继承的)角色分配。
  • 获取主体ID:可以通过Azure CLI命令获取,比如查询用户ID:az ad user show --id user@example.com --query id -o tsv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:37:35