第 1 章 Red Hat Quay 权限模型
Red Hat Quay 的权限模型提供对存储库和这些存储库内容的精细访问控制,有助于确保安全协作和自动化。Red Hat Quay 管理员可以授予用户和机器人帐户以下级别访问权限之一:
- Read: 允许用户、机器人和团队拉取镜像。
- Write: 允许用户、机器人和团队推送镜像。
- Admin:提供用户、机器人和团队管理特权。
管理用户可以为现有用户和团队委托新权限,并在需要时更改现有权限并撤销权限
总体而言,这些级别的访问权限可让用户或机器人帐户执行特定任务,如拉取镜像、将镜像的新版本推送到 registry 或管理存储库的设置。这些权限可以在整个组织和特定存储库中委托。例如,可以将 Read 权限设置为机构内的特定团队,而 Admin 权限则可提供给机构内所有存储库中的所有用户。
1.1. Red Hat Quay 团队概述
在 Red Hat Quay 中,团队 是一组具有共享权限的用户,允许对项目进行高效管理和协作。团队可帮助简化机构和存储库内的访问控制和项目管理。可以为他们分配指定权限,帮助确保成员根据其角色和职责具有合适的存储库访问权限。
1.1.1. 使用 UI 设置团队角色
创建团队后,您可以在机构中设置该团队的角色。
先决条件
- 您已创建了一个团队。
流程
- 在 Red Hat Quay 登录页面中,点击您的机构的名称。
- 在导航窗格中,单击 Teams 和 Membership。
选择 TEAM ROLE 下拉菜单,如下图所示:
对于所选团队,请选择以下角色之一:
- 管理.对组织的完全管理访问权限,包括创建团队、添加成员和设置权限的能力。
- 成员 :继承为团队设置的所有权限。
- 创建者.所有成员权限,以及创建新存储库的功能。
1.1.1.1. 管理团队成员和存储库权限
使用以下步骤管理团队成员和设置存储库权限。
在机构的 团队和成员资格 页面中,您还可以管理团队成员并设置存储库权限。
- 点 kebab 菜单,然后选择以下选项之一:
- 管理团队成员。在此页面上,您可以查看所有成员、团队成员、机器人帐户或被邀请的用户。您还可以通过单击 Add new member 来添加新的团队成员。
设置存储库权限。在这个页面中,您可以将存储库权限设置为以下之一:
- None。团队成员对存储库没有权限。
- 读取.团队成员可以从存储库查看和拉取。
- 写入。团队成员可以从中读取(拉取)并写入(推送)到存储库。
- 管理.从存储库拉取(pull)和推送到存储库的完整访问权限以及执行与存储库关联的管理任务的能力。
- 删除。此弹出窗口允许您单击 Delete 来删除团队。
1.1.2. 使用 API 设置机构中团队的角色
使用以下步骤使用 API 查看和设置团队。
先决条件
- 您已创建了 OAuth 访问令牌。
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。
流程
输入以下
GET /api/v1/organization/{orgname}/team/{teamname}/permissions
命令,为机构的团队返回存储库权限列表。请注意,您的团队必须已添加到存储库中才能返回信息。$ curl -X GET \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/permissions"
输出示例
{"permissions": [{"repository": {"name": "api-repo", "is_public": true}, "role": "admin"}]}
您可以使用
PUT /api/v1/organization/{orgname}/team/{teamname}
命令,在组织内创建或更新团队,使其具有 admin、member 或 creator 角色。例如:$ curl -X PUT \ -H "Authorization: Bearer <your_access_token>" \ -H "Content-Type: application/json" \ -d '{ "role": "<role>" }' \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>"
输出示例
{"name": "testteam", "description": "", "can_view": true, "role": "creator", "avatar": {"name": "testteam", "hash": "827f8c5762148d7e85402495b126e0a18b9b168170416ed04b49aae551099dc8", "color": "#ff7f0e", "kind": "team"}, "new_team": false}