per image restrictions for images in docker registry - is it possible?

Apr 15, 2020 01:21

Почитал про то что предлагают для docker registry для окружений с single sign on.

Для тех у кого частный случай есть список рецептов: https://docs.docker.com/registry/recipes/ , апач у нас в конторе не популярен у админов и отаётся nginx: https://docs.docker.com/registry/recipes/nginx/ .

"this model gives you the ability to use whatever authentication backend you want through the secondary authentication mechanism implemented inside your proxy"

"it also requires that you move TLS termination from the Registry to the proxy itself."

Предлагают они использовать свой проксирующий web-сервис с поддержкой token authentication:

https://docs.docker.com/registry/spec/auth/token/

V1 registry у нас я думаю не рассматриваются, так что
"Under the Registry V2 workflow, clients should contact the registry first. If the registry server requires authentication it will return a 401 Unauthorized response with a WWW-Authenticate header detailing how to authenticate to this registry."

Настройки аутентификации для registry образа: https://docs.docker.com/registry/configuration/#auth

То есть подружить это с каким нибудь keycloak вполне реально.

Всё это замечательно, но хотелось бы делить доступ к образам "per image". На текущий момент резюме одного из админов - docker registry не умеет такой доступ.

Да, не умеет, но насколько сложно это реализовать и не сделал ли кто уже такое в open source?

Например мне думается, что проксирующий (для организации аутентификации) nginx мог бы направлять http запросы авторизованных (для работы с регистри) пользователей на некое приложение, которое по тегу образа могло бы инструктировать nginx отдавать registry клиенту 401 Unauthorized при попытках скачать конкретный образ из репозитория (на основе его тега или имени).

Возможно ли такое?

Контекст вопроса в том, что мы эксплуатирующая некую web платформу организация и если вводить на каждого разработчика по reggitry этих регистри станет слишком много, это станет неудобно обслуживать. С другой стороны, если модуль платформы передадут в разработку от одной програмистской конторы к другой, то придётся переделывать кучу сборок и, скорее всего, вручную.

Вопрос архитектора звучал так - кто нибудь задумывался над best practice в такой ситуации или читал об этом?

UPDATE: Искомую утилиту для раздачи прав в registry уже запилили: https://github.com/SUSE/Portus

url, devops, linux, docker, admin notes

Previous post Next post
Up