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

MSP 功能配置

元数据安全协议(MSP)提供自定义,以最大程度地限制工作负荷中的元数据服务器访问。 本文介绍可在任何受支持的虚拟机(VM)或虚拟机规模集上快速启用的基本概念。

如果您熟悉工作任务如何使用元数据服务,您可以通过遵循高级配置指南来进一步加强访问控制。

可以通过以下方法配置 MSP:

概念

术语 定义
元数据服务 提供固定位置提供的专用、非 Internet、匿名 HTTP API 的行业做法的一般术语。 位置通常为169.254.169.254。 尽管确切的功能、详细信息和服务计数因云提供商而异,但它们都共享类似的体系结构和用途。
Azure 实例元数据服务 面向用户的元数据服务,并带有支持与完整的 API 文档。 它适用于 Azure 和非Microsoft集成。 它提供元数据和凭据的组合。
WireServer 面向平台的元数据服务,组织使用该服务实现核心基础结构即服务(IaaS)功能。 它不适用于常规使用,Azure 不支持这样做。 尽管该服务的使用者与 Azure 实现相关,但在安全评估中仍必须考虑该服务。

默认情况下,WireServer 资源被视为特权。 但是,不应将实例元数据服务资源视为非特权资源。 实例元数据服务还可以提供敏感信息,具体取决于工作负荷。
来宾代理代理 (GPA) 启用 MSP 保护的来宾系统内代理。

Azure 资源管理器字段

您可以通过资源配置部分中的新属性securityProfile来管理所有配置。

配置 MSP 的最低 API 版本为 2024-03-01

常规配置

ProxyAgentSettings 是用于配置 MSP 功能的 Azure VM 和虚拟机规模集的 VM 模型中的新属性。

参数名称 类型 违约 详细信息
enabled Bool false 指定是否应在 VM 或虚拟机规模集上启用 MSP 功能。 默认值为 false。 此属性控制:
  • 应用其他设置。
  • 平台锁定密钥生成。
  • Windows 虚拟机/虚拟机规模集上的自动 GPA 安装(当 true 时)/卸载(当 false 时)。
imds HostEndpointSettings 不適用 实例元数据服务的特定配置。 请参阅本文后面的 每个元数据服务的配置
wireServer HostEndpointSettings 不適用 WireServer 终结点的设置。 请参阅本文后面的 每个元数据服务的配置
keyIncarnationId Integer 0 用于生成密钥的计数器。 增加此值会指示 MSP 重置用于保护来宾和主机之间的信道的密钥。 GPA 会注意到密钥重置,并自动获取新密钥。

此属性仅用于恢复和故障排除目的。

每个元数据服务的配置

可以为每个元数据服务配置单个保护。 每个服务的架构都是相同的。

内联配置和链接配置在每项服务中是互斥的。

内联配置

可以通过使用mode的属性HostEndpointSettings来定义内联配置。 内联配置不支持自定义。

在下表中,mode 是一个表达为 String 的枚举。

mode GPA 行为 服务行为
Disabled GPA 没有对服务请求进行 eBPF 拦截。 请求直接转到服务。 不变。 该服务 要求 GPA 签署请求。
Audit GPA 截获对此服务的请求,并确定当前配置是否授权它们。 请求始终转发到服务,但会记录结果和调用方信息。 不变。 该服务 要求 GPA 签署请求。
Enforce GPA 截获对此服务的请求,并确定当前配置是否授权它们。 如果调用方获得授权,GPA 会签署请求以认可该请求。 如果调用方未获得授权,GPA 将使用状态代码 401403. 所有结果都记录在审核日志中。 GPA 必须认可并签署对服务的请求。 使用状态代码拒绝 401 未签名的请求。

重要

不能同时使用此属性和inVMAccessControlProfileReferenceId

在 WireServer Enforce 模式下,GPA 隐式要求进程以Administratorroot身份运行以访问 WireServer。 此要求相当于来宾内部的防火墙规则,即使 MSP 被禁用时也依然存在,但其实现方式更加安全。

链接的配置

inVMAccessControlProfiles 资源类型定义了一个可以与虚拟机或虚拟机规模集关联的每项服务配置。 这些配置支持完全自定义。 有关完整详细信息,请参阅 MSP 的高级配置

HostEndpointSettings 属性 类型 详细信息
inVMAccessControlProfileReferenceId String 要应用的配置的资源 ID。

此属性必须是完整的资源管理器 ID,该 ID 采用以下形式: /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/inVMAccessControlProfiles/{profile}/versions/{version}

重要

不能同时使用此属性和mode

完整示例

  • VM:https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachines/{virtualMachine-Name}?api-version=2024-03-01
  • 虚拟机规模集:https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSet-name}/virtualMachines/{instance-id}?api-version=2024-03-01

下面的示例使用 mode

{
  "name": "GPAWinVM",
  "location": "centraluseuap",
  "properties": {
    ...
    ...
    "securityProfile": {
      "proxyAgentSettings": {
        "enabled": true,
        "wireServer": {
          "mode": "Enforce"
        },
        "imds": {
          "mode": "Audit"
        }
      }
    },
  }
}

以下示例使用 inVMAccessControlProfileReferenceId:

{
  "name": "GPAWinVM",
  "location": "centraluseuap",
  "properties": {
    ...
    ...
    "securityProfile": {
      "proxyAgentSettings": {
        "enabled": true,
        "wireServer": {
          "inVMAccessControlProfileReferenceId": "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/inVMAccessControlProfiles/{profile}/versions/{version}"
        },
        "imds": {
          "inVMAccessControlProfileReferenceId": "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/inVMAccessControlProfiles/{profile}/versions/{version}"
        }
      }
    },
  }
}

审核日志

AuditEnforce模式中,审核日志生成在本地磁盘上。

OS 系列 审核日志位置
Linux /var/lib/azure-proxy-agent/ProxyAgent.Connection.log
Windows操作系统 C:\WindowsAzure\ProxyAgent\Logs\ProxyAgent.Connection.log

客户通常不知道其工作负荷中 WireServer 和实例元数据服务使用情况的全部程度。 您的 VM 使用情况是您创建的任何自定义集成与您运行的其他任何软件的实现细节的组合。 建议从更简单的配置开始,并随着时间推移而获得更多信息。 一般情况下,最好按以下顺序排列:

  1. Audit 模式下为 WireServer 和实例元数据服务启用 MSP。 此步骤使你能够确认兼容性并了解有关工作负荷的详细信息。 它还会生成有价值的数据来检测威胁参与者。
  2. 查看审核数据。 请密切关注任何已标记的请求。 这些请求可能是持续攻击或工作负荷不兼容的迹象。
  3. 修正任何问题。 在默认设置下,已标记的任何内容都是滥用元数据服务。 根据需要联系安全团队或相应的服务所有者。
  4. Audit 模式切换到 Enforce 模式。 已标记的请求被拒绝,以帮助保护您的任务负载。
  5. 试验 高级配置。 默认配置类似于 MSP 之前的安全规则,这些规则通常过于宽松。 为工作负荷定义自定义配置后,可以通过应用最低特权访问原则来进一步增强安全性。

放轻松,不需要严格按照完美的顺序来进行。 任何 级别的 MSP 启用都大大提高了安全性,有助于防范大多数实际攻击。