共用方式為


在 VMM 中管理埠 ACL

在 System Center Virtual Machine Manager(VMM)中,您可以集中設定和管理 Hyper-V 連接埠存取控制清單(ACL)。 埠 ACL 可以針對網路控制卡管理的網狀架構,以及網路控制站未管理的網路設定。

  • 埠 ACL 是一組規則,可篩選第 2 層埠層級的流量。 VMM 中的埠 ACL 會篩選特定 VMM 物件的存取權。 網路物件不能附加一個以上的埠 ACL。
  • ACL 包含規則,並可附加至任意數目的網路物件。 您可以建立不含規則的 ACL,然後稍後新增規則。 每個 ACL 規則只會對應到一個埠 ACL。
  • 如果 ACL 有多個規則,則會根據優先順序套用它們。 在規則符合準則並套用之後,不會處理任何其他規則。
  • 全域設定埠 ACL 會套用至基礎結構中的所有 VM 虛擬網路適配器。 全域設定沒有個別的物件類型。 相反地,全域設定埠 ACL 會附加至 VMM 管理伺服器。
  • 埠 ACL 設定只會透過 VMM 中的 PowerShell Cmdlet 公開,而且無法在 VMM 控制台中設定。
  • 連接埠 ACL 可以套用至:
    • 網路控制站部署中的虛擬子網和適配卡。
    • 網路控制站未管理的虛擬子網、網路適配器、VM 網路和 VMM 管理伺服器。

在您開始使用 Intune 之前

  • 若要將 ACL 套用至網路控制站所管理的物件,請使用 ManagedByNC 旗標,並將它設定為 True。 如果未設定為 True,ACL 只會套用至網路控制站未管理的網路物件。
  • ACL 類型無法互換。 您無法將ManagedByNC設定為 false 的 ACL 套用至網路控制站所管理的物件,反之亦然。
  • 這兩種 ACL 的主要差異在於,在網路控制站未管理的物件上套用 ACL 之後,您必須補救每個網路適配器。
  • 優先順序範圍也有差異:
    • Hyper-V 連接埠 ACL (未由網路控制站管理):1 - 65535
    • SDN 埠 ACL (由網路控制站管理):1 - 64500
  • 您需要完整的 VMM 系統管理員許可權,才能將埠 ACL 附加至全域設定。 若要將 ACL 附加至 VMM 物件(VM 網路、子網、虛擬網路適配器),您必須是 VMM 系統管理員或租使用者系統管理員或自助使用者。

不支援的情節

以下是不支援的案例清單:

  • 當 ACL 與多個實例共用時,管理單一實例的個別規則。 所有規則都會集中管理在其父 ACL 內,並套用至附加 ACL 的位置。
  • 將多個 ACL 附加至實體。
  • 將埠 ACL 套用至 Hyper-V 父分割區中的虛擬網路適配器(管理作業系統)。
  • 在 VMM 中建立埠 ACL 規則,其中包含IP層級通訊協定(TCP 或 UDP 以外的通訊協定)。 Hyper-V 仍以原生方式支援其他通訊協定。
  • 將埠 ACL 套用至邏輯網路、網站(邏輯網路定義)、子網 VLAN,以及其他不支援的 VMM 網路物件。

部署步驟

使用 VMM PowerShell 介面來執行下列動作:

  1. 定義埠 ACL 和規則。

    • 這些規則會套用至 Hyper-V 伺服器上的虛擬交換器埠作為擴充埠 ACL(VMNetworkAdapterExtendedAcl)。 這表示它們只能套用至執行 Windows Server 2012 R2 或更新版本的主機,因為 VMM 不會為舊版建立舊版 Hyper-V 連接埠 ACL (VMNetworkAdapterAcl)。
    • 這些規則會套用至 Hyper-V 伺服器上的虛擬交換器埠作為「擴充埠 ACL」(VMNetworkAdapterExtendedAcl)。 這表示它們只能套用至執行 Windows Server 2016 或更新版本的主機,因為 VMM 不會針對舊版建立舊版 Hyper-V 連接埠 ACL (VMNetworkAdapterAcl)。
    • 這些規則會套用至 Hyper-V 伺服器上的虛擬交換器埠作為 擴充埠 ACL (VMNetworkAdapterExtendedAcl)。 這表示它們只能套用至執行 Windows Server 2019 或更新版本的主機,因為 VMM 不會針對舊版建立舊版 Hyper-V 連接埠 ACL (VMNetworkAdapterAcl)。
    • VMM 中定義的所有埠 ACL 規則都適用於 TCP。 您無法建立無狀態 TCP ACL 規則。
  2. 將埠 ACL 附加至全域設定。 這會將 ACL 套用至所有 VM 虛擬網路配接器。

  3. 將埠 ACL 連結至 VM 網路、VM 子網或 VM 虛擬網路配接器。

  4. 管理埠 ACL 規則。

建立埠 ACL

  1. 在 VMM 中開啟 PowerShell。

  2. 使用 New-SCPortACL Cmdlet 建立埠 ACL

    New-SCPortACL [-Name] <String> [-Description <String>] [-JobVariable <String>] [-ManagedByNC] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-Owner <String>] [-PROTipID <Guid>] [-RunAsynchronously] [-UserRole <UserRole>] [-VMMServer <ServerConnection>] [<CommonParameters>]
    

參數

參數 詳細資料
名字;描述 埠 ACL 名稱和描述
JobVariable 儲存作業進度
ManagedByNC 指定物件是否由網路控制站管理
OnBehalfOfUser/OnBehalfOfRole 使用使用者名稱或角色執行作業
擁有者 以有效網域用戶帳戶的形式指定 VMM 對象的擁有者。 範例:Contoso\PattiFuller 或 PattiFuller@Contoso
ProTipID 觸發動作的 ProTip 識別碼
RunAsychronously 指出作業是否以異步方式執行
UserRole 指定使用者角色
VMMServer 指定 VMM 伺服器
CommonParameters 深入了解

範例

建立網路控制站 “DemoACLManagedByNC” 所管理物件的埠 ACL:

PS: C:\> New-SCPortACL -Name "DemoACLManagedByNC" -Description "PortACL Example Managed by NC" -ManagedByN

為網路控制站 「DemPortACL」 未管理的物件建立埠 ACL:

PS: C:\> New-SCPortACL -Name "DemoPortACL" -Description "Port ACL Example Non Managed by NC"

定義埠 ACL 的埠 ACL 規則

  1. 在 VMM 中開啟 PowerShell。

  2. 使用 New-SCPortACLRule Cmdlet 建立一或多個規則。

    New-SCPortACLrule -PortACL <PortACL> -Name <string> [-Description <string>] -Type <Inbound | Outbound> -Action <Allow | Deny> -Priority <uint16> -Protocol <Tcp | Udp | Any> [-LocalAddressPrefix <string: IPAddress | IPSubnet>] [-LocalPortRange <string:X|X-Y|Any>] [-RemoteAddressPrefix <string: IPAddress | IPSubnet>] [-RemotePortRange <string:X|X-Y|Any>]
    

參數

參數 詳細資料
名稱、描述 規則名稱和描述
類型 指定套用 ACL 的流量方向(輸入或輸出)
動作 指定 ACL 是否允許或封鎖流量(允許或拒絕 )
LocalAddressPrefix 指定用來識別必須篩選之流量的來源IP位址或子網
LocalPortRange 指定用來識別流量的來源埠範圍
RemoteAddressPrefix 指定用來識別流量以進行篩選的目的地 IP 位址或子網
RemotePortRange 指定用來識別流量的目的地埠範圍。
通訊協定 指定套用規則的通訊協定
優先順序 在埠 ACL 中指定規則的優先順序。 規則會依順序套用。 設定介於 1 到 65535 之間的優先順序,其中最低數位具有最高的優先順序。 網路控制站所管理物件的埠 ACL 規則必須設定為等於或大於 100。 網路控制卡不支持低於100的優先順序。

範例

建立埠 ACL,並將物件儲存在$portACL:

PS: C:\> $portACL = New-SCPortACL -Name "RDP ACL" -Description "Acl on RDP access"

建立連接埠 ACL 規則以允許從遠端子網進行 RDP 存取:

PS: C:\> New-SCPortACLRule -Name "AllowRDPAccess" -PortACL $portACL -Description "Allow RDP Rule from a subnet" -Action Allow -Type Inbound -Priority 110 -Protocol Tcp -LocalPortRange 3389 -RemoteAddressPrefix 10.184.20.0/24

變更 ACL 規則的優先順序:

PS: C:\> $portACLRule = Get-SCPortACLRule -Name "AllowRDPAccess" `` <br/><br/> `` PS: C:\> Set-SCPortACLRule -PortACLRule $portACLRule -Priority 220

第一個命令會取得埠 ACL 規則 「AllowRDPAccess」。。 第二個命令會將規則的優先順序變更為 220。

變更規則目的地位址範圍和通訊協定的連接埠 ACL 規則:

PS: C:\> $portACLRule = Get-SCPortACLRule -Name "AllowRDPAccess" `` <br/><br/> `` PS: C:\> Set-SCPortACLRule -PortACLRule $portACLRule -RemoteAddressPrefix 172.185.21.0/24 -Protocol Udp

第一個命令會擷取規則 AllowRDPAccess。 第二個將通訊協議變更為 UDP,並將目的地設定為子網 172.185.21.0/24。

附加和中斷連結埠 ACL

埠 ACL 可以連結至全域設定、VM 網路、VM 子網和虛擬網路配接器。 連結至全域設定的埠 ACL 預設會套用至所有 VM 虛擬網路配接器。

  1. 在 VMM 中開啟 PowerShell。

  2. 使用 Set-SCVMMServer Cmdlet 附加入口網站 ACL。

    Set-SCVMMServer –VMMServer <VMMServer> [-PortACL <NetworkAccessControlList> | -RemovePortACL ]
    

參數

參數 詳細資料
VMM 伺服器 套用埠 ACL 的 VMM 伺服器名稱
PortACL 選擇性地將指定的埠 ACL 附加至全域設定

範例

將 ACL 附加至全域設定:

Set-SCVMMServer -VMMServer "VMM.Contoso.Local" -PortACL $acl`` <br/><br/> ExampleL: `` Set-SCVMMServer -VMMServer "VMM.Contoso.Local" -PortACL $acl

將 ACL 與全域設定中斷連結:

Set-SCVMMServer -VMMServer "VMM.Contoso.Local" -RemovePortACL

在建立期間將 ACL 連結至 VM 網路:

New-SCVMNetwork [–PortACL <NetworkAccessControlList>] [rest of the parameters]

將 ACL 連結至現有的 VM 網路:

Set-SCVMNetwork -PortACL $acl`

在建立期間將 ACL 附加至 VM 子網:

New-SCVMSubnet [–PortACL <NetworkAccessControlList>] [rest of the parameters]

將 ACL 連結至現有的 VM 子網:

Set-SCVMSubnet [–PortACL <NetworkAccessControlList> | -RemovePortACL] [rest of the parameters]

擷取和檢視埠 ACL 和規則

  1. 在 VMM 中開啟 PowerShell。

  2. 執行 Get-SCPortACL Cmdlet 來擷取和檢視埠 ACL:

    Get-SCPortACL [[-Name] <String> ] [-ID <Guid> ] [-OnBehalfOfUser <String> ] [-OnBehalfOfUserRole <UserRole> ] [-VMMServer <ServerConnection> ] [ <CommonParameters>]
    
  3. 執行 Get-SCPortACLRule 來擷取和檢視規則:

    Get-SCPortACLRule [-Name <String> ] [-ID <Guid> ] [-OnBehalfOfUser <String> ] [-OnBehalfOfUserRole <UserRole> ] [-PortACL <PortACL> ] [-VMMServer <ServerConnection> ] [ <CommonParameters>]
    

參數

參數 詳細資料
無參數 擷取所有 ACL
名稱/標識元 依名稱或 GUID 擷取
OnBehalfOfUser/OnBehalfOfUserRole 使用用戶名稱或角色執行
VMMServer 擷取特定 VMM 伺服器上的 ACL
CommonParameters 深入了解

範例

擷取特定的 ACL:

    PS: C:> $portACL = Get-SCPortACL -Name "DemoPortACL"

取得特定 ACL 的規則:

    PS: C:> Get-SCPortACLRule -Name "AllowRDPAccess"

取得 ACL 的所有規則:

    PS: C:> Get-SCPortACLRule -PortACL $portACL

修改埠 ACL 和規則

  1. 在 VMM 中開啟 PowerShell。

  2. 執行 Set-SCPortACL Cmdlet 以修改埠 ACL:

    Set-SCPortACL [-PortACL] <PortACL> [[-Description] <String>] [-JobVariable <String>] [-Name <String>] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-PROTipID <Guid>] [-RunAsynchronously] [-VMMServer <ServerConnection>] [<CommonParameters>]
    
  3. 執行 Remove-SCPortACL 以移除 ACL:

    Remove-SCPortACL [-PortACL] <PortACL> [-Confirm] [-JobVariable <String>] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-PROTipID <Guid>] [-RunAsynchronously] [-VMMServer <ServerConnection>] [-WhatIf] [<CommonParameters>]
    

    參數

參數 詳細資料
名稱/描述 埠 ACL 的名稱和描述
JobVariable 儲存作業進度
OnBehalfOfUser/OnBehalfOfUserRole 使用用戶名稱或角色執行
ProTipID 觸發動作的 ProTip 識別碼
RunAsynchronously 指出作業是否以異步方式執行
確認 在執行作業之前提示
Whatif 顯示在沒有執行命令的情況下會發生什麼事

範例

設定 ACL 描述:

PS: C:> $portACL = Get-SCPortACL -Name "DemoPortACL"
PS: C:> Set-SCPortACL -PortACL $portACL -Description "Port ACL Example Non Managed by Network Controller"

第一個 Cmdlet 會擷取 ACL;第二個會設定 ACL 的描述。

移除 ACL:

PS: C:> $portACL = Get-SCPortACL -Name "DemoPortACL"
PS: C:> Remove-SCPortACL -PortACL $portACL

第一個 Cmdlet 會擷取 ACL;第二個會移除它。