Dela via


Hantera port-ACL:er i VMM

Viktigt

Den här versionen av Virtual Machine Manager (VMM) har nått slutet av supporten. Vi rekommenderar att du uppgraderar till VMM 2022.

I System Center – Virtual Machine Manager (VMM) kan du centralt konfigurera och hantera åtkomstkontrollistor för Hyper-V-portar (ACL:er). Port-ACL:er kan konfigureras för både en nätverksstyrenhetshanterad infrastrukturresurs och för nätverk som inte hanteras av nätverksstyrenheten.

  • En port-ACL är en uppsättning regler som filtrerar trafik på layer 2-portnivån. En port-ACL i VMM filtrerar åtkomsten till ett visst VMM-objekt. Ett nätverksobjekt kan ha mer än en kopplad port-ACL.
  • En ACL innehåller regler och kan kopplas till valfritt antal nätverksobjekt. Du kan skapa en ACL utan regler och sedan lägga till regler vid ett senare tillfälle. Varje ACL-regel motsvarar endast en port-ACL.
  • Om en ACL har flera regler tillämpas de baserat på prioritet. När en regel matchar villkoren och tillämpas bearbetas inte andra regler.
  • En port-ACL med globala inställningar tillämpas på alla virtuella datorers virtuella nätverkskort i en infrastruktur. Det finns ingen separat objekttyp för globala inställningar. I stället är de globala inställningarnas port-ACL kopplad till VMM-hanteringsservern.
  • Port-ACL-inställningar exponeras endast via PowerShell-cmdletar i VMM och kan inte konfigureras i VMM-konsolen.
  • Port-ACL:er kan tillämpas på:
    • Virtuella undernät och nätverkskort i en distribution av en nätverksstyrenhet.
    • Virtuella undernät, nätverkskort, nätverk för virtuella datorer och VMM-hanteringsservern i nätverk som inte hanteras av nätverksstyrenheten.

Innan du börjar

  • För att tillämpa en ACL på objekt som inte hanteras av nätverksstyrenheten använder du flaggan ManagedByNC och ger den värdet True. Om den inte är inställd på True gäller ACL endast för nätverksobjekt som inte hanteras av nätverksstyrenheten.
  • ACL-typer är inte utbytbara. Du kan inte använda en ACL med ManagedByNC inställt på false för objekt som hanteras av nätverksstyrenheten och vice versa.
  • Den största skillnaden mellan dessa två typer av ACL:er är att du måste åtgärda varje nätverkskort när du har tillämpat ACL på objekt som inte hanteras av nätverksstyrenheten.
  • Det är skillnad på olika prioritetsnivåer:
    • Hyper-V-port-ACL:er (hanteras inte av nätverksstyrenheten): 1-65535
    • SDN-port-ACL:er (hanteras av nätverksstyrenheten): 1-64500
  • Du måste ha fullständiga VMM-administratörsbehörigheter för att koppla en port-ACL till globala inställningar. Om du vill koppla ACL till VMM-objekt (VM-nätverk, undernät, virtuella nätverkskort) måste du vara VMM-administratör eller klientadministratör eller självbetjäningsanvändare.

Scenarier som inte stöds

Här är en lista över scenarier som inte stöds:

  • Hantera enskilda regler för en enskild instans när åtkomstkontrollistan delas med flera instanser. Alla regler hanteras centralt inom deras överordnade ACL:er och tillämpas när ACL:en kopplas.
  • Koppla fler än en åtkomstkontrollista till en entitet.
  • Tillämpa port-ACL:er för virtuella nätverkskort i överordnade Hyper-V-partitioner (hanterande operativsystem).
  • Skapa regler för port-ACLer i VMM som innehåller protokoll på IP-nivå (andra än TCP eller UDP). Andra protokoll stöds fortfarande internt av Hyper-V.
  • Använd port-ACL:er för logiska nätverk, nätverksplatser (definitioner för logiska nätverk), undernäts-VLAN och andra VMM-nätverksobjekt som inte nämns som stöd.

Distributionssteg

Använd VMM PowerShell-gränssnittet för att göra följande:

  1. Definiera portens ACL:er och regler.

    • Reglerna tillämpas på virtuella växelportar på Hyper-V-servrar som "utökade port-ACL:er" (VMNetworkAdapterExtendedAcl). Det här innebär att de endast kan tillämpas på värdar som kör Windows Server 2012 R2 eller senare eftersom VMM inte skapar ACL:er för Hyper-V-portar (VMNetworkAdapterAcl) för tidigare versioner.
    • Reglerna tillämpas på virtuella växelportar på Hyper-V-servrar som "utökade port-ACL:er" (VMNetworkAdapterExtendedAcl). Det innebär att de endast kan tillämpas på värdar som kör Windows Server 2016 eller senare eftersom VMM inte skapar äldre Hyper-V-port-ACL:er (VMNetworkAdapterAcl) för tidigare versioner.
    • Alla ACL-portregler som definieras i VMM är tillståndskänsliga för TCP. Du kan inte skapa tillståndslösa TCP ACL-regler.
  2. Koppla en port-ACL till globala inställningar. ACL:en tillämpas på alla virtuella datorers virtuella nätverkskort.

  3. Koppla port-ACL:erna till VM-nätverk, VM-undernät eller virtuella nätverkskort.

  4. Hantera regler för port-ACL.

Skapa port-ACL:er

  1. Öppna PowerShell i VMM.

  2. Skapa en port-ACL med New-SCPortACL-cmdleten.

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

Parametrar

Parameter Information
Namn; beskrivning Namn och beskrivning för port-ACL
JobVariable Jobbförloppet lagras
ManagedByNC Anger om objekt hanteras av nätverksstyrenheten eller inte
OnBehalfOfUser/OnBehalfOfRole Kör jobb med användarnamn eller roll
Ägare Anger ägaren av ett VMM-objekt i form av ett giltigt domänanvändarkonto. Exempel: Contoso\PattiFuller eller PattiFuller@Contoso
ProTipID ID för ProTip som utlöste åtgärden
RunAsychronously Anger om jobbet körs asynkront eller inte
UserRole Anger användarroll
VMMServer Anger VMM-server
CommonParameters Läs mer

Exempel

Skapa en port-ACL för objekt som hanteras av nätverksstyrenheten "DemoACLManagedByNC":

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

Skapa en port-ACL för objekt som inte hanteras av nätverksstyrenheten "DemPortACL":

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

Definiera port-ACL-regler för en port-ACL

  1. Öppna PowerShell i VMM.

  2. Skapa en eller flera regler med New-SCPortACL-cmdleten.

    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>]
    

Parametrar

Parameter Information
Namn, beskrivning Regelnamn och beskrivning
Typ Anger riktningen på den trafik som ACL:en tillämpas på (inkommande eller utgående)
Åtgärd Anger om ACL:en tillåter eller blockerar trafik (tillåt eller neka)
LocalAddressPrefix Anger källans IP-adress eller undernät som används för att identifiera trafik som ska filtreras.
LocalPortRange Anger portintervallet för källan som används för att identifiera trafik.
RemoteAddressPrefix Anger målets IP-adress eller undernät som används för att identifiera trafik för filtrering.
RemotePortRange Anger målportintervallet som används för att identifiera trafik.
Protokoll Anger vilket protokoll som regeln tillämpas på.
Prioritet Ange prioriteten för regeln i port-ACL. Regler tillämpas enligt ordning. Ange prioritet mellan 1 och 65535 där det lägsta numret har högst prioritet. Port-ACL:er för objekt som hanteras av nätverksstyrenheten ska vara lika med eller större än 100. Nätverksstyrenheten har inte stöd för prioritet under 100.

Exempel

Skapa en port-ACL och lagra objektet i $portACL:

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

Skapa en regel för port-ACL:er och tillåt RDP-åtkomst från ett fjärranslutet undernät:

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

Ändra prioriteringen för en ACL-regel:

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

Det första kommandot hämtar regeln för port-ACL:er "AllowRDPAccess". Det andra kommandot ändrar regelns prioritet till 220.

Ändra regeln för port-ACL:en för adressintervallet som är målet och protokollet för en regel:

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

Det första kommandot hämtar regeln "AllowRDPAccess". Det andra ändrar protokollet till UDP och anger målet till undernät 172.185.21.0/24.

Koppla och koppla från port-ACL: er

En port-ACL kan kopplas till globala inställningar, virtuella datornätverk, undernät för virtuella datorer och virtuella nätverkskort. En port-ACL som är kopplad till globala inställningar, virtuella datornätverk, undernät för virtuella datorer och virtuella nätverkskort.

  1. Öppna PowerShell i VMM.

  2. Koppla en portal-ACL med Set-SCVMMServer-cmdleten.

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

Parametrar

Parameter Information
VMM-server Namnet på VMM-servern där port-ACL:en är tillämpad.
PortACL Kan lägga till den angivna port-ACL:en i de globala inställningarna.

Exempel

Koppla en ACL till globala inställningar:

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

Koppla från en ACL från globala inställningar:

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

Koppla en ACL till ett virtuellt datornätverk under skapandet:

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

Koppla en ACL till ett befintligt virtuellt datornätverk:

Set-SCVMNetwork -PortACL $acl`

Koppla en ACL till ett undernät för virtuella datorer under skapandet:

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

Koppla en ACL till ett befintligt undernät för virtuella datorer:

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

Hämta och se port-ACL:er och regler

  1. Öppna PowerShell i VMM.

  2. Kör Get-SCPortACL-cmdleten för att hämta och se en port-ACL:

    Get-SCPortACL [[-Name] <String> ] [-ID <Guid> ] [-OnBehalfOfUser <String> ] [-OnBehalfOfUserRole <UserRole> ] [-VMMServer <ServerConnection> ] [ <CommonParameters>]
    
  3. Kör Get-SCPortACLRule för att hämta och se en regel:

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

Parametrar

Parameter Information
Inga parametrar Hämtar alla ACL:er
Namn/ID Hämta efter namn eller GUID
OnBehalfOfUser/OnBehalfOfUserRole Kör med användarnamn eller roll
VMMServer Hämta ACL:er på en specifik VMM-server
CommonParameters Läs mer

Exempel

Hämta en specifik ACL:

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

Hämta regler för en specifik ACL:

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

Hämta alla regler för ACL:

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

Definiera port-ACL:er och regler

  1. Öppna PowerShell i VMM.

  2. Kör Set-SCPortACL-cmdleten för att modifiera en port-ACL:

    Set-SCPortACL [-PortACL] <PortACL> [[-Description] <String>] [-JobVariable <String>] [-Name <String>] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-PROTipID <Guid>] [-RunAsynchronously] [-VMMServer <ServerConnection>] [<CommonParameters>]
    
  3. Kör Remove-SCPortACL för att ta bort en ACL:

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

    Parametrar

Parameter Information
Namn/beskrivning Namn och beskrivning för port-ACL
JobVariable Jobbförloppet lagras
OnBehalfOfUser/OnBehalfOfUserRole Kör med användarnamn eller roll.
ProTipID ID för ProTip som utlöste åtgärden
RunAsynchronously Anger om jobbet körs asynkront eller inte.
Bekräfta Frågor innan du kör jobbet
WhatIf Visar vad som händer om du inte kör kommandot

Exempel

Ange en beskrivning för ACL:

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

Den första cmdlet:en hämtar ACL:en och den andra anger beskrivningen på den.

Ta bort en ACL:

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

Den första cmdlet:en hämtar ACL:en och den andra tar bort den.