Nexus 3 Docker Content Selector выбирает слишком много изображений

Я использую Nexus 3 в качестве хранилища докеров и хочу создать пользователя, который имеет доступ только для чтения к определенному образу докера (и связанным с ним тегам).

Для этого я создал селектор контента со следующим запросом (имя изображения является тестовым для демонстрационных целей): format == "docker" and path =~ "^(/v2/|/v2/library/)?(test(/.*)?)?$".

Затем я создал привилегию с чтением действия, привязал ее к роли и добавил пользователю.

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

Рассмотрим следующее: я создаю образ с именем testaaa:1 в реестре докеров. После этого я docker login в реестр, используя своего пользователя с доступом только для чтения. Я вдруг могу тянуть docker pull hub.my-registry.com/testaaa:1 хотя по запросу не должен.

Я протестировал запрос в Java Regex Tester, запрос не выбрал тестааа. Я что-то упускаю? Я с трудом нахожу подсказки по этой теме.

Обновлено: Еще несколько тестов показывают, что мой пользователь действительно может извлекать все изображения из этого реестра. Запрос Content Selector, который я использовал, точно такой же, как предложен в документации Sonatype Селекторы контента и Docker — REST API и клиент Docker.

Просто, чтобы устранить возможное недоразумение: read изображение в мире докеров/нексуса = пользователь может тянуть (и я действительно не понимаю, в каком случае вы хотели бы, чтобы пользователь знал, что изображение существует, но не позволяет ему использовать его в любом случае). Что касается остальной части вашего вопроса, вы включили анонимный доступ к вашему экземпляру нексуса? В этом случае любой может прочитать что угодно. См. help.sonatype.com/repomanager3/nexus-repository-administrati‌​on/…)

Zeitounator 05.05.2022 15:22

Действие «Чтение» позволяет пользователю извлечь изображение из репозитория. Чтобы убедиться, что я не включил анонимный доступ, я заглянул в настройки -> безопасность -> анонимный доступ. Флажок не установлен

purzel 05.05.2022 15:25

Обычно я ограничиваю пользователей пространством имен, а не конкретными изображениями (например, path =^ "/v2/your_namespace/"), поэтому у меня нет большого опыта в этом. Но регулярное выражение в документации выглядит неуклюжим, поскольку каждый элемент является необязательным (поэтому я думаю, что оно может соответствовать чему угодно. ..) Я предлагаю вам попробовать: path =~ "^/v2/(library/)?/test(/.*)?$" И я совершенно уверен, что вы даже можете поместить library часть uri в частный репозиторий, если вы используете только последние клиенты докеров.

Zeitounator 05.05.2022 15:47
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
3
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понял это. Проблема заключалась не в запросе Content Selector, а в возможности, которую я ранее добавил. Эта возможность предоставила любому аутентифицированному пользователю роль nx-anonymous, которая позволяет любому просматривать любой репозиторий в Nexus. Это означало, что любой аутентифицированный пользователь мог читать/извлекать любое изображение из репозитория.

Эта ошибка была полностью с моей стороны. Если у кого-то есть подобные проблемы, загляните в Настройки Nexus -> Система -> Возможности и проверьте, есть ли какие-либо возможности, которые дают вашим пользователям нежелательные роли.

Другие вопросы по теме