Управление списками ACL портов в VMM

Важно!

Поддержка этой версии Virtual Machine Manager (VMM) завершена. Рекомендуется выполнить обновление до VMM 2022.

В System Center Virtual Machine Manager (VMM) можно централизованно настраивать и администрировать списки управления доступом (ACL) портов Hyper-V. Списки управления доступом для портов можно настроить как для структуры, управляемой сетевым контроллером, так и для сетей, которые не управляются сетевым контроллером.

  • Список ACL портов — это набор правил, фильтрующих трафик на уровне портов уровня 2. Список ACL портов в VMM фильтрует доступ к определенному объекту VMM. Сетевой объект может иметь всего один подключенный список ACL для портов.
  • ACL содержит правила и может быть присоединен к любому количеству сетевых объектов. Вы можете создать список ACL без правил и добавить их позднее. Каждое правило ACL соответствует только одному ACL портов.
  • Если список ACL содержит несколько правил, они применяются на основе приоритета. После того, как одно из правил удовлетворяет критериям и применяется, никакие другие правила не обрабатываются.
  • Список ACL портов для глобальных параметров применяется ко всем виртуальным сетевым адаптерам виртуальной машины в инфраструктуре. Отдельный тип объекта для глобальных параметров отсутствует. Вместо этого список ACL портов для глобальных параметров подключается к серверу управления VMM.
  • Параметры ACL портов предоставляются только с помощью командлетов PowerShell в VMM и не могут быть настроены в консоли VMM.
  • Списки ACL портов можно применить к следующим объектам:
    • Виртуальные подсети и адаптеры в развертывании сетевого контроллера.
    • Виртуальные подсети, сетевые адаптеры, сети виртуальных машин и сервер управления VMM в сетях, которые не управляются сетевым контроллером.

Перед началом работы

  • Чтобы применить список ACL к объектам, управляемым сетевым контроллером, используйте флаг ManagedByNC, присвоив ему значение True. Если для него не задано значение True, список управления доступом применяется только к сетевым объектам, которые не управляются сетевым контроллером.
  • Типы списков ACL не взаимозаменяемы. Невозможно применить список управления доступом с managedByNC , для которого задано значение false, к объектам, управляемым сетевым контроллером, и наоборот.
  • Основное различие между этими двумя типами списков управления доступом заключается в том, что необходимо исправить каждый сетевой адаптер после применения ACL к объектам, которые не управляются сетевым контроллером.
  • Также существует различие в диапазонах приоритета:
    • Списки ACL портов Hyper-V (не управляются сетевым контроллером) : 1–65 535
    • Списки ACL портов SDN (управляются сетевым контроллером) : 1–64 500
  • Чтобы подключить список ACL портов к глобальным параметрам, требуются полные права администратора VMM . Чтобы подключить ACL к объектам VMM (сетям виртуальных машин, подсетям, виртуальным сетевым адаптерам), необходимо быть администратором VMM, администратором клиента или пользователем самообслуживания.

Неподдерживаемые сценарии

Ниже приведен список неподдерживаемых сценариев.

  • Управление отдельными правилами для одного экземпляра, если список ACL совместно используется несколькими экземплярами. Управление всеми правилами осуществляется централизованно в родительских ACL; правила применяются по месту подключения ACL.
  • Присоедините к сущности несколько ACL.
  • Применение списков ACL портов к виртуальным сетевым адаптерам в родительском разделе Hyper-V (операционная система управления).
  • Создание правил для списка ACL портов в VMM, которые включают протоколы уровня IP-адресов (кроме TCP или UDP). Другие протоколы по-прежнему поддерживаются в Hyper-V.
  • Примените списки управления доступом для портов к логическим сетям, сетевым сайтам (определениям логических сетей), виртуальным локальным сетям подсети и другим сетевым объектам VMM, которые не указаны как поддерживаемые.

Этапы развертывания

В интерфейсе VMM PowerShell можно сделать следующее:

  1. Определите списки ACL портов и правила.

    • Правила применяются к портам виртуальных коммутаторов на серверах Hyper-V в качестве расширенных списков ACL портов (VMNetworkAdapterExtendedAcl). Это означает, что они могут применяться только к узлам под управлением Windows Server 2012 R2 или более поздней версии, так как VMM не создает списки ACL портов Hyper-V прежних версий (VMNetworkAdapterAcl).
    • Правила применяются к портам виртуальных коммутаторов на серверах Hyper-V в качестве расширенных списков ACL портов (VMNetworkAdapterExtendedAcl). Это означает, что они могут применяться только к узлам, работающим Windows Server 2016 или более поздней версии, так как VMM не создает устаревшие списки управления доступом для портов Hyper-V (VMNetworkAdapterAcl) для более ранних версий.
    • Все правила ACL портов, определяемые в VMM, поддерживают отслеживание состояния для TCP. Вы не можете создавать правила ACL без отслеживания состояния TCP.
  2. Подключите список ACL портов к глобальным параметрам. При этом список применяется ко всем виртуальным сетевым адаптерам виртуальной машины.

  3. Присоедините ACL портов к сетям виртуальных машин, подсетям виртуальных машин или виртуальным сетевым адаптерам виртуальных машин.

  4. Управляйте правилами списка ACL портов.

Создание списков ACL портов

  1. Откройте PowerShell в VMM.

  2. Создайте ACL портов с помощью командлета New-SCPortACL.

    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 Выполняет задание с именем или ролью пользователя.
Владелец Указывает владельца объекта VMM в виде допустимой учетной записи пользователя домена. Пример: Contoso\PattiFuller или PattiFuller@Contoso
ProTipID Идентификатор объекта ProTip, вызвавшего действие.
RunAsychronously Указывает, выполняется ли задание асинхронно.
UserRole Указывает роль пользователя.
VMMServer Указывает сервер VMM.
CommonParameters Дополнительные сведения

Примеры

Создайте список ACL портов для объектов, управляемых сетевым контроллером, с именем "DemoACLManagedByNC":

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

Создайте список ACL портов для объектов, не управляемых сетевым контроллером, с именем "DemPortACL":

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

Определение правил для списка ACL портов

  1. Откройте PowerShell в VMM.

  2. Создайте одно или несколько правил с помощью командлета New-SCPortACLRule.

    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 ("Inbound" (Входящий) или "Outbound" (Исходящий))
Действие Указывает, разрешает ли ACL трафик или блокирует ("Allow" (Разрешить) или "Deny" (Запретить))
LocalAddressPrefix Указывает исходный IP-адрес или исходную подсеть, используемые для идентификации трафика, который нужно отфильтровать.
LocalPortRange Указывает исходный диапазон портов, используемый для идентификации трафика.
RemoteAddressPrefix Указывает конечный IP-адрес или конечную подсеть, используемые для идентификации трафика, который нужно отфильтровать.
RemotePortRange Указывает конечный диапазон портов, используемый для идентификации трафика.
Протокол Указывает протокол, для которого применяется правило.
Приоритет Укажите приоритет правила в ACL порта. Правила применяются по порядку. Задайте приоритет между 1 и 65 535, где наименьшее значение означает наибольший приоритет. Правила списков ACL портов для объектов, которыми управляет сетевой контроллер, должны иметь значение не меньше 100. Сетевой контроллер не поддерживает приоритет ниже 100.

Примеры

Создайте список ACL портов и сохраните объект в $portACL:

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

Создайте правило 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 портов можно подключить к глобальным параметрам, сетям виртуальных машин, подсетям виртуальных машин, а также виртуальным сетевым адаптерам. Список ACL портов, подключенный к глобальным параметрам, по умолчанию применяется ко всем виртуальным сетевым адаптерам виртуальной машины.

  1. Откройте PowerShell в VMM.

  2. Подключите список ACL портов с помощью командлета Set-SCVMMServer.

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

Параметры

Параметр Сведения
Сервер VMM Имя сервера VMM, к которому применяется ACL портов.
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 к сети виртуальной машины при создании:

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

Подключите список ACL к существующей сети виртуальной машины:

Set-SCVMNetwork -PortACL $acl`

Подключите список ACL к подсети виртуальной машины при создании:

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

Подключите список ACL к существующей подсети виртуальной машины:

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

Извлечение и просмотр списков ACL портов и правил

  1. Откройте PowerShell в VMM.

  2. Запустите командлет Get-SCPortACL, чтобы извлечь и просмотреть 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 Извлечение списков ACL на определенном сервере VMM.
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. Откройте PowerShell в VMM.

  2. Запустите командлет Set-SCPortACL, чтобы изменить 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, вызвавшего действие.
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"

Первый командлет извлекает ACL, а второй задает для него описание.

Удалите ACL:

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

Первый командлет извлекает ACL, а второй удаляет его.