你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
元数据安全协议(MSP)是 Azure 虚拟机和 Azure 虚拟机规模集服务中的一项功能。 它增强了 Azure 实例元数据服务和WireServer 服务的安全性。 这些服务在 Azure 基础结构即服务 (IaaS) 虚拟机 (VM) 或虚拟机规模集中可用,对应的地址分别为 169.254.169.254 和 168.63.129.16。
组织使用实例元数据服务和 WireServer 来提供元数据和初始化 VM 凭据。 因此,威胁参与者经常以这些服务为目标。 常见攻击途径包括针对来宾内工作负载和沙盒逃逸的混淆代理攻击。 对于不受信任的代码加载到 VM 的代表托管工作负载中,这些攻击途径尤其令人担忧。
使用元数据服务时,信任边界是 VM 本身。 来宾中的任何软件都有权从实例元数据服务和 WireServer 请求机密。 VM 所有者负责仔细沙盒他们在 VM 中运行的任何软件,并确保外部执行组件无法外泄数据。 在实践中,问题的复杂性导致大规模错误,进而导致攻击。
尽管存在许多深层防御策略,但通过未经身份验证的 HTTP API 提供机密会带来固有的风险。 在整个行业,此类漏洞影响了数百家公司,影响了数百万个人,并导致数亿美元的财务损失。
MSP 通过以下方式关闭最常见的漏洞:
- 解决这些攻击的根本原因。
- 向云元数据服务引入强身份验证和授权概念。
兼容性
运行这些操作系统的 Azure IaaS VM 和虚拟机规模集支持 MSP:
- Windows 10 或更高版本(x64)
- Windows Server 2019 (x64)
- Windows Server 2022 (x64)
- Windows Server 2025 (x64)
- 水手 2.0 (x64, ARM64)
- Azure Linux (Mariner 3.0) (x64,ARM64)
- Ubuntu 20.04+ (x64、ARM64)
当前不支持以下项:
- Red Hat Enterprise Linux 9+
- Rocky Linux 9+
- SUSE Linux Enterprise Server 15 SP4+
- 临时磁盘
- 与 Azure 备份的兼容性
- ARM64
增强的安全性
来宾代理程序(GPA)通过以下方法加强防御这些类型的攻击:
限制对 VM 子集的元数据访问(应用最低特权访问原则)。
从 默认打开 的模型切换到 默认关闭 的模型。
例如,在使用嵌套虚拟化时,配置错误的 L2 VM 可以利用对 L1 VM 的 vNIC 的访问权限,以 L1 的身份与元数据服务进行通信。 使用 GPA 时,配置错误的 L2 无法再获得访问权限,因为它将无法通过服务进行身份验证。
在预配时,元数据服务会在来宾 (GPA) 中建立受信任的委托。 通过协商生成一个长期有效的密钥,用于向可信代理进行身份验证。 代理必须使用基于哈希的消息认证码(HMAC)批准对元数据服务的所有请求。 HMAC 通过强授权建立点对点信任关系。
GPA 使用 eBPF 截获对元数据服务的 HTTP 请求。 eBPF 使 GPA 能够验证发出请求的来宾内软件的身份。 GPA 使用 eBPF 来截获请求,而无需额外的内核模块。 GPA 使用此信息将客户端的标识与 Azure 资源管理器(ARM)中 VM 模型的一部分定义的允许列表进行比较。 然后,GPA 通过添加签名标头来认可请求。 因此,可以在现有工作负载上启用 MSP 功能,而无需进行重大更改。
默认情况下,将强制实施现有的授权级别:
- 实例元数据服务向所有用户开放。
- WireServer 仅供超级用户/管理员使用。
目前,此限制通过来宾操作系统中的防火墙规则来实现。 这仍然是一种默认打开的机制。 如果出于任何原因可以禁用或绕过该规则,元数据服务仍接受请求。 此处启用的授权机制是默认关闭的。 恶意或不小心绕过拦截不会授予对元数据服务的访问权限。
可以通过使用基于角色的访问控制 (RBAC) 语义定义自定义允许列表来设置高级授权配置(即,授权特定的来宾内进程和用户仅访问特定终结点)。
警告
请注意,在 Windows 上,用户可以从 ARM 模板启用 GuestProxyAgent (GPA)。 但是,在 Linux 中,这是一个双重过程。 首先预配 VM/VMSS,只有这样才能配置 GPA。