Репозиторий Nexus Docker — анонимный доступ к выбранным артефактам

Репозиторий Nexus Docker — анонимный доступ к выбранным артефактам

Вариант использования: разрешить тянутьвыбрано(например, помеченные как *-public) Docker Images анонимно. В противном случае требуются учетные данные.

Дано: последняя версия Nexus 3.52.0, работает с docker loginучетными данными AA и LDAP без проблем.

Пытался:

  • Селектор + Привилегия + Роль (все с именем docker-images-public) > предоставлено использование «анонимного», «Анонимный доступ» включен, с тем же пользователем и локальной областью авторизации.
  • Результат: Ошибка ответа от демона: Получить https://HOST/v2/infrastructure/IMAGE/manifests/VERSION-public: нет базовых учетных данных аутентификации Ожидается: возможность загрузки образов Docker, соответствующих селектору контента (например, ".*-public")

Дополнительно пробовал:

  1. включение уровня журнала TRACE в журнале

    Результат: много выходных данных, но без конкретной причины отказа (по крайней мере я не видел). Одна из строк: DEBUG [qtp194038341-106] *UNKNOWN org.sonatype.nexus.repository.view.Router - Response: Response{status=Status{successful=false, code=401, message='null'}, payload=StringPayload{size=113, charset=UTF-8, contentType='application/json'}}

  2. без Nginx впереди (например, docker pull HOST:5000/IMAGE:VERSION-public, через HTTP)

    Результат: тот же. Причина: видел ответы StackOverflow, в которых упоминается модификация заголовка Auth. Хотел полностью исключить Nginx из уравнения.

  3. простой селектор

    Селектор format == "docker" && ( path == "/v2/" || path =~ ".*public" || path == "/v2/.*") был изменен в нескольких попытках, включая рекомендации отhttps://stackoverflow.com/questions/43354352/nexus-docker-and-restricting-access-via-content-selector(скорее всего, нет) Однако ошибка не связана с селектором, поскольку ошибка остается той же даже приformat == "docker" && path =~ ".*"

  4. Предоставление роли anonymousпользователюnx-admin

    Результат: та же ошибка, значит причина не в anonymousразрешениях

  5. Активация Docker Bearer Token Realm, согласноhttps://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authentication

    Результат: та же ошибка

  6. Включение анонимного доступа на уровне репозитория (флажок «Разрешить анонимный docker pull (требуется Docker Bearer Token Realm)»)

    Результат: ко всему репозиторию можно получить анонимный доступ. НЕ будет сделано.

Единственная альтернатива, которую я здесь вижу, — это создание отдельного репозитория Docker на другом порту ТОЛЬКО для публичного анонимного доступа.

решение1

Недостающей частью было удаление nx-anonymousроли по умолчанию для anonymousпользователя, что позволяло бы ему извлекать весь репозиторий.

В целом конфигурация:

  1. Создать селектор format == "docker" && path =~ ".*-public"+ привилегию + роль (все поименованы docker-images-public)
  2. #admin/security/realms - активироватьDocker Bearer Token Realm
  3. #admin/repository/repositories:docker-repository, включите флажок Allow anonymous docker pull ( Docker Bearer Token Realm required )для репозитория docker
  4. #админ/безопасность/пользователи:анонимные
  • удалить nx-anonymousроль пользователя anonymous, которому предоставлен доступ для извлечения всех изображений
  • предоставить новую docker-images-publicроль

Связанный контент