你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

元数据安全协议 (MSP)

元数据安全协议(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。