Использование PowerShell для создания NSG Azure

Опубликовано: 18 Марта, 2023

Введение

Microsoft Azure быстро становится предпочтительной платформой для развертывания виртуальных машин в облаке. Но ранние версии предложений Azure «инфраструктура как услуга» (IaaS) были несколько неуклюжими с точки зрения конфигурации, особенно в области контроля доступа. В результате Microsoft представила лучший способ настройки безопасного доступа к виртуальным машинам Azure. Этот новый подход называется группами безопасности сети (NSG), и хотя группы NSG существуют уже некоторое время, они все еще не очень хорошо понятны, особенно клиентам, которые все еще используют «классические» виртуальные машины Azure.

Эта статья призвана исправить это непонимание относительно групп безопасности сети, и для достижения этой цели я попросил Джорджа Уоллеса, эксперта Microsoft, рассказать нам, что такое группы безопасности сети и как их можно создать. Джордж — консультант Microsoft, специализирующийся на облачных технологиях. Он работал как над операционной, так и над инженерной частью технологий, включая, помимо прочего, System Center и Azure. Джордж имеет опыт разработки, специализирующийся на.Net и JavaScript. Джордж регулярно выступал на внутренних конференциях Microsoft. В его блоге вы можете найти другие сообщения на самые разные темы, такие как Cloud, System Center и Azure. Давайте теперь послушаем Джорджа…

Почему группы безопасности сети?

Еще в ноябре 2014 года Microsoft объявила о доступности групп безопасности сети. В своей повседневной работе я до сих пор встречаю много людей, которые не знают о группах безопасности сети или не используют их. До групп безопасности сети все правила управления доступом (ACL) определялись на самой виртуальной машине. Группы безопасности сети предоставили способ сегментации внутри виртуальной сети и контроля трафика, входящего и исходящего из виртуальных машин, а также из подсетей. Это очень важно, когда речь идет о многоуровневых приложениях.

Пример NSG

Вы можете увидеть общую идею на рисунке 1 ниже. В этом примере конечный пользователь имеет доступ через Интернет к подсети DMZ. Эта подсеть будет содержать ваши интерфейсные веб-приложения, к которым подключаются конечные пользователи. Данные в этой подсети будут фильтроваться в NSG, скорее всего, вы разрешите трафик http и https в эту подсеть, но не разрешите другие порты, в которых нет необходимости. Оттуда системы в подсети DMZ могут взаимодействовать с системами подсети приложений, это ваши серверы приложений, на которых размещаются ваши бизнес-процессы и логика, а также приложения, которые взаимодействуют напрямую с базой данных. Наконец, системы в подсети приложений могут взаимодействовать с системами в подсети данных, например, это будет порт 1433 для связи с серверной частью SQL. На этой диаграмме мы показываем, что существует заблокированный трафик между подсетью DMZ и подсетью данных, что позволяет разделить различные компоненты приложения. Это также гарантирует, что конечные пользователи не смогут напрямую обращаться к системам в подсети данных.

Рисунок 1: Пример NSG

Компоненты ГЯП

Правила, определенные в NSG, состоят из нескольких следующих компонентов:

  • IP-адрес источника: это один IP-адрес или диапазон подсети IP-адресов в нотации CIDR, с которых будет разрешен или запрещен трафик.
  • Исходный порт: один или несколько портов от источника, которые будут разрешены или запрещены.
  • IP-адрес назначения: это один IP-адрес или диапазон подсети IP-адресов в нотации CIDR, для которых будет разрешен или запрещен трафик.
  • Порт назначения: один или несколько портов к месту назначения, которые будут разрешены или запрещены.
  • Протокол: протокол, который будет разрешен или запрещен (например, TCP или UDP).
  • Приоритет: это порядок, в котором будет применяться правило, аналогично объектам групповой политики, если вы знакомы с ними.

Эти компоненты вместе с направлением трафика и доступом будут определены во всех правилах, настроенных в группе безопасности сети.

Следует отметить, что NSG привязаны к региону, поэтому, если у вас есть ресурсы в нескольких регионах, вы должны создать несколько NSG.

Создание группы безопасности сети

Итак, теперь, когда вы немного знаете о группах безопасности сети, давайте создадим их!

Первое, что мы должны сделать, это убедиться, что у нас есть последние версии командлетов Azure PowerShell, которые можно загрузить с https://azure.microsoft.com/en-us/downloads/. На момент написания этой статьи версия должна быть 1.0.4.

Следуя этим инструкциям, следует помнить и о том, что я решил использовать Azure Resource Manager (ARM) для развертывания своих ресурсов. Это новый формат, который заменит старые командлеты управления службами. Новые командлеты ARM обозначаются в командлете «RM». (т. е. Add-AzureRMAccount).

После того, как модуль был загружен, пришло время начать творить магию. Выполните приведенные ниже команды PowerShell в сценарии или PowerShell ISE. Вы должны заменить имя подписки своим собственным именем подписки. Этот код PowerShell запустит экран входа в систему и позволит вам войти в систему. Следует иметь в виду, что это специфично для общедоступной Azure, поэтому, если вы используете Azure для государственных организаций, вам придется добавить среду самостоятельно (не рассматривается в этой статье).

Теперь, когда вы находитесь в PowerShell и вошли в свою подписку, мы можем продолжить, первое, что нам нужно сделать, это создать группу ресурсов. Дайте группе ресурсов имя и выберите местоположение. Это местоположение, как упоминалось ранее, важно, поскольку создаваемая нами группа безопасности сети должна будет находиться в том же регионе.

Далее мы создадим виртуальную сеть. Чтобы ваша среда Azure оставалась чистой, мы создадим новую виртуальную сеть в нашей новой группе ресурсов, чтобы ее можно было легко удалить, как только вы закончите. Определите свои подсети, в этом случае моя виртуальная сеть имеет только две подсети. Вторая команда, которую делает этот фрагмент кода, — это создание виртуальной сети с подсетями, определенными в конфигурациях подсети.

Теперь у нас есть наша виртуальная сеть, определенная с двумя разными подсетями, поэтому мы можем начать работать над правилами группы безопасности сети. Мы создадим два правила: одно для http-трафика и одно для https-трафика. Правила работают для отдельных портов или диапазонов портов, отсюда и причина двух правил.

Теперь, когда у нас есть конфигурации, созданные для двух правил, мы можем создать NSG с двумя правилами безопасности, определенными ранее, с помощью кода ниже:

Создание NSG — это всего лишь один шаг, который мы также должны применить к подсети. Приведенный ниже код захватывает виртуальную сеть, которую мы создали ранее, и применяет группу безопасности сети к виртуальной сети, в частности к подсети Subnet1:

Изменения в виртуальной сети, которые мы создали на предыдущем шаге, просто сделали изменения в автономном режиме, нам не нужно обновлять виртуальную сеть с помощью следующей команды:

И это все! Теперь любая виртуальная машина, которую вы поместите в Subnet1, получит правила, которые мы определили выше, и вы можете добавить дополнительные правила и применить их позже. Имейте в виду, что если вы определяете конечные точки на своей виртуальной машине, правила NSG переопределяют их, например, если вы открываете порт 80 на конечной точке на виртуальной машине и применяете NSG к виртуальной машине или к подсети, в которой находится виртуальная машина, и нет разрешающего правила для 80 трафик не попадет на виртуальную машину.

Изучение результата

Теперь, когда мы создали ресурсы, давайте быстро взглянем на нашу группу ресурсов на новом портале Azure. На рисунке 2 вы можете увидеть группу ресурсов с NSG.

Рисунок 2: Группа ресурсов с NSG

А затем, если мы заглянем в нашу NSG и посмотрим на входящие правила, мы увидим правила, которые мы создали здесь, на рис. 3:

Рисунок 3: Созданные нами правила

Когда вы закончите, вы можете легко удалить все, что мы создали, выполнив следующую команду. Это одна из лучших частей развертывания ресурсов с помощью диспетчера ресурсов — простота удаления и добавления ресурсов.

Дополнительные ресурсы

Дополнительные сведения о группах безопасности сети Azure см. в следующих ресурсах:

  • Защита виртуальной сети Azure с помощью групп безопасности сети с Нараяном Аннамалаем (канал 9)
  • Группы безопасности сети (блог Microsoft Azure)
  • Что такое группа безопасности сети (NSG)? (документация Microsoft Azure)