什么是使用 Azure Policy 和 PowerShell 的 Windows SSH 状态控制(专用预览版) ?

通过 SSH 状态控制,可以使用熟悉的 Azure Policy 和计算机配置的工作流来:

  • 确保符合行业或组织中的标准
  • 减少远程管理功能的攻击面
  • 确保整个车队的一致设置,以提高安全性和工作效率

SSH 状态控制还提供详细 原因 ,描述如何确定符合性或不符合性。 通过这些原因,可以更轻松地采取措施或完全记录合规性。

显示符合 SSH 检查列表的屏幕截图

SSH 状态控制分析并强制实施大约 20 个 SSH 服务器 (sshd) 参数。 还可以自定义某些参数以满足你的环境。 例如,可以自定义允许 SSH 访问的用户和组,以及端口号等。

可以在审核或审核和配置模式下部署 SSH 状态控制,以审核设备群、跟踪结果,然后自动修正车队以正确的 sshd 标准。

个人预览版限制

重要

SSH 状态控制以个人预览版提供-旨在触发你和Microsoft之间的对话。

  • 预览版旨在与 独立开发/测试 计算机一起使用,其中任何问题(包括无意中将自己从 SSH 访问中锁定)都不会产生重要后果。
  • 预览版涉及导入策略定义,而不是从 Azure Policy 内置列表中选择它。
  • 为此,我们将同时提供审核和审核和配置工作流。
  • 支持的 Windows SKU 目前 是 Windows Server 2025

Azure Policy 入门

此示例侧重于在 Azure Policy 中快速开始。 它简化了假设,并且不探索可能的所有内容。 例如,它使用 PolicyDefinition 中的默认 SSH 设置,而不是自定义允许的用户和组等参数。 有关 SSH 状态控制(包括设置和行为)的更全面的信息有望在近期内完成。 请注意,PowerShell 部分位于本文末尾部分。

小提示

本文中使用以下心理模型和术语。

显示 Azure 订阅将包含 PolicyDefinition 的示意图,该 PolicyDefinition 通过 PolicyAssignment 链接到包含计算机的 ResourceGroup

  • PolicyDefinition :SSH 状态控制定义和元数据,如 Azure Policy 服务中所示。
  • PolicyAssignment :将 SSH 状态控制 PolicyDefinition 链接到应应用该策略的范围,例如资源组。
  • 计算机 :能够由 Azure Policy 和计算机配置(即来宾配置)管理的终结点。 换句话说,已启用 Arc 的计算机或 Azure VM。

答: 先决条件

  1. 有权创建资源组、VM(或 Arc 计算机)、策略定义和策略分配的 Azure 帐户。
  2. 对于其他先决条件,请选择首选体验:
  1. 使用 Web 浏览器登录到 Azure 门户 或本地等效项。

B. 创建资源组

  1. 创建资源组。 在后续步骤中,这将用于限定策略的范围,并包含新的测试计算机。

创建资源组的屏幕截图

C. 创建 PolicyDefinition

注释

此额外步骤(创建而不是仅选择 PolicyDefinition)在个人预览版期间是必需的。

  1. 导航到 “Azure Policy 概述”页。 例如,可以使用 URI: https://portal.azure.com/#view/Microsoft_Azure_Policy/PolicyMenuBlade/~/Overview
  2. 导航到 “定义 ”视图。
  3. 单击“ + 策略定义 ”按钮创建新的 PolicyDefinition,输入以下内容作为输入。
    1. 定义位置:选择 PolicyDefinition 将所在的 Azure 订阅。
    2. 名称:[预览] 审核 SSH 状况控制策略 [预览] 配置 SSH 状态控制策略
    3. 类别:使用“现有”,然后选择“来宾配置”
    4. 策略规则:删除预先存在的 JSON,并从预览版审核 SSH 状态控制策略定义预览版审核和配置 SSH 状态控制策略定义粘贴 PolicyDefinition JSON
  4. 单击 保存

说明上述步骤的屏幕截图

D. 使用 PolicyAssignment 将 PolicyDefinition 应用到资源组

谨慎

此策略修改作用域内计算机上的 sshd 配置。 这些说明将它分配给最初为空的资源组,稍后将在其中创建测试计算机。 如果你选择分配到任何更广泛的范围,请小心。

  1. 导航到 策略 | 列出所有可用策略定义的定义页。
  2. 选择前面创建的 [预览] SSH 状态控制策略 PolicyDefinition
  3. 单击分配
  4. 对于 “范围” ,请选择资源组,稍后将在其中创建新的测试计算机。
  5. 转到“ 参数 ”选项卡。
    1. 包括 Arc 连接的计算机选择“true”,除非专门想要排除 Arc 连接的计算机。
    2. 注意:如果要自定义 SSH 设置(如允许的组),请取消选中 “仅显示参数...” 框以显示所有可用参数。 如果你确实选择指定允许或拒绝的用户或组,请注意,你会输入空格分隔的字符串,例如 userA userB
  6. 转到 “修正 ”选项卡。
    1. 注意:尽管此演示侧重于新计算机,但在希望 PolicyAssignment 应用于现有计算机的其他方案中,可以选中“ 创建修正任务”框。
    2. 选择“创建系统分配托管标识”和所选的标识位置。
  7. 继续 审阅 + 创建
    1. 选择 “创建 ”以完成 PolicyAssignment。

显示上述 PolicyAssignment 步骤示例的屏幕截图

E. 创建新计算机

尽管新的 PolicyAssignments 可以应用于现有计算机,但此过程最长可能需要 24 小时。 对于本快速入门,我们将重点评估新计算机。 在此示例中,我们将创建一个 Azure VM,但如果愿意,可以创建已启用 Arc 的计算机。

  1. 导航到 Azure 虚拟机 体验。
  2. 创建新的 VM,确保以下属性:
    1. 订阅和资源组应与 PolicyAssignment 的范围匹配。
    2. 映像应为“Windows Server 2025”。
    3. VM 体系结构应为 x64。
    4. 其他属性(如 VM 名称、大小等)可以是你喜欢的任何属性。
  3. 等待 VM 创建完成,然后单击“ 转到资源 ”以访问计算机概述页
  4. 在左侧导航中,选择 “标识 ”并确保计算机具有系统托管标识
  5. 在左侧导航中,依次选择 “扩展 + 应用程序”、“ + 添加”
  6. 选择适用于 Windows 扩展的 Azure 计算机配置扩展,然后选择“下一步
  7. 选择 “审阅 + 创建”,然后选择 “创建”

显示上述步骤示例的屏幕截图

F. 在继续操作之前休息一下

当涉及新的 PolicyDefinitions、PolicyAssignments 和计算机时,可能需要几分钟时间才能达到稳定状态。 请考虑 等待至少 30 分钟 ,然后再继续下一步。

G. 观察符合性结果

以下步骤使你能够在不同高度查看符合性汇总:

  • PolicyAssignment 的符合性
    • 符合计算机和不符合的计算机数
    • 最高海拔高度,特别适用于大型机队
  • 按计算机符合性
    • 每台计算机具有“是/否”的计算机列表
  • 通过设置特定计算机的符合性
    • 最深入的详细信息级别,如本文顶部的屏幕截图。

小提示

首次遇到策略时,新计算机可能会被视为不合规。 策略中的默认 SSH 设置比默认情况下配置的 OS 映像更严格。 另外 20 分钟左右后,应发现计算机符合要求,这要归功于 SSH 状况控制内置的修正逻辑。

  1. 导航到 策略 |符合性 页。
  2. 选择[预览] SSH 状态控制策略。
  3. 观察报告符合/不合规的计算机数
  4. “资源符合性 ”下,可以看到各个计算机的状态
  5. 若要向下钻取到特定计算机的设置详细信息,请执行以下作:
    1. 单击计算机旁边的 ... ,然后选择 “查看资源 ”以访问计算机的“概述”页
    2. 在“作”下的左侧导航中,单击 “配置管理 ”(不在“设置”下配置)
    3. 单击 SecureShell
    4. 生成的页面显示配置中的每个设置,其中包含有关符合性的详细信息以及确定符合性的方式。

显示前面的步骤的屏幕截图

本地体验入门 (PowerShell)

先决条件

若要应用基线,请验证基线是否已应用、删除基线或查看 PowerShell 中 OSConfig 的详细符合性信息,请使用以下选项卡上的命令。

配置

若要应用 SSH 方案,请运行以下命令:

Set-OSConfigDesiredConfiguration -Scenario SSH -Default

验证

若要验证 SSH 方案是否已正确应用,请运行以下命令:

Get-OSConfigDesiredConfiguration -Scenario SSH

检查合规性

若要获取指定方案的所需配置详细信息,请使用以下命令。 输出以表格式显示,其中包括配置项的名称、其符合性状态以及不符合的原因。

若要检查 SSH scenairo 的符合性详细信息,请运行以下命令:

Get-OSConfigDesiredConfiguration -Scenario SSH | ft Name, @{ Name = "Status"; Expression={$_.Compliance.Status} }, @{ Name = "Reason"; Expression={$_.Compliance.Reason} } -AutoSize -Wrap

自定义配置

若要在 SSH 方案中自定义设置,可以使用参数“-Name”和“-Value”配置设置:

Set-OSConfigDesiredConfiguration -Scenario SSH -Name Banner -Value "Custom Banner"

后续步骤

请联系Microsoft团队提供反馈、功能请求等。