Настройка сетевых правил для общедоступных IP-адресов

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

Правила IP-сети настраиваются на общедоступной конечной точке реестра. Правила IP-сети не применяются к частным конечным точкам, настроенным для Приватного канала.

Настройка правил доступа с IP-адресов доступна на уровне службы Премиум реестра контейнеров. Сведения об уровнях служб реестра и ограничениях см. в статье Уровни службы Реестра контейнеров Azure.

Каждый реестр поддерживает не более 100 правил доступа к IP-адресам.

Внимание

Некоторые функции могут быть недоступны или требовать большего объема настройки в реестре контейнеров, который ограничивает доступ к частным конечным точкам, выбранным подсетям или IP-адресам.

  • Если доступ к реестру через общедоступную сеть отключен, для доступа к реестру с помощью определенных доверенных служб, в том числе, через Центр безопасности Azure, требуется включение параметра сети для обхода сетевых правил.
  • После отключения доступа к общедоступной сети экземпляры некоторых служб Azure, включая Azure DevOps Services, в настоящее время не могут получить доступ к реестру контейнеров.
  • Частные конечные точки в настоящее время не поддерживаются управляемыми агентами Azure DevOps. Вам потребуется использовать локальный агент с сетевой линией видимости к частной конечной точке.
  • Если в реестре есть утвержденная частная конечная точка и доступ через общедоступную сеть отключен, репозитории и теги нельзя включить в список за пределами виртуальной сети с помощью портала Azure, Azure CLI или других средств.

Доступ из выбранной общедоступной сети (интерфейс командной строки)

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

Чтобы разрешить доступ только из выбранной общедоступной сети, необходимо прежде всего настроить режим запрета доступа по умолчанию. Подставьте нужное имя реестра в следующей команде az acr update:

az acr update --name myContainerRegistry --default-action Deny

Добавление сетевого правила для реестра

Выполните команду az acr network-rule add, чтобы добавить в реестр правило сетевого доступа, которое разрешает доступ с общедоступного IP-адреса или из диапазона адресов. Например, подставьте здесь нужное имя реестра контейнеров и общедоступный IP-адрес виртуальной машины в виртуальной сети.

az acr network-rule add \
  --name mycontainerregistry \
  --ip-address <public-IP-address>

Примечание.

Новое правило вступает в силу через несколько минут после добавления.

Доступ из выбранной общедоступной сети (портал)

  1. На портале перейдите к нужному реестру контейнеров.
  2. В разделе Параметры выберите Сеть.
  3. На вкладке Открытый доступ включите разрешение открытого доступа из выбранных сетей.
  4. В разделе Брандмауэр введите общедоступный IP-адрес, например адрес виртуальной машины в виртуальной сети. Или введите диапазон адресов, который содержит нужный IP-адрес виртуальной машины, в нотации CIDR.
  5. Выберите Сохранить.

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

Примечание.

Новое правило вступает в силу через несколько минут после добавления.

Совет

Вы также можете включить доступ к реестру с локального клиентского компьютера или из диапазона локальных IP-адресов. Чтобы разрешить такой доступ, вам нужно знать общедоступный IPv4-адрес компьютера. Его можно узнать, просто выполнив поиск по фразе "мой IP-адрес" в Интернет-браузере. Также актуальный IPv4-адрес клиента автоматически отображается при настройке параметров брандмауэра на странице Сеть на портале.

Отключение доступа из общедоступной сети

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

Примечание.

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

Отключение общего доступа (интерфейс командной строки)

Чтобы отключить общий доступ с помощью Azure CLI, воспользуйтесь командой az acr update и задайте для --public-network-enabled значение false. Для использования аргумента public-network-enabled нужна версия Azure CLI не ниже 2.6.0.

az acr update --name myContainerRegistry --public-network-enabled false

Отключение общего доступа (портал)

  1. На портале перейдите к вашему реестру контейнеров и выберите Параметры > Сеть.
  2. На вкладке Открытый доступ выберите для параметра Разрешение доступа из общедоступных сетей значение Отключено. Затем выберите Сохранить.

Отключение общего доступа

Восстановление доступа из общедоступной сети

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

Восстановление общего доступа (интерфейс командной строки)

Выполните команду az acr update и присвойте параметру --public-network-enabled значение true.

Примечание.

Для использования аргумента public-network-enabled нужна версия Azure CLI не ниже 2.6.0.

az acr update --name myContainerRegistry --public-network-enabled true

Восстановление общего доступа (портал)

  1. На портале перейдите к вашему реестру контейнеров и выберите Параметры > Сеть.
  2. На вкладке Открытый доступ выберите для параметра Разрешение доступа из общедоступных сетей значение Все сети. Затем выберите Сохранить.

Общий доступ из всех сетей

Устранение неполадок

Доступ через прокси-сервер HTTPS

Если задано правило общедоступной сети или запрещен общий доступ к реестру, попытки входа в реестр из запрещенной общедоступной сети будут завершаться сбоем. Клиентский доступ через прокси-сервер HTTPS также завершится ошибкой, если не задано правило доступа для прокси-сервера. Появится сообщение об ошибке вида Error response from daemon: login attempt failed with status: 403 Forbidden или Looks like you don't have access to registry.

Такие ошибки также могут возникать, если прокси-сервер HTTPS разрешен правилом сетевого доступа, но прокси-сервер в клиентской среде не настроен должным образом. Убедитесь, что клиент Docker и управляющая программа Docker настроены для работы с прокси-сервером. Дополнительные сведения см. в разделе о прокси-сервере HTTP/HTTPS в документации Docker.

Доступ из Azure Pipelines

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

Одно из обходных решений этой проблемы — изменить размещение агента, используемого для запуска конвейера, с сервера Майкрософт на локальное. При использовании локального агента на управляемом вами компьютере Windows или Linux вы можете управлять исходящим IP-адресом конвейера и добавить этот адрес в правило доступа на основе IP-адресов.

Доступ из AKS

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

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

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