上一篇文章中提到MAC地址问题,有一些第三方应用的License是基于网卡的MAC地址信息的。而Azure中的虚拟机,微软官方又不支持修改MAC地址,虽然上篇文章中提到了“非官方”解决方案可解决,但终究不是微软所支持的做法。那么在Azure云环境中,如何更好的解决这种授权问题呢?如果你的应用提供上能够联系得上,并且支持你修改的话,那么本篇文章所要说的Azure 虚拟机唯一ID或许是更好的选择。

一、什么是Azure虚拟机唯一ID

 Azure VM 唯一 ID 是一个 128 位标识符,它编码并存储在所有 Azure IaaS VM 的 SMBIOS 中,可以使用平台 BIOS 命令读取。此唯一 ID 是一个标识符,可用于多种方案,无论 VM 是在 Azure 上运行还是在本地运行,此标识符都可以在不同的方案中使用,并有助于满足 Azure IaaS 部署中可能具有的许可、报告或常规跟踪要求。许多独立软件供应商和合作伙伴在 Azure 上构建应用程序并对其进行认证时,可能需要在整个生命周期中识别 Azure VM,并判断 VM 是在 Azure、本地还是其他云提供商上运行。例如,此平台标识符可以帮助检测软件是否获得适当的许可,或帮助将任何 VM 数据与其源相关联,例如帮助为正确的平台设置正确的指标,并在其他用途中跟踪和关联这些指标。此唯一标识符无法修改,只能查询。尽管只有在 2014 年 9 月 18 日之后创建的新 VM 才会在创建时启用此功能,但在 2014 年 9 月 18 日之前创建的 VM 在重新启动虚拟机后也可以获得此功能。Azure VM 唯一 ID 它永远不会更改,即使你重新启动、关闭、停止和启动、提供服务或还原也是如此。但是,如果使用快照创建新的 VM 或实例,则虚拟机唯一 ID就会变化。此功能自 2014 年 9 月起在本机启用。如果工作负载没有唯一 ID,只需重启 VM,即可获取唯一 ID。

二、获取Azure虚拟机唯一ID

以下是获取虚拟机唯一ID的方法。

1、对于Windows 虚拟机,可以远程桌面连接到虚拟机之后,通过Powershell一次执行以下2条命令获取Azure 虚拟机唯一ID

 $computerSystemProduct = Get-WmiObject -class Win32_ComputerSystemProduct -namespace root\CIMV2

'BIOS GUID:             "{0}"' -f $computerSystemProduct.UUID

关于Azure虚拟机唯一ID及其信息获取_标识符

2、对于Linux虚拟机

使用以下命令:

sudo dmidecode | grep UUID

关于Azure虚拟机唯一ID及其信息获取_Azure_02

无论平台或应用程序对 Azure VM 有什么要求,现在都可以访问 Azure VM 唯一标识符。