Поделиться через


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

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

Правила 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 получить доступ к реестру, используйте один из следующих вариантов:

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