限制对gitlab容器注册表的访问

问题描述 投票:2回答:2

我希望能够让用户将docker文件与代码一起推送到gitlab并让gitlab构建映像,然后由经过身份验证的项目用户提取。

问题是,我想确保用户不要将docker镜像直接推送到gitlab容器注册表,这样我们就可以查看docker文件和控件,并确保Dockefiles使用Redhat only注册表从中提取内容。

我们如何防止用户将自己构建的图像推送到gitlab?换句话说,我们如何确保gitlab项目的容器注册表中的docker镜像是由dockerfile的gitlab构建的,而不是项目用户direclty从其他地方推送的那个?

gitlab gitlab-ci gitlab-ci-runner gitlab-omnibus
2个回答
1
投票

我正在进行类似的评估,虽然我非常喜欢Gitlab的整体产品,但这对我来说是一个潜在的阻碍。

另一种可能的解决方法是使用deploy tokens。一个潜在的问题是它们是基于每个项目授予的,因此如果您想授予对大量图像的访问权限,这可能会变得很麻烦。另一方面,您可以指定一个项目来包含所有图像(您可以在一个Gitlab项目注册表中存储多个图像名称)并设置CI脚本以将所有内容推送到那里。

也许更有用的是使用personal access tokens。这些是为用户全局设置的,您可以指定任意多个(例如,每个客户端一个),设置到期日期,并限制对read_registry的访问。


2
投票

我认为目前不可能。如果检查gitlab's permissions model,您将看到用户访问级别决定了您可以在容器注册表中执行的操作:

  • 读取权限可用作Reporter +
  • 更新权限可作为开发人员使用

如果您的用户是开发人员,那么他们将能够将图像推送到注册表。如果要将其限制为gitlab-ci版本,则需要使用protected branches并将用户限制为Reporter访问级别(可能不是您想要的)。

另一个有点复杂的选择是设置第二个项目,该项目用作图像的源,并将其构建设置配置为从第一个项目受保护的分支中提取。在第一个项目中提交到受保护的分支总是必须进行审查,并且将从第二个项目中提取docker镜像。

© www.soinside.com 2019 - 2024. All rights reserved.