Ограничить доступ к реестру контейнера gitlab
Я хочу, чтобы пользователи могли отправлять файл docker вместе с кодом в gitlab и позволять gitlab создавать образ, который затем может быть извлечен аутентифицированным пользователем проекта.
Проблема в том, что я хочу убедиться, что пользователи не помещают образы докеров непосредственно в реестр контейнеров gitlab, чтобы мы могли просматривать файлы и элементы управления и проверять, чтобы Dockefiles использовали реестр Redhat only для извлечения данных.
Как мы можем запретить пользователям отправлять свои собственные встроенные изображения в gitlab? Другими словами, как мы можем быть уверены, что образ докера в реестре контейнеров проекта gitlab - это файл, созданный gitlab из dockerfile, а не тот, который был вытолкнут директ-пользователями проекта откуда-то еще?
1 ответ
Я не думаю, что в настоящее время это возможно. Если вы проверите модель разрешений gitlab, вы увидите, что уровни доступа пользователей определяют, что вы можете делать в реестре контейнеров:
- права на чтение доступны как Reporter +
- Права на обновление доступны как Developer +
Если ваши пользователи разработчики, то они смогут загружать изображения в реестр. Если вы хотите ограничить это сборками gitlab-ci, вам нужно использовать защищенные ветки и ограничить пользователей уровнем доступа Reporter (возможно, не тем, что вы хотите).
Альтернатива, немного запутанная, состоит в том, чтобы настроить второй проект, который используется в качестве источника для изображений, и настроить его сборку для извлечения из первой защищенной ветви проекта. Привязки к защищенной ветке в первом проекте всегда должны быть проверены, а образы докеров будут извлечены из второго проекта.
Я делаю аналогичную оценку, и хотя мне действительно нравится общее предложение Gitlab, для меня это потенциальный ограничитель шоу.
Другим возможным обходным путем может быть использование маркеров развертывания. Потенциальная проблема заключается в том, что они предоставляются отдельно для каждого проекта, поэтому, если вы хотите предоставить доступ к большому количеству изображений, это может стать громоздким. С другой стороны, вы можете назначить один проект, который будет содержать все ваши изображения (вы можете сохранить более одного имени изображения в одном реестре проекта Gitlab), и настроить свои скрипты CI так, чтобы все туда помещалось.
Возможно, более полезным было бы использовать токены личного доступа. Они установлены глобально для пользователя, и вы можете указать столько, сколько хотите (например, по одному для каждого клиента), установить срок действия и ограничить доступ к read_registry
,