VMM에서 포트 ACL 관리

중요

이 버전의 VMM(Virtual Machine Manager)은 지원이 종료되었습니다. VMM 2022로 업그레이드하는 것이 좋습니다.

System Center - VMM(Virtual Machine Manager)에서는 중앙에서 Hyper-V 포트 ACL(액세스 제어 목록)을 구성하고 관리할 수 있습니다. 네트워크 컨트롤러 관리 패브릭과 네트워크 컨트롤러에서 관리되지 않는 네트워크에 대해 포트 ACL을 구성할 수 있습니다.

  • 포트 ACL은 계층 2 포트 수준에서 트래픽을 필터링하는 규칙 집합입니다. VMM의 포트 ACL은 특정 VMM 개체에 대한 액세스를 필터링합니다. 네트워크 개체에는 1개 이하의 포트 ACL만 연결할 수 있습니다.
  • ACL은 규칙을 포함하며 임의의 수의 네트워크 개체에 연결할 수 있습니다. 규칙 없이 ACL을 만든 다음 나중에 규칙을 추가할 수 있습니다. 각 ACL 규칙은 하나의 포트 ACL에만 해당합니다.
  • ACL에 여러 규칙이 있는 경우 우선 순위에 따라 적용됩니다. 규칙이 조건과 일치하고 적용된 후 다른 규칙은 처리되지 않습니다.
  • 전역 설정 포트 ACL은 인프라의 모든 VM 가상 네트워크 어댑터에 적용됩니다. 전역 설정에 대한 별도의 개체 형식은 없습니다. 대신 전역 설정 포트 ACL은 VMM 관리 서버에 연결됩니다.
  • 포트 ACL 설정은 VMM의 PowerShell cmdlet을 통해서만 노출되며 VMM 콘솔에서 구성할 수 없습니다.
  • 포트 ACL은 다음에 적용될 수 있습니다.
    • 네트워크 컨트롤러 배포의 가상 서브넷 및 어댑터
    • 네트워크 컨트롤러에서 관리되지 않는 네트워크의 가상 서브넷, 네트워크 어댑터, VM 네트워크 및 VMM 관리 서버

시작하기 전에

  • 네트워크 컨트롤러에서 관리되는 개체에 ACL을 적용하려면 ManagedByNC 플래그를 사용하고 이 플래그를 True로 설정합니다. True로 설정되지 않은 경우 ACL은 네트워크 컨트롤러에서 관리되지 않는 네트워크 개체에만 적용됩니다.
  • ACL 종류는 서로 바꿔서 사용할 수 없습니다. ManagedByNCfalse로 설정된 ACL은 네트워크 컨트롤러에서 관리하는 개체에 적용할 수 없으며 그 반대의 경우도 마찬가지입니다.
  • 이러한 두 종류의 ACL 간의 주요 차이점은 네트워크 컨트롤러에서 관리되지 않는 개체에 ACL을 적용한 후 각 네트워크 어댑터를 수정해야 한다는 것입니다.
  • 우선 순위 범위에도 차이점이 있습니다.
    • Hyper-V 포트 ACL(네트워크 컨트롤러에서 관리되지 않음) : 1 - 65535
    • SDN 포트 ACL(네트워크 컨트롤러에서 관리됨) : 1 - 64500
  • 포트 ACL을 전역 설정에 연결하려면 모든 VMM 관리자 권한이 필요합니다. VMM 개체(VM 네트워크, 서브넷, 가상 네트워크 어댑터)에 ACL을 연결하려면 VMM 관리자 또는 테넌트 관리자 또는 셀프 서비스 사용자여야 합니다.

지원되지 않는 시나리오

지원되지 않는 시나리오 목록은 다음과 같습니다.

  • ACL이 여러 인스턴스와 공유되는 경우 단일 인스턴스의 개별 규칙을 관리합니다. 모든 규칙은 부모 ACL 내에서 중앙에서 관리되고 해당 ACL이 연결된 모든 위치에 적용됩니다.
  • 한 엔티티에 둘 이상의 ACL을 연결합니다.
  • 포트 ACL을 Hyper-V 부모 파티션(관리 운영 체제)에 있는 가상 네트워크 어댑터에 적용합니다.
  • VMM에서 IP 수준 프로토콜(TCP 또는 UDP 이외)을 포함하는 포트 ACL 규칙을 만듭니다. 다른 프로토콜은 여전히 기본적으로 Hyper-V에서 지원됩니다.
  • 지원되는 것으로 언급되지 않은 논리 네트워크, 네트워크 사이트(논리 네트워크 정의), 서브넷 VLAN 및 기타 VMM 네트워킹 개체에 포트 ACL을 적용합니다.

배포 단계

VMM PowerShell 인터페이스를 사용하면 다음 작업을 수행할 수 있습니다.

  1. 포트 ACL 및 규칙을 정의합니다.

    • 규칙은 Hyper-V 서버의 가상 스위치 포트에 "확장 포트 ACL"(VMNetworkAdapterExtendedACL)로 적용됩니다. 즉, VMM은 이전 버전에 대한 레거시 Hyper-V 포트 ACL(VMNetworkAdapterACL)을 만들지 않으므로 Windows Server 2012 R2 이상을 실행하는 호스트에만 규칙을 적용할 수 있습니다.
    • 규칙은 Hyper-V 서버의 가상 스위치 포트에 "확장 포트 ACL"(VMNetworkAdapterExtendedACL)로 적용됩니다. 즉, VMM은 이전 버전에 대한 레거시 Hyper-V 포트 ACL(VMNetworkAdapterAcl)을 만들지 않으므로 Windows Server 2016 이상을 실행하는 호스트에만 적용할 수 있습니다.
    • VMM에 정의된 모든 포트 ACL 규칙은 TCP 연결 상태를 추적할 수 있습니다. 상태 비저장 TCP ACL 규칙을 만들 수 없습니다.
  2. 전역 설정에 포트 ACL을 연결합니다. 모든 VM 가상 네트워크 어댑터에 ACL이 적용됩니다.

  3. VM 네트워크, VM 서브넷 또는 VM 가상 네트워크 어댑터에 포트 ACL을 연결합니다.

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

매개 변수

매개 변수 세부 정보
Name, Description 포트 ACL 이름 및 설명입니다.
JobVariable 작업 진행률을 저장합니다.
ManagedByNC 개체가 네트워크 컨트롤러에서 관리되는지를 지정합니다.
OnBehalfOfUser/OnBehalfOfRole 사용자 이름 또는 역할을 사용하여 작업을 실행합니다.
Owner 유효한 도메인 사용자 계정의 형태로 VMM 개체의 소유자를 지정합니다. 예: Contoso\PattiFuller or PattiFuller@Contoso
ProTipID 작업을 트리거한 ProTip의 ID입니다.
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>]
    

매개 변수

매개 변수 세부 정보
Name, Description 규칙 이름 및 설명입니다.
Type 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"

원격 서브넷에서의 RDP 액세스를 허용하는 포트 ACL 규칙을 만듭니다.

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

만드는 동안 VM 네트워크에 ACL을 연결합니다.

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

기존 VM 네트워크에 ACL을 연결합니다.

Set-SCVMNetwork -PortACL $acl`

만드는 동안 VM 서브넷에 ACL을 연결합니다.

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

기존 VM 서브넷에 ACL을 연결합니다.

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을 검색합니다.
Name/ID 이름 또는 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>]
    

    매개 변수

매개 변수 세부 정보
Name/Description 포트 ACL의 이름 및 설명입니다.
JobVariable 작업 진행률을 저장합니다.
OnBehalfOfUser/OnBehalfOfUserRole 사용자 이름 또는 역할을 사용하여 실행합니다.
ProTipID 작업을 트리거한 ProTip의 ID입니다.
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을 검색하고, 두 번째 cmdlet은 ACL에 대한 설명을 설정합니다.

ACL을 제거합니다.

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

첫 번째 cmdlet은 ACL을 검색하고, 두 번째 cmdlet은 ACL을 제거합니다.