Руководство. Создание доступа к частному сайту Функции Azure

В этом руководстве показано, как включить закрытый доступ к сайту с Функциями Azure. Используя закрытый доступ к сайту, можно потребовать, чтобы код функции запускался только из определенной виртуальной сети.

Закрытый доступ к сайту удобен в ситуациях, когда доступ к приложению-функции необходимо ограничить конкретной виртуальной сетью. Например, приложение-функция может быть применимо только для сотрудников определенной организации или служб, находящихся в заданной виртуальной сети (например, это может быть другая функция Azure, виртуальная машина Azure или кластер AKS).

Если приложению-функции требуется доступ к ресурсам Azure в виртуальной сети или подключение осуществляется через конечные точки службы, требуется интеграция виртуальной сети.

Из этого руководства вы узнаете, как настроить частный доступ к сайту для приложения-функции.

  • Создание виртуальной машины
  • Создание службы "Бастион Azure"
  • Создание приложения-функции Azure
  • Настройка конечной точки службы в виртуальной сети
  • Создание и развертывание функции Azure
  • Вызов функции изнутри и извне виртуальной сети

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Топология

На следующей схеме показана архитектура создаваемого решения.

High-level architecture diagram for private site access solution

Необходимые компоненты

Для работы с этим руководством важно понимать принципы назначения IP-адресов и определения подсети. Вы можете начать с этой статьи, в которой изложены основы назначения адресов и определения подсети. В Интернете доступно множество других статей и видеоматериалов по этой теме.

Войдите на портал Azure.

Войдите на портал Azure.

Создание виртуальной машины

Согласно данному руководству, первое, что необходимо сделать, — создать новую виртуальную машину в виртуальной сети. Виртуальная машина будет использоваться для доступа к функции после того, как она (из-за ограничения доступа) станет доступна только в виртуальной сети.

  1. Нажмите кнопку Создать ресурс.

  2. В поле поиска введите Windows Server и выберите Windows Server в результатах поиска.

  3. Выберите Windows Server 2019 Datacenter из списка вариантов Windows Server и нажмите кнопку Создать.

  4. На вкладке Основные сведения задайте параметры виртуальной машины, указанные в таблице под этим изображением.

    Basics tab for a new Windows VM

    Параметр Предлагаемое значение Description
    Подписка Ваша подписка Подписка, в рамках которой создан ресурс.
    Группа ресурсов myResourceGroup Выберите группу ресурсов, которая будет содержать ресурсы для работы с этим руководством. Использование одной и той же группы ресурсов упрощает задачу очистки ресурсов после завершения работы с этим руководством.
    Имя виртуальной машины myVM Имя виртуальной машины должно быть уникальным в группе ресурсов.
    Регион (США) Центрально-северная часть США Выберите регион, ближайший к вам или к месту расположения функций, к которым будет осуществляться доступ.
    Общедоступные входящие порты нет Выберите отсутствует, чтобы гарантировать отсутствие входящего подключения к виртуальной машине из Интернета. Удаленный доступ к виртуальной машине будет настроен с помощью службы "Бастион Azure".
  5. Перейдите на вкладку Сетевые подключения и выберите Создать, чтобы настроить новую виртуальную сеть.

    Screenshot that shows the

  6. В разделе Создание виртуальной сети задайте параметры, указанные в таблице под изображением.

    Create a new virtual network for the new VM

    Параметр Предлагаемое значение Описание:
    Имя myResourceGroup-vnet Вы можете использовать имя по умолчанию, созданное для виртуальной сети.
    Диапазон адресов 10.10.0.0/16 Используйте один диапазон адресов для виртуальной сети.
    Имя подсети Учебник Имя подсети.
    Диапазон адресов (подсеть) 10.10.1.0/24 От размера подсети зависит, сколько интерфейсов можно в нее добавить. Эта подсеть используется виртуальной машиной. Подсеть /24 предоставляет 254 адреса узлов.
  7. Нажмите кнопку ОК, чтобы создать виртуальную сеть.

  8. Вернитесь на вкладку Сетевые подключения убедитесь, что для параметра Общедоступный IP-адрес выбрано значение отсутствует.

  9. Перейдите на вкладку Управление, а затем в разделе Diagnostic storage account (Учетная запись хранения диагностики) выберите Создать, чтобы создать новую учетную запись хранения.

  10. Оставьте значения по умолчанию в разделах Идентификатор, Автозавершение работы и Резервное копирование.

  11. Выберите Review + create (Просмотреть и создать). После завершения проверки щелкните Создать. Процесс создания виртуальной машины займет несколько минут.

Настройка Бастиона Azure

Бастион Azure — это полностью управляемая служба Azure, которая обеспечивает безопасный доступ к виртуальным машинам по протоколам RDP и SSH непосредственно с портала Azure. Использование службы "Бастион Azure" избавляет от необходимости настройки параметров сети, связанных с доступом по протоколу RDP.

  1. На портале в верхней части представления группы ресурсов выберите Добавить.

  2. В поле поиска введите Бастион.

  3. В результатах поиска выберите Бастион.

  4. Выберите Создать, чтобы начать процесс создания нового ресурса типа "Бастион Azure". В разделе Виртуальная сеть отобразится сообщение об ошибке, так как подсети AzureBastionSubnet еще нет. Подсеть создается на следующих этапах. Затем используйте настройки из таблицы под изображением.

    Start of creating Azure Bastion

    Параметр Предлагаемое значение Описание:
    Имя myBastion Имя нового ресурса типа "Бастион".
    Регион Центрально-северная часть США Выберите ближайший регион или регион рядом с другими службами, к которому получают доступ ваши функции.
    Виртуальная сеть myResourceGroup-vnet Виртуальная сеть, в которой будет создан ресурс типа "Бастион".
    Подсеть AzureBastionSubnet Подсеть в виртуальной сети, в которой будет развернут новый ресурс типа "Узел-бастион". Необходимо создать подсеть, используя в качестве имени значение AzureBastionSubnet. По этому значению Azure сможет определить, в какую подсеть следует развертывать ресурсы типа "Бастион". Следует использовать подсеть размером не менее /27 (/27, /26 и т. д.).

    Примечание.

    Подробное пошаговое руководство по созданию ресурса типа "Бастион Azure" см. в учебнике Создание узла-бастиона Azure.

  5. Создайте подсеть, в которой Azure может подготовить узел-бастион Azure. При выборе элемента Управление конфигурацией подсети откроется новая область, в которой можно определить новую подсеть. Выберите + Подсеть для создания новой подсети.

  6. Подсеть должна иметь имя AzureBastionSubnet, а длина префикса подсети должна быть не менее /27. Нажмите кнопку ОК, чтобы создать подсеть.

    Create subnet for Azure Bastion host

  7. На странице Создание бастиона выберите только что созданную подсеть AzureBastionSubnet из списка доступных подсетей.

    Create an Azure Bastion host with specific subnet

  8. Выберите Просмотреть и создать. По завершении проверки выберите Создать. Создание ресурса типа "Бастион Azure" займет несколько минут.

Создание приложения-функции Azure

Следующий этап — создание приложения-функции в Azure с использованием плана потребления. Развертывание кода функции в этом ресурсе описано далее в этом руководстве.

  1. На портале в верхней части представления группы ресурсов выберите Добавить.

  2. Выберите Среда выполнения приложений > Приложение-функция.

  3. В разделе Основные сведения используйте параметры приложения-функции как указано в таблице ниже.

    Параметр Предлагаемое значение Description
    Группа ресурсов myResourceGroup Выберите группу ресурсов, которая будет содержать ресурсы для работы с этим руководством. Использование одной и той же группы ресурсов для приложения-функции и виртуальной машины упрощает задачу очистки ресурсов после завершения работы с этим руководством.
    Имя приложения-функции Глобально уникальное имя Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a–z (без учета регистра), 0–9 и -.
    Опубликовать Код Параметр для публикации файлов кода или контейнера Docker.
    Стек среды выполнения Предпочитаемый язык Выберите среду выполнения, которая поддерживает нужный функциональный язык программирования.
    Регион Центрально-северная часть США Выберите ближайший регион или регион рядом с другими службами, к которому получают доступ ваши функции.

    Нажмите кнопку Далее: размещение >.

  4. В разделе Размещение выберите соответствующие значения для параметров Учетная запись хранения, Операционная система и План, как описано в следующей таблице.

    Параметр Предлагаемое значение Description
    Учетная запись хранения Глобально уникальное имя Создайте учетную запись хранения для использования приложением-функцией. Имя учетной записи хранения должно содержать от 3 до 24 символов и состоять только из цифр и строчных букв. Можно также использовать существующую учетную запись при условии, что она соответствует требованиям учетной записи хранилища.
    Операционная система Предпочтительная операционная система Операционная система предварительно выбирается с учетом выбранного стека среды выполнения, но при необходимости ее можно изменить.
    План Потребление От плана размещения зависит, как масштабируется приложение-функция и какие ресурсы доступны для каждого экземпляра.
  5. Выберите Просмотр и создание , чтобы просмотреть выбранные параметры конфигурации приложения.

  6. Выберите команду Создать, чтобы подготовить и развернуть приложение-функцию.

Настройка ограничений доступа

Следующий этап — настройка таких ограничений доступа, при которых вызывать функцию смогут только ресурсы в виртуальной сети.

Закрытый доступ к сайту включается при создании конечной точки службы виртуальной сети Azure между приложением-функцией и указанной виртуальной сетью. Ограничения доступа реализуются через конечные точки службы. Конечные точки службы гарантируют, что только трафик, исходящий из указанной виртуальной сети, может получить доступ к назначенному ресурсу. В данном случае назначенным ресурсом является функция Azure.

  1. В приложении-функции под заголовком раздела Параметры выберите ссылку Сетевые подключения.

  2. Страница Сетевые подключения является отправной точкой для настройки Azure Front Door, Azure CDN, а также ограничений доступа.

  3. Выберите Настройка ограничений доступа для настройки закрытого доступа к сайту.

  4. На странице Ограничения доступа отображается только ограничение по умолчанию. Ограничения на доступ к приложению-функции по умолчанию не устанавливаются. Выберите Добавить правило, чтобы создать конфигурацию ограничения для закрытого доступа к сайту.

  5. В области Добавление ограничения доступа заполните для нового правила поля Имя, Приоритет и Описание.

  6. Выберите в раскрывающемся списке Тип значение Виртуальная сеть, выберите созданную ранее виртуальную сеть, а затем — подсеть для этого учебника.

    Примечание.

    Включение конечной точки службы может занять несколько минут.

  7. Теперь на странице Ограничения доступа отображается новое ограничение. Для изменения значения Состояние конечной точки с "Отключено" на "Подготовка", а затем — "Включено" может потребоваться несколько секунд.

    Важно!

    У каждого приложения-функции есть сайт расширенного инструмента (Kudu), который используется для управления развертываниями приложений-функций. Для доступа к этому сайту используется URL-адрес, например <FUNCTION_APP_NAME>.scm.azurewebsites.net. Включение ограничений доступа на сайте Kudu препятствует развертыванию кода проекта с локальной рабочей станции разработчика. В этом случае для выполнения развертывания в виртуальной сети требуется агент.

Доступ к приложению-функции

  1. Вернитесь к ранее созданному приложению-функции. В разделе Обзор скопируйте URL-адрес.

    Get the Function app URL

    Если вы теперь попытаетесь получить доступ к приложению-функции с компьютера, находящегося за пределами виртуальной сети, вы получите страницу HTTP 403, указывающую, что доступ запрещен.

  2. Вернитесь в группу ресурсов и выберите созданную ранее виртуальную машину. Чтобы получить доступ к сайту из виртуальной машины, необходимо подключиться к ней через службу "Бастион Azure".

  3. Выберите Подключить, а затем — Бастион.

  4. Укажите необходимые имя пользователя и пароль для входа на виртуальную машину.

  5. Нажмите Подключиться. Появится новое окно браузера, позволяющее взаимодействовать с виртуальной машиной. Доступ к сайту можно получить из веб-браузера на виртуальной машине, так как виртуальная машина обращается к нему через виртуальную сеть. Хотя сайт доступен только в назначенной виртуальной сети, общедоступная запись DNS остается.

Создание функции

Следующий этап в этом руководстве — создание функции Azure, активируемой по HTTP. Вызов функции с помощью метода HTTP GET или POST должен приводить к отправке ответа "Hello, {имя}".

  1. Выполните указания в одном из следующих кратких руководств, чтобы создать и развернуть приложение Функций Azure.

  2. При публикации проекта Функций Azure выберите ресурс типа "Приложение-функция", созданный ранее в этом руководстве.

  3. Убедитесь, что функция развернута.

    Deployed function in list of functions

Непосредственный вызов функции

  1. Чтобы проверить доступ к функции, необходимо скопировать ее URL-адрес. Выберите развернутую функцию, а затем — Получить URL-адрес функции. Затем нажмите кнопку Копировать, чтобы скопировать URL-адрес в буфер обмена.

    Copy the function URL

  2. Вставьте URL-адрес в веб-браузер. Если вы теперь попытаетесь получить доступ к приложению-функции с компьютера, находящегося за пределами виртуальной сети, вы получите ответ HTTP 403, указывающий, что доступ к приложению запрещен.

Вызов функции из виртуальной сети

Доступ к функции через веб-браузер (с помощью службы "Бастион Azure") на настроенной виртуальной машине в виртуальной сети успешно получен.

Access the Azure Function via Azure Bastion

Очистка ресурсов

На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы считаете, что в будущем эти ресурсы вам не понадобятся, их можно удалить, удалив группу ресурсов.

В меню или на странице Главная портала Azure выберите Группы ресурсов. Затем на странице Группы ресурсов выберите myResourceGroup.

На странице myResourceGroup убедитесь, что перечислены те ресурсы, которые нужно удалить.

Выберите Удалить группу ресурсов, введите myResourceGroup в текстовое поле для подтверждения и щелкните Удалить.

Следующие шаги