Настройка правил для доступа к реестру контейнеров Azure за брандмауэром

В этой статье объясняется, как настроить правила в брандмауэре, чтобы разрешить доступ к реестру контейнеров Azure. Например, для извлечения образа контейнера устройству Azure IoT Edge, которое находится за брандмауэром или прокси-сервером, может потребоваться доступ к реестру контейнеров. Или заблокированному серверу в локальной сети может потребоваться доступ для отправки образа.

Если вместо этого вы хотите настроить входящий сетевой доступ к реестру контейнеров только в виртуальной сети Azure, обратитесь к статье Настройка Приватного канала Azure для реестра контейнеров Azure.

Сведения о конечных точках реестра

Чтобы извлечь или отправить образы или другие артефакты в реестр контейнеров Azure, клиент (например, управляющая программа Docker) должен взаимодействовать по протоколу HTTPS с двумя разными конечными точками. Для клиентов, обращающихся к реестру из-за пределов брандмауэра, необходимо настроить правила доступа для обеих конечных точек. Обе конечные точки доступны через порт 443.

  • Конечная точка REST API реестра — операции проверки подлинности и управления реестром обрабатываются через общедоступную конечную точку REST API реестра. Эта конечная точка является именем входа на сервер для реестра. Например, myregistry.azurecr.io.

    • Конечная точка REST API реестра для сертификатов . Реестр контейнеров Azure использует SSL-сертификат с подстановочными знаками для всех поддоменов. При подключении к реестру контейнеров Azure по протоколу SSL клиент должен иметь возможность скачать сертификат для подтверждения TLS. В таких случаях azurecr.io также должен быть доступен.
  • Конечная точка хранилища (данные) — Azure выделяет хранилище BLOB-объектов в учетных записях хранения Azure от имени каждого реестра для управления данными для образов контейнеров и других артефактов. При работе со слоями образов в реестре контейнеров Azure клиент выполняет запросы с помощью конечной точки учетной записи хранения, предоставляемой реестром.

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

Разрешение доступа к REST и конечным точкам данных

  • Конечная точка REST — разрешение доступа к полному имени входа на сервер для реестра, <registry-name>.azurecr.io, или к соответствующему диапазону IP-адресов.
  • Конечная точка хранилища (данные) — разрешение доступа ко всем учетным записям хранилища BLOB-объектов Azure с помощью подстановочных знаков *.blob.core.windows.net или к соответствующему диапазону IP-адресов.

Примечание

В Реестре контейнеров Azure имеются выделенные конечные точки данных, что позволяет жестко ограничить правила брандмауэра клиента для хранилища реестра. При необходимости включите конечные точки данных во всех регионах, где размещается или реплицируется реестр, используя формат <registry-name>.<region>.data.azurecr.io.

Сведения о полном доменном имени реестра

У реестра два полных доменных имени: URL-адрес для входа и конечная точка данных.

  • URL-адрес входа и конечная точка данных доступны из виртуальной сети — нужно использовать частный IP-адрес, включив приватный канал.
  • У реестра, который не использует конечные точки данных, должен быть доступ к данным через конечную точку *.blob.core.windows.net. Он не обеспечивает изоляцию, необходимую для настройки правил брандмауэра.
  • Реестр с включенным приватным каналом автоматически получает выделенную конечную точку данных.
  • Выделенная конечная точка данных создается в реестре для каждого региона.
  • URL-адрес для входа остается неизменным независимо от того, включена или отключена конечная точка данных.

Разрешение доступа по диапазону IP-адресов

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

Чтобы найти диапазоны IP-адресов конечной точки ACR REST, доступ к которым необходимо разрешить, найдите AzureContainerRegistry в файле JSON.

Важно!

Диапазоны IP-адресов для служб Azure могут измениться, а обновления публикуются еженедельно. Регулярно загружайте файл JSON и вносите необходимые обновления в правила доступа. Если сценарий предполагает настройку правил группы безопасности сети в виртуальной сети Azure или если вы используете Брандмауэр Azure, используйте тег службыAzureContainerRegistry.

IP-адреса REST для всех регионов

{
  "name": "AzureContainerRegistry",
  "id": "AzureContainerRegistry",
  "properties": {
    "changeNumber": 10,
    "region": "",
    "platform": "Azure",
    "systemService": "AzureContainerRegistry",
    "addressPrefixes": [
      "13.66.140.72/29",
    [...]

IP-адреса REST для определенного региона

Выполните поиск конкретного региона, например AzureContainerRegistry.AustraliaEast.

{
  "name": "AzureContainerRegistry.AustraliaEast",
  "id": "AzureContainerRegistry.AustraliaEast",
  "properties": {
    "changeNumber": 1,
    "region": "australiaeast",
    "platform": "Azure",
    "systemService": "AzureContainerRegistry",
    "addressPrefixes": [
      "13.70.72.136/29",
    [...]

IP-адреса хранилища для всех регионов

{
  "name": "Storage",
  "id": "Storage",
  "properties": {
    "changeNumber": 19,
    "region": "",
    "platform": "Azure",
    "systemService": "AzureStorage",
    "addressPrefixes": [
      "13.65.107.32/28",
    [...]

IP-адреса хранилища для определенного региона

Выполните поиск конкретного региона, например Storage.AustraliaCentral.

{
  "name": "Storage.AustraliaCentral",
  "id": "Storage.AustraliaCentral",
  "properties": {
    "changeNumber": 1,
    "region": "australiacentral",
    "platform": "Azure",
    "systemService": "AzureStorage",
    "addressPrefixes": [
      "52.239.216.0/23"
    [...]

Разрешение доступа по тегу службы

В виртуальной сети Azure используйте правила безопасности сети для фильтрации трафика от ресурса, например виртуальной машины, в реестр контейнеров. Чтобы упростить создание правил сети Azure, используйте тег службыAzureContainerRegistry. Тег службы представляет группу префиксов IP-адресов для глобального доступа к службе Azure или в определенном регионе Azure. Тег автоматически обновляется при изменении адресов.

Например, создайте правило группы безопасности сети для исходящего трафика с назначением AzureContainerRegistry, чтобы разрешить трафик в реестр контейнеров Azure. Чтобы разрешить доступ к тегу службы только в определенном регионе, укажите регион в следующем формате: AzureContainerRegistry.[название региона].

Включение выделенных конечных точек данных

Предупреждение

Если вы ранее настроили брандмауэр клиента на доступ к существующим конечным точкам *.blob.core.windows.net, переключение на выделенные конечные точки данных повлияет на подключение клиентов, что приведет к сбоям при извлечении. Чтобы обеспечить стабильный доступ для клиентов, добавьте новые правила конечной точки данных в правила брандмауэра клиента. После завершения включите выделенные конечные точки данных для реестров с помощью Azure CLI или других средств.

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

Включить выделенные конечные точки данных можно с помощью портала Azure или Azure CLI. Конечные точки данных соответствуют региональным шаблонам, <registry-name>.<region>.data.azurecr.io. В геореплицированном реестре включение конечных точек данных позволяет использовать конечные точки во всех регионах реплик.

Портал

Порядок включения конечных точек данных с помощью портала

  1. Перейдите к реестру контейнеров.
  2. Выберите Сеть>Общий доступ.
  3. Установите флажок Включить выделенную конечную точку данных.
  4. Щелкните Сохранить.

Конечная точка данных или конечные точки отобразятся на портале.

Выделенные конечные точки данных на портале

Azure CLI

Чтобы включить конечные точки данных с помощью Azure CLI, используйте Azure CLI версии 2.4.0 или более поздней. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Следующая команда az acr update позволяет включить выделенные конечные точки данных в реестре myregistry.

az acr update --name myregistry --data-endpoint-enabled

Чтобы просмотреть конечные точки данных, используйте команду az acr show-endpoints.

az acr show-endpoints --name myregistry

В выходных данных для демонстрационных целей показаны две региональные конечные точки.

{
    "loginServer": "myregistry.azurecr.io",
    "dataEndpoints": [
        {
            "region": "eastus",
            "endpoint": "myregistry.eastus.data.azurecr.io",
        },
        {
            "region": "westus",
            "endpoint": "myregistry.westus.data.azurecr.io",
        }
    ]
}

После настройки выделенных конечных точек данных для реестра можно включить правила доступа брандмауэра клиента для конечных точек данных. Включите правила доступа к конечной точке данных для всех необходимых разделов реестра.

Настройка правил брандмауэра клиента для MCR

Если вам требуется доступ к реестру контейнеров Microsoft (MCR) из-за пределов брандмауэра, обратитесь к руководству по настройке правил брандмауэра клиента MCR. MCR — это основной реестр для всех опубликованных корпорацией Майкрософт образов Docker, таких как образы Windows Server.

Дальнейшие действия