在 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 介面來執行下列動作:
定義埠 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 規則。
將埠 ACL 附加至全域設定。 這會將 ACL 套用至所有 VM 虛擬網路配接器。
將埠 ACL 連結至 VM 網路、VM 子網或 VM 虛擬網路配接器。
管理埠 ACL 規則。
建立埠 ACL
在 VMM 中開啟 PowerShell。
使用 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 規則
在 VMM 中開啟 PowerShell。
使用 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 虛擬網路配接器。
在 VMM 中開啟 PowerShell。
使用 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 和規則
在 VMM 中開啟 PowerShell。
執行 Get-SCPortACL Cmdlet 來擷取和檢視埠 ACL:
Get-SCPortACL [[-Name] <String> ] [-ID <Guid> ] [-OnBehalfOfUser <String> ] [-OnBehalfOfUserRole <UserRole> ] [-VMMServer <ServerConnection> ] [ <CommonParameters>]
執行 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 和規則
在 VMM 中開啟 PowerShell。
執行 Set-SCPortACL Cmdlet 以修改埠 ACL:
Set-SCPortACL [-PortACL] <PortACL> [[-Description] <String>] [-JobVariable <String>] [-Name <String>] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-PROTipID <Guid>] [-RunAsynchronously] [-VMMServer <ServerConnection>] [<CommonParameters>]
執行 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;第二個會移除它。