在 Windows Server 上的 AKS 中限制对虚拟机的 SSH 访问

适用于:在 Windows Server 上运行的 AKS

本文介绍 AKS Arc 中的一项新安全功能,该功能限制对底层虚拟机 (VM) 的安全外壳协议 (SSH) 访问。 该功能限制仅对某些 IP 地址进行访问,并限制你可以通过 SSH 运行的命令集。

概述

目前,任何对 Windows Server 上的 AKS 具有管理员访问权限的人都可以通过任何计算机上的 SSH 访问 VM。 在某些情况下,你可能希望限制该访问,因为无限制访问会难以通过合规性检查。

注释

目前,此功能仅适用于新安装的 AKS Arc,不适用于升级。 只有新安装的 AKS Arc 才能传递受限的 IP 并限制通过 SSH 运行的命令。

启用 SSH 限制

若要启用 SSH 限制,请执行以下步骤:

  1. 使用 New-AksHciSSHConfiguration cmdlet 创建 SSH 配置,并设置想要允许 VM 访问的源 IP 地址或 CIDR:

    $ssh = New-AksHciSSHConfiguration -name sshConfig -cidr 172.16.0.0/24
    

    $ssh = New-AksHciSSHConfiguration -name sshConfig -ipAddresses 4.4.4.4,8.8.8.8
    

    或者,若要限制 SSH 访问,请执行以下操作:

    $ssh = New-AksHciSSHConfiguration -name sshConfig –restrictSSHCommands 
    

    注释

    如果未传递 SSH 密钥,则会重复使用管理群集 SSH 密钥。

  2. 通过运行 Set-AksHciConfig cmdlet 添加 SSH 配置,并传入你在上一步中创建的 SSH 配置:

    Set-AksHciConfig -ssh $ssh
    

验证:目标群集

创建群集后,你可以尝试通过 SSH 连接到其中一个 VM 来手动验证是否已添加 SSH 限制。 例如:

ssh -i (get-MocConfig).sshPrivateKey clouduser@<vm-ipaddress>

你可以在指定的 IP 地址/CIDR 列表内或 IP 地址列表外执行此步骤。 IP 地址/CIDR 范围内的 SSH 可以访问。 列表外的 SSH 尝试无法访问。

你还可以直接从 SSH 运行命令。 此命令会返回日期。 Sudo 命令不起作用:

ssh -i (get-mocconfig).sshPrivateKey clouduser@<ip> date 

验证:日志收集

此命令返回 VM 日志,例如 cloudinitlb 日志等。

Get-AksHciLogs –virtualMachineLogs

注意事项

  • 现在可以对工作负载群集进行单独的 SSH 配置。 工作负荷群集的配置使用 New-AksHciSSHConfiguration PowerShell cmdlet。
  • 此限制仅适用于 Linux。 Windows 节点没有此限制;你应该能够成功通过 SSH 连接。
  • 你只能在 AKS Arc 的安装阶段设置配置。
  • 如果你错误地配置了任何 SSH 设置,则必须重新安装。
  • 不支持升级。
  • 你可以添加可以限制 SSH 访问的 CIDR 或 IP 地址。
  • 你提供的 SSH 设置会重新用于所有目标群集。 可以对工作负荷群集进行单独的 SSH 配置。

后续步骤