Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文介绍已启用 Azure Arc 的服务器的 VM 扩展基础知识,并详细说明如何自定义扩展设置。
扩展基础知识
已启用 Azure Arc 的服务器的虚拟机(VM)扩展 是可选的加载项,可启用其他功能,例如监视、修补程序管理和脚本执行。 扩展由 Azure 发布,并从 Azure 市场中选择第三方,并存储在 Azure 托管存储帐户中。 在发布过程中,所有扩展都会经过恶意软件扫描。 已启用 Azure Arc 的服务器支持的扩展与可用于 Azure VM 的扩展相同,可确保在作环境中保持一致性。
扩展会在安装或升级时直接从 Azure 存储(*.blob.core.chinacloudapi.cn
)下载,除非您配置了专用终结点。 存储帐户会定期更改,无法提前预测。 当使用专用终结点时,扩展将通过 Azure Arc 服务的区域 URL 进行代理。
经过数字签名的目录文件将与扩展包分开下载,用于在扩展管理器打开或执行扩展包之前验证每个扩展的完整性。 如果下载的扩展名的 ZIP 文件与目录文件中的内容不匹配,扩展作将中止。
扩展可以采用设置来自定义或配置安装,例如将监视代理连接到其云服务的代理 URL 或 API 密钥。 扩展设置分为两个类别:常规设置和受保护的设置。 受保护的设置不会保留在 Azure 中,并在本地计算机上进行静态加密。
所有扩展操作都源自 Azure,通过 API 调用、CLI、PowerShell 或 Azure 门户操作。 此设计可确保在 Azure Monitor 活动日志中记录任何在服务器上安装、更新或升级扩展的操作。 Azure Connected Machine 代理确实允许在本地删除扩展以进行故障排除和清理。 但是,如果在本地删除了该扩展,并且服务仍希望计算机具有该扩展,则在下次扩展管理器与 Azure 同步时重新安装该扩展。
脚本执行
扩展管理器可用于在使用自定义脚本扩展或运行命令的计算机上运行脚本。 默认情况下,这些脚本在扩展管理器的用户上下文(Windows 上的本地系统或 Linux 上的根目录)中运行,这意味着这些脚本对计算机的访问权限不受限制。 如果不打算使用这些功能,可以使用 允许列表或阻止列表阻止这些功能。 例如,除非计划使用自定义脚本扩展执行远程代码,否则应禁用其使用,因为攻击者可以使用它来远程执行部署恶意代码的命令。
本地代理安全控制
可以选择限制可在服务器上安装的扩展功能,并禁用来宾配置功能。 在将服务器连接到 Azure 以实现单个目的(例如收集事件日志)时,这些控件非常有用,无需允许在服务器上使用其他管理功能。
这些安全控制只能通过在服务器本身上运行命令来配置,并且无法从 Azure 修改这些控制措施。 使用 Azure Arc 启用远程管理方案时,此方法会保留服务器管理员的意图,但也意味着以后更难更改这些选项。 这些控制措施适用于敏感服务器,例如 Active Directory 域控制器、处理付款数据的服务器,以及受严格更改控制措施约束的服务器)。 在大多数其他情况下,无需修改这些设置。
允许列表和阻止列表
Azure Connected Machine 代理支持允许列表和阻止列表,以限制可在计算机上安装哪些扩展。 允许列表是排他性的,这意味着只能安装列表中包含的特定扩展。 阻止列表是排他性的,这意味着可以安装除这些扩展之外的任何扩展。 允许列表优先于阻止列表,因为它们本质上会阻止将来推出的任何新扩展。
允许列表和阻止列表是根据每个服务器在本地配置的。 这可以确保没有任何人(甚至包括 Azure 中具有所有者或全局管理员权限的用户)可以通过尝试安装未经授权的扩展来替代安全规则。 如果有人尝试安装未经授权的扩展,扩展管理器将拒绝安装它,并将扩展安装报告标记为 Azure 失败。
可以在安装代理后随时配置允许列表和阻止列表,包括在代理连接到 Azure 之前。
如果代理上未配置允许列表或阻止列表,则允许所有扩展。
最安全的选项是显式允许你希望安装的扩展。 将自动阻止不在允许列表中的任何扩展。 例如,若要将 Azure Connected Machine 代理配置为仅允许适用于 Linux 的 Azure Monitor 代理,请在每台服务器上运行以下命令:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
例如,此命令阻止具有运行任意脚本的功能的扩展:
azcmagent config set extensions.blocklist "Microsoft.Cplat.Core/RunCommandHandlerWindows, Microsoft.Cplat.Core/RunCommandHandlerLinux,Microsoft.Compute/CustomScriptExtension,Microsoft.Azure.Extensions/CustomScript,Microsoft.Azure.Automation.HybridWorker/HybridWorkerForWindows,Microsoft.Azure.Automation/HybridWorkerForLinux,Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent, Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux"
使用其发布者和类型指定扩展,用正斜杠 /
分隔。 请参阅文档中 最常见的扩展 的详细信息。
可以在 门户、 Azure PowerShell 或 Azure CLI 中列出服务器上已安装的 VM 扩展。
该表描述了针对配置了允许列表或阻止列表的代理的扩展操作行为。
操作 | 在允许列表中 | 在阻止列表中 | 同时在允许列表和阻止列表中 | 不在任一列表中,但配置了允许列表 |
---|---|---|---|---|
安装扩展 | 允许 | 已阻止 | 已阻止 | 已阻止 |
更新(重新配置)扩展 | 允许 | 已阻止 | 已阻止 | 已阻止 |
升级扩展 | 允许 | 已阻止 | 已阻止 | 已阻止 |
删除扩展 | 允许 | 允许 | 允许 | 允许 |
重要
如果在配置允许列表或阻止列表之前已在服务器上安装扩展,则不会删除该扩展。 你负责从 Azure 中删除扩展,以完全将其从计算机中删除。 始终接受删除请求以适应这种情况。 删除后,允许列表和阻止列表将确定是否允许将来的安装尝试。
允许列表值 Allow/None
指示扩展管理器运行,但不允许安装任何扩展。 使用 Azure Arc 传递 Windows Server 2012 扩展安全更新(ESU)而不打算使用任何其他扩展时,建议使用此值。
azcmagent config set extensions.allowlist "Allow/None"
Azure Policy
限制可安装的扩展的另一个选项是使用 Azure Policy。 策略具有在云中可配置的优势,因此,如果需要更改已批准的扩展列表,则不需要对每个单独的服务器进行更改。 但是,任何有权限修改策略分配的人都可以替代或去除此保护。 如果选择使用 Azure Policy 限制扩展,请确保查看组织中哪些帐户有权编辑策略分配,并已准备好适当的更改控制措施。
代理监视模式
默认情况下,Connected Machine 代理以 完整模式运行,该模式允许安装和使用所有扩展(除非受允许列表、阻止列表或 Azure Policy 限制)。 为监视和安全方案配置本地安全控制的一种简单方法是为 Connected Machine 代理启用 监视模式 。
当代理处于监视模式时,只能部署与监视和安全性相关的扩展,例如 Azure Monitor 代理和 Microsoft Defender for Cloud。 代理会阻止任何可能更改系统配置或运行任意脚本的扩展,并禁用来宾配置策略代理程序。
当新的扩展可用时,Azure 会更新监视模式允许列表。 可以通过运行 azcmagent config list
来查看允许扩展的当前列表。
若要启用监视模式,请运行以下命令:
azcmagent config set config.mode monitor
可以使用以下命令检查代理的当前模式和允许的扩展:
azcmagent config list
在监视模式下,不能修改扩展允许列表或阻止列表。 如果需要更改任一列表,请将代理更改回完整模式,并指定自己的允许列表和阻止列表,而不是使用监视模式。
若要将代理更改回完整模式,请运行以下命令:
azcmagent config set config.mode full
锁定计算机最佳做法
使用减少的功能集配置 Azure Connected Machine 代理时,请务必考虑某人可用于删除这些限制并实施适当控制的机制。 能够在服务器上以管理员或 root 用户身份运行命令的任何人都可以更改 Azure Connected Machine 代理配置。 扩展和来宾配置策略在服务器上的特权上下文中执行,因此,可能无法更改代理配置。 如果你应用本地代理安全控制来锁定代理,Azure 建议采用以下最佳做法,以确保只有本地服务器管理员能够更新代理配置:
- 尽可能对扩展使用允许列表而不是阻止列表。
- 除非出于特定目的需要自定义脚本扩展,否则不允许使用自定义脚本扩展。
- 禁用来宾配置,以防止使用可能会更改代理配置的自定义来宾配置策略。
监视和安全方案的示例配置
通常使用 Azure Arc 通过 Azure Monitor 和 Microsoft Sentinel 监视服务器,并使用 Microsoft Defender for Cloud 保护这些服务器。 本部分包含有关如何锁定代理以仅支持监视和安全方案的示例。
仅限 Azure Monitor 代理
在 Windows 服务器上,在提升的命令控制台中运行以下命令:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorWindowsAgent"
azcmagent config set guestconfiguration.enabled false
在 Linux 服务器上运行以下命令:
sudo azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
sudo azcmagent config set guestconfiguration.enabled false
监视和安全性
Microsoft Defender for Cloud 在服务器上部署扩展,以识别服务器上易受攻击的软件,并启用 Microsoft Defender for Endpoint(如果已配置)。 Microsoft Defender for Cloud 还使用来宾配置来实现其合规性功能。 由于自定义来宾配置分配可用于撤消代理限制,您应仔细评估是否需要合规性功能,以及因此是否需要在计算机上启用来宾配置。
在 Windows 服务器上,在提升的命令控制台中运行以下命令:
azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Qualys/WindowsAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Windows,Microsoft.Azure.AzureDefenderForSQL/AdvancedThreatProtection.Windows"
azcmagent config set guestconfiguration.enabled true
在 Linux 服务器上运行以下命令:
sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Qualys/LinuxAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Linux"
sudo azcmagent config set guestconfiguration.enabled true
禁用扩展管理器
如果不需要将扩展与 Azure Arc 配合使用,也可以完全禁用扩展管理器。 可以使用命令禁用扩展管理器 azcmagent config set
(在每台计算机上本地运行):
azcmagent config set extensions.enabled false
禁用扩展管理器不会删除服务器上已安装的任何扩展。 托管在其自己的 Windows 或 Linux 服务(如旧 Log Analytics 代理)中的扩展可能会继续运行,即使扩展管理器已禁用也是如此。 扩展管理器本身托管的其他扩展(例如 Azure Monitor 代理)在禁用扩展管理器时不会运行。 若要确保服务器上不继续运行任何扩展,请在禁用扩展管理器之前 删除所有扩展 。