【Azure Developer】通过 API 获取 Azure VM 信息实践指南 Part 1(Azure China)
问题描述
基于 Azure China (21Vianet) 环境,实现对订阅下云服务器(Virtual Machine)的统一资产管理能力。具体要求如下:
- 通过 RESTful API 获取订阅下所有 VM 信息;
- 返回标准 JSON 格式数据;
- 支持自动化集成;
- 采用只读、安全、可控的访问方式;
- 能够进一步获取 VM 的操作系统、运行状态、CPU、内存、IP 地址以及删除记录等信息。
本文为第一部分 将包含获取如何获取认证Token, VM列表,VM公网/私网IP以及VM操作系统信息
问题解答
场景一:如何安全获取访问VM API的认证Token
为了避免使用个人账号访问 Azure 资源,推荐采用 Service Principal(服务主体)方式进行身份认证。
Step 1:创建 Entra ID 应用
在 Microsoft Entra ID 中注册应用程序,并记录以下信息:
- Tenant ID
- Client ID
- Client Secret
认证时将使用这些参数获取访问令牌。
Step 2:为应用授予只读权限
由于客户需要读取整个订阅下的资源信息,因此需要:
- 进入 Azure Subscription
- 打开 IAM(Access Control)
- 添加 Role Assignment
- 赋予应用 Reader 角色
这样应用即可读取资源信息,但无法修改任何资源,实现最小权限访问原则。
Step 3:获取 Access Token
调用 OAuth2 Client Credential Flow:
POST https://login.partner.microsoftonline.cn/{Tenant_ID}/oauth2/v2.0/token
请求参数:
grant_type=client_credentials
client_id={Client_ID}
client_secret={Client_Secret}
scope=https://management.chinacloudapi.cn/.default
成功后返回:
{
"access_token":"xxxxxxxxxxxxx"
}
后续所有 ARM API 请求均使用该 Token。
场景二:获取Azure VM列表
调用 Azure Resource Manager API:
GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines?api-version=2025-11-01
Header:
Authorization: Bearer <Access Token>
返回结果:
{
"value":[
{
"id":"...",
"name":"vm01",
"location":"chinaeast"
}
]
}
通过此接口即可获取订阅下所有 VM 的基础属性信息。
场景三:获取 VM 公网与私网 IP
获取 VM 信息后,可以从返回结果中找到 NIC 资源:
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/.../networkInterfaces/nic01"
}
]
}
记录 Network Interface ID。
随后调用:
GET https://management.chinacloudapi.cn/{networkInterfaceId}?api-version=2025-05-01&$expand=ipConfigurations/publicIPAddress
返回结果中的关键字段:
私网 IP:
properties.ipConfigurations[].properties.privateIPAddress
公网 IP:
properties.ipConfigurations[].properties.publicIPAddress.id
通过该方式即可获取 VM 的网络地址信息。
场景四:获取 VM 操作系统详细版本
基础 VM 查询接口可扩展获取镜像信息:
GET https://management.chinacloudapi.cn/subscriptions/{subId}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2023-09-01
重点关注:
"storageProfile": {
"imageReference": {
"publisher": "canonical",
"offer": "ubuntu-24_04-lts",
"sku": "server",
"version": "latest",
"exactVersion": "24.04.202512181"
}
}
以及:
"osDisk": {
"osType": "Linux"
}
可用于识别:
- Linux / Windows
- 镜像发行版本
- 精确镜像版本号
实现资产管理中的操作系统盘点。
参考资料
在 Microsoft Entra ID 中注册应用程序 : 如何在 Microsoft Entra ID 中注册应用” | Azure Docs
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)