使用元数据安全协议强化Azure上Ubuntu的安全性

本文介绍了Ubuntu在Microsoft Azure上的安全增强功能,支持Azure元数据安全协议(MSP),通过身份验证和授权机制强化实例元数据服务和WireServer的访问控制,提供默认安全保护。

使用元数据安全协议强化Azure上Ubuntu的安全性

我们很高兴分享Microsoft Azure上Ubuntu工作负载的安全增强功能。在与微软的合作下,Ubuntu现在支持Azure的元数据安全协议(MSP)——这一功能强化了对实例元数据服务(IMDS)和WireServer的访问。在Ubuntu上,MSP通过azure-proxy-agent包启用,这是Canonical对微软来宾代理代理(GPA)的集成。

为什么MSP提高了安全基线

传统的元数据端点在虚拟机内默认开放。这为混淆代理/SSRF路径和沙箱逃逸留下了空间。MSP通过在元数据边界实施强控制将其改为默认关闭:

  • 强身份验证:IMDS/WireServer仅接受由可信的来宾委托(GPA/azure-proxy-agent)背书(HMAC签名)的请求。未签名的流量将被拒绝。
  • 身份感知授权:代理使用eBPF拦截IMDS和WireServer请求,并识别发起进程和用户。然后在背书请求前检查允许列表(细粒度、每端点RBAC)。
  • 默认安全:即使来宾防火墙规则配置错误或被绕过,未经身份验证的流量仍然无法访问元数据服务。

有关架构和Azure端配置,请参阅微软的MSP文档。

启用要求

MSP必须在Azure中启用。仅安装Ubuntu包不会开启MSP。从Azure端(门户/CLI/模板)为VM/VMSS启用MSP,以便验证请求并拒绝未签名的流量。

可用性和路线图

azure-proxy-agent包现已可用于测试,并处于Ubuntu 25.10 “Questing Quokka"的开发系列中。

在我们收集反馈并验证稳定性后,我们计划通过稳定发布更新(SRU)过程将azure-proxy-agent交付给Ubuntu 25.04(Plucky Puffin)、Ubuntu 24.04 LTS(Noble Numbat)和Ubuntu 22.04 LTS(Jammy Jellyfish)。

LTS早期测试

对于Ubuntu 24.04 LTS和22.04 LTS,azure-proxy-agent当前在-proposed中可用。如果您愿意测试SRU候选版本,请临时启用-proposed并仅固定此包,以免升级不相关的组件。关于-proposed和SRU的背景信息:稳定发布更新

通用、代码名感知代码片段(适用于Jammy/Noble/Plucky):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 解析代码名(优先使用/etc/os-release;回退到lsb_release)
CODENAME="$(. /etc/os-release 2>/dev/null; echo ${VERSION_CODENAME:-$(lsb_release -cs)})"

# 仅从<codename>-proposed固定azure-proxy-agent
sudo tee /etc/apt/preferences.d/azure-proxy-agent <<EOF
Package: azure-proxy-agent
Pin: release n=${CODENAME}-proposed
Pin-Priority: 501
EOF

# 添加此代码名的-proposed,安装,然后移除它
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${CODENAME}-proposed main universe"
sudo apt update
sudo apt install azure-proxy-agent
sudo add-apt-repository -r "deb http://archive.ubuntu.com/ubuntu ${CODENAME}-proposed main universe"

在Ubuntu 25.10上安装(开发系列)

1
2
sudo apt update
sudo apt install azure-proxy-agent

安装后,从Azure(门户/CLI/模板)在VM/VMSS上启用MSP。如果不启用MSP,请求将不会被验证,保护也不会生效。

评估最佳实践

每个环境都不同。如果您决定尝试MSP,请在审计模式下开始以观察行为,当您满意时再切换到强制执行模式。许多团队只是简单地对正常工作负载进行健全性检查,并在相关时尝试基本的允许列表。除此之外,测试任何反映您风险模型的内容。

分享反馈

请在我们的Discourse主题中分享结果(Ubuntu版本、内核、VM大小、架构;任何观察结果)。您的意见将帮助我们完成SRU验证,并将azure-proxy-agent推广到LTS用户的-updates中。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计