Azure DNS: как создать и защитить его, используя инфраструктуру как код
Неважно, насколько защищена внутренняя работа вашего интернет-приложения или уровни безопасности, которые вы разработали для защиты своей инфраструктуры. Да, вы можете использовать многофакторную аутентификацию для подключения к Microsoft Azure. Но если DNS, на который полагаются ваши клиенты для доступа к вашему приложению, исходит от регистратора DNS, который защищает его с помощью всего одного пароля, у вас могут возникнуть проблемы. В этой статье мы рассмотрим процесс перемещения вашего общедоступного домена от регистратора DNS в Microsoft Azure и используем инфраструктуру как код (IAC), чтобы добавить дополнительный уровень безопасности ко всему процессу.
Покрытие основ
Первый шаг — создать группу ресурсов для хранения всех наших будущих зон DNS. Мы можем иметь столько ресурсов, сколько захотим, в одной группе ресурсов. В этой статье мы будем использовать одну группу ресурсов.
Если вы хотите управлять зоной в приложении, вы можете разместить зону группы ресурсов вашего приложения.
Вот как это сделать. Войдите на портал Azure, нажмите или найдите группы ресурсов, нажмите «Добавить», выберите подписку, определите имя и нажмите «Проверить+Создать».
Этот шаг необходимо выполнить после создания зоны. Убедитесь, что вы скопировали серверы имен из своей зоны, потому что они меняются между зонами. Это серверы имен, отвечающие за текущую зону, и нам нужно настроить это на наших сайтах регистраторов DNS.
Как только у нас будет создана зона DNS в Azure (подождите, мы немного пройдемся по созданию), нам нужно перейти туда, где зарегистрирована наша зона DNS, и изменить сервер имен, чтобы использовать значения, которые мы собрали из Azure. Портал (именные серверы).
И последний совет: убедитесь, что вы очень надежно защищаете доступ к своему регистратору DNS, используя надежный пароль, используя многофакторную аутентификацию и отслеживая любые изменения в ваших общедоступных зонах DNS.
Управление DNS с помощью инфраструктуры как кода
Первый шаг — понять, что нам нужно предоставить нашему шаблону ARM для создания и обслуживания нашего общедоступного DNS. Мы можем заняться управлением доменом несколькими способами. Наиболее распространенным является создание набора файлов (шаблона и параметров) для каждого домена, которым мы хотим управлять. Второй вариант — сохранить все домены в одном файле.
В этой статье мы сосредоточимся на организации и наборе файлов для каждого домена. На диаграмме ниже показано, как мы собираемся настроить его для нашего домена pconsolidated.ca.
Вторая часть, которую нам нужно определить, — это какая информация нам нужна для управления нашей доменной зоной. Настроим FQDN доменной зоны в параметре domainZone и создадим по два массива для каждого типа DNS-записей (начнем с CNAME-записей).
Оба массива (по одному на тип записи) должны быть выровнены. Соглашение об именах, которое мы будем использовать, — это запись-<тип>-имя и запись-<тип>-адрес. Нам нужно добавить значения в правильном порядке в обоих местах.
Например: добавьте www в массив Record-A-name и общедоступный IP-адрес (что-то вроде 200.248.0.0) в Record-a-Address. Когда у нас есть кратные, нам нужно убедиться, что они следуют одному и тому же порядку в обоих массивах.
Результатом в области параметров будет что-то похожее на этот код, указанный ниже.
После создания шаблона нам нужно создать файл параметров. Мы создадим его с именем pconsolidate.ca.json и предоставим значения. Ожидаемые результаты в конце этой статьи — создание следующих записей DNS:
- pconsolidated.ca указывает на app1.azurefd.net (CNAME)
- pconsolidated.ca указывает на app2.azurefd.net (CNAME)
- pconsolidated.ca указывает на 10.10.10.10 (запись)
- pconsolidated.ca указывает на 20.20.20.20 (запись)
Процесс создания зоны в шаблоне ARM занимает всего несколько строк. Единственное, что нам нужно, это полное доменное имя (FQDN) домена, который мы планируем создать. Весь код для создания зоны показан на изображении ниже.
Процесс создания записей (A или CNAMES) аналогичен, но для них требуется отдельный фрагмент кода. В приведенном ниже примере мы создаем все наши записи A. В этом коде есть три важных ключевых элемента, которые нам нужно понять.
В пункте 1 мы определяем имя. Мы получим полное доменное имя домена и имя записи, которую мы добавим. Поскольку это первая итерация (подождите, мы доберемся до нее через два абзаца), первой записью, основанной на нашем файле параметров, будет www.pconsolidated.ca.
Значение этой новой записи A определено в пункте 2. Поскольку это все еще первая итерация, мы получим первое значение массива адресов записи A, которое равно 10.10.10.10.
Пункт 3 — мозг операции. Это функция копирования в шаблоне ARM. По сути, мы будем повторять код в скобках (самая первая и последняя скобки) для того количества элементов, которое у нас есть в нашем массиве (в нашем случае две итерации).
Защита Azure DNS с помощью IAC: еще многое предстоит сделать
В этой статье мы рассмотрели базовую структуру нашего шаблона ARM для создания общедоступных зон DNS в Microsoft Azure и шаги, необходимые для настройки регистратора DNS для использования Azure DNS. В нашей следующей статье этой серии мы проверим наш код, создав конвейер выпуска, и проверим некоторые функции безопасности, которые мы можем внедрить. Мы также рассмотрим процесс создания нескольких зон в той же структуре.