如何通过Subscription Id获取关联的Azure Organization?
通过订阅ID获取关联Azure组织(Azure AD租户)的方案
REST API方案
你可以通过Azure管理API实现该需求,分两步操作:
- 第一步:调用订阅详情API获取订阅关联的租户ID(Azure组织的核心标识)
请求格式:
响应体中的GET https://management.azure.com/subscriptions/{subscriptionId}?api-version=2021-01-01tenantId字段即为该订阅所属Azure组织的租户ID。 - 第二步:调用租户详情API获取组织的完整信息
请求格式:
响应体包含组织名称(GET https://management.azure.com/tenants/{tenantId}?api-version=2021-01-01displayName)、租户ID、域名等核心信息。
Golang SDK方案
Azure SDK for Go的azresources模块已封装相关能力,无需额外第三方库:
- 初始化订阅客户端,获取订阅关联的租户ID:
import ( "context" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" ) func getSubscriptionTenant(subscriptionId string) (string, error) { cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { return "", err } client, err := armresources.NewSubscriptionsClient(cred, nil) if err != nil { return "", err } resp, err := client.Get(context.TODO(), subscriptionId, nil) if err != nil { return "", err } return *resp.TenantID, nil }
- 用获取到的租户ID调用租户客户端,获取组织详情:
func getTenantDetails(tenantId string) (*armresources.TenantDescription, error) { cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { return nil, err } client, err := armresources.NewTenantsClient(cred, nil) if err != nil { return nil, err } resp, err := client.Get(context.TODO(), tenantId, nil) if err != nil { return nil, err } return &resp.TenantDescription, nil }
注意:调用上述API需具备订阅级别的读取权限(如Reader角色)。
内容的提问来源于stack exchange,提问作者sysdighshai
相关产品推荐
相关产品推荐

