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

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

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

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

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

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

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

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

Шаги развертывания

Используйте интерфейс PowerShell VMM, чтобы выполнить следующие действия:

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

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

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

  4. Управление правилами 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>]
    

Параметры

Параметр Сведения
Имя; Описание Имя и описание списка контроля доступа порта
JobVariable Сохраняет ход выполнения задания
ManagedByNC Указывает, управляются ли объекты сетевым контроллером
ДействиеОтИмениПользователя/ДействиеОтИмениРоли Выполнение задания с именем пользователя или ролью
Владелец Указывает владельца объекта VMM в виде допустимой учетной записи пользователя домена. Пример: Contoso\PattiFuller или PattiFuller@Contoso
ProTipID Идентификатор ProTip, который активировал действие
ВыполнитьАсинхронно Указывает, выполняется ли задание асинхронно
Роль пользователя Указывает роль пользователя
VMMServer Указывает сервер VMM
ОбщиеПараметры Подробнее

Примеры

Создайте 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 для 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>]
    

Параметры

Параметр Сведения
Имя, описание Имя и описание правила
Тип Указывает направление трафика, для которого применяется ACL (входящий или исходящий трафик)
Действие Указывает, разрешает ли ACL или блокирует трафик (разрешить или запретить)
Префикс локального адреса Указывает исходный IP-адрес или подсеть, которая используется для идентификации трафика, который должен быть отфильтрован.
LocalPortRange Указывает диапазон исходного порта, используемый для идентификации трафика.
ПрефиксУдалённогоАдреса Указывает ЦЕЛЕВОй 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 порта можно применить к глобальным параметрам, сетям виртуальных машин, подсетям виртуальных машин и адаптерам виртуальной сети. 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>]
    

Параметры

Параметр Сведения
Нет параметров Извлекает все списки управления доступом
Имя или идентификатор Получение по имени или GUID
От имени пользователя/Роль пользователя Запуск с именем пользователя или ролью
VMMServer Получение списков контроля доступа на сервере VMM
ОбщиеПараметры Подробнее

Примеры

Получение определенного ACL:

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

Получение правил для определенного ACL:

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

Список всех правил для ACL.

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

Изменение списков управления доступом портов и правил

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

    Параметры

Параметр Сведения
Имя и описание Имя и описание ACL порта
JobVariable Сохраняет ход выполнения задания
От имени пользователя/Роль пользователя Запуск с именем пользователя или ролью
ProTipID Идентификатор ProTip, который активировал действие
ВыполнитьАсинхронно Указывает, выполняется ли задание асинхронно
Подтвердить Запросы перед запуском задачи
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.

Удалите ACL:

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

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