管理访问权限和权限
前言 复制链接链接已复制到粘贴板!
Red Hat Quay 提供了全面的权限模型,管理员可以控制谁可以在更精细的级别访问、管理和修改存储库。以下小节介绍了如何管理用户访问权限、定义团队角色、为用户和机器人帐户设置权限,以及定义存储库可见性。这些指南包括使用 Red Hat Quay UI 和 API 的说明。
涵盖了以下主题:
- 基于角色的访问控制
- 调整存储库可见性
- 创建和管理机器人帐户
- Clair 漏洞报告
第 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"
$ curl -X GET \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/permissions"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"permissions": [{"repository": {"name": "api-repo", "is_public": true}, "role": "admin"}]}{"permissions": [{"repository": {"name": "api-repo", "is_public": true}, "role": "admin"}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
PUT /api/v1/organization/{orgname}/team/{teamname}命令,在组织内创建或更新团队,使其具有 admin、member 或 creator 角色。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "testteam", "description": "", "can_view": true, "role": "creator", "avatar": {"name": "testteam", "hash": "827f8c5762148d7e85402495b126e0a18b9b168170416ed04b49aae551099dc8", "color": "#ff7f0e", "kind": "team"}, "new_team": false}{"name": "testteam", "description": "", "can_view": true, "role": "creator", "avatar": {"name": "testteam", "hash": "827f8c5762148d7e85402495b126e0a18b9b168170416ed04b49aae551099dc8", "color": "#ff7f0e", "kind": "team"}, "new_team": false}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 使用 UI 创建和管理默认权限 复制链接链接已复制到粘贴板!
默认权限定义在创建时应自动授予存储库的权限,除了存储库的默认创建者之外。权限根据创建存储库的用户分配。
使用以下步骤使用 Red Hat Quay v2 UI 创建默认权限。
流程
- 点机构的名称。
- 单击 Default permissions。
- 单击 Create default permissions。此时会出现 toggle drawer。
选择 Anyone 或 Specific 用户,以在创建存储库时创建默认权限。
如果选择 Anyone,则必须提供以下信息:
- 应用到。搜索、邀请或添加用户/机器人/团队。
- 权限.将权限设置为 Read、Write 或 Admin 之一。
如果选择特定用户,则必须提供以下信息:
- 存储库创建者.提供用户或机器人帐户。
- 应用到。提供用户名、机器人帐户或团队名称。
- 权限.将权限设置为 Read、Write 或 Admin 之一。
- 点 Create default permission。此时会出现确认框,返回以下警报: Successfully created default permissions for creator.
1.3. 使用 API 创建和管理默认权限 复制链接链接已复制到粘贴板!
使用以下步骤通过 Red Hat Quay API 管理默认权限。
先决条件
- 您已创建了 OAuth 访问令牌。
-
您已在
config.yaml文件中设置了BROWSER_API_CALLS_XHR_ONLY: false。
流程
输入以下命令使用
POST /api/v1/organization/{orgname}/prototypes端点创建默认权限:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"activating_user": {"name": "test-org+test", "is_robot": true, "kind": "user", "is_org_member": true, "avatar": {"name": "test-org+test", "hash": "aa85264436fe9839e7160bf349100a9b71403a5e9ec684d5b5e9571f6c821370", "color": "#8c564b", "kind": "robot"}}, "delegate": {"name": "testuser", "is_robot": false, "kind": "user", "is_org_member": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}}, "role": "admin", "id": "977dc2bc-bc75-411d-82b3-604e5b79a493"}{"activating_user": {"name": "test-org+test", "is_robot": true, "kind": "user", "is_org_member": true, "avatar": {"name": "test-org+test", "hash": "aa85264436fe9839e7160bf349100a9b71403a5e9ec684d5b5e9571f6c821370", "color": "#8c564b", "kind": "robot"}}, "delegate": {"name": "testuser", "is_robot": false, "kind": "user", "is_org_member": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}}, "role": "admin", "id": "977dc2bc-bc75-411d-82b3-604e5b79a493"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用
PUT /api/v1/organization/{orgname}/prototypes/{prototypeid}端点更新默认权限,例如,如果要更改权限类型。您必须包含创建策略时返回的 ID。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"activating_user": {"name": "test-org+test", "is_robot": true, "kind": "user", "is_org_member": true, "avatar": {"name": "test-org+test", "hash": "aa85264436fe9839e7160bf349100a9b71403a5e9ec684d5b5e9571f6c821370", "color": "#8c564b", "kind": "robot"}}, "delegate": {"name": "testuser", "is_robot": false, "kind": "user", "is_org_member": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}}, "role": "write", "id": "977dc2bc-bc75-411d-82b3-604e5b79a493"}{"activating_user": {"name": "test-org+test", "is_robot": true, "kind": "user", "is_org_member": true, "avatar": {"name": "test-org+test", "hash": "aa85264436fe9839e7160bf349100a9b71403a5e9ec684d5b5e9571f6c821370", "color": "#8c564b", "kind": "robot"}}, "delegate": {"name": "testuser", "is_robot": false, "kind": "user", "is_org_member": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}}, "role": "write", "id": "977dc2bc-bc75-411d-82b3-604e5b79a493"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过输入
DELETE /api/v1/organization/{orgname}/prototypes/{prototypeid}命令删除权限:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes/<prototype_id>
curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes/<prototype_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会返回输出。您可以通过输入
GET /api/v1/organization/{orgname}/prototypes命令来获取所有权限的列表:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"prototypes": []}{"prototypes": []}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 使用 UI 调整存储库的访问设置 复制链接链接已复制到粘贴板!
使用以下步骤,使用 v2 UI 调整存储库的用户或机器人帐户的访问设置。
先决条件
- 您已创建了用户帐户或机器人帐户。
流程
- 登录到 Red Hat Quay。
- 在 v2 UI 上,单击 Repositories。
-
单击存储库的名称,如
quayadmin/busybox。 - 点 Settings 选项卡。
可选。单击 User and robot permissions。您可以通过单击 权限 下的下拉菜单选项来调整用户或机器人帐户的设置。您可以将设置更改为 Read、Write 或 Admin。
- 读取.用户或 Robot 帐户可以从存储库查看和拉取。
- 写入。用户或 Robot 帐户可以从中读取(提取)并将其写入(推送)到存储库。
- 管理.用户或 Robot 帐户有权访问从存储库拉取并推送到存储库,以及执行与存储库关联的管理任务。
1.5. 使用 API 调整存储库的访问设置 复制链接链接已复制到粘贴板!
使用以下步骤,通过使用 API 调整存储库的用户或机器人帐户的访问设置。
先决条件
- 您已创建了用户帐户或机器人帐户。
- 您已创建了 OAuth 访问令牌。
-
您已在
config.yaml文件中设置了BROWSER_API_CALLS_XHR_ONLY: false。
流程
输入以下
PUT /api/v1/repository/{repository}/permissions/user/{username}命令更改用户权限:curl -X PUT \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{"role": "admin"}' \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>$ curl -X PUT \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{"role": "admin"}' \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"role": "admin", "name": "quayadmin+test", "is_robot": true, "avatar": {"name": "quayadmin+test", "hash": "ca9afae0a9d3ca322fc8a7a866e8476dd6c98de543decd186ae090e420a88feb", "color": "#8c564b", "kind": "robot"}}{"role": "admin", "name": "quayadmin+test", "is_robot": true, "avatar": {"name": "quayadmin+test", "hash": "ca9afae0a9d3ca322fc8a7a866e8476dd6c98de543decd186ae090e420a88feb", "color": "#8c564b", "kind": "robot"}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除当前权限,您可以输入
DELETE /api/v1/repository/{repository}/permissions/user/{username}命令:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会返回 CLI 中的任何输出。反之,您可以通过输入
GET /api/v1/repository/{repository}/permissions/user/命令来检查权限是否已删除:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>/
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"message":"User does not have permission for repo."}{"message":"User does not have permission for repo."}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 2 章 registry 范围访问管理 复制链接链接已复制到粘贴板!
以下章节提供有关调整用户和超级用户的 registry 范围权限的信息。
2.1. 管理受限用户 复制链接链接已复制到粘贴板!
默认情况下,registry 的所有 Red Hat Quay 成员都可以创建存储库,并将内容上传到自己的用户帐户。例如,当 user1 推送工件标签(如 /< user1>/<image>:<tag > )时,会创建一个名称 user1/image 的存储库。该仓库内部是工件标签的相关信息。
使用 FEATURE_RESTRICTED_USERS 配置字段,Red Hat Quay 管理员可以限制属于 registry 的所有用户从推送镜像或工件推送到 registry。此配置字段有效地呈现所有用户创建新机构或全部推送内容,除非他们已经是该机构的一部分,并定义为该机构的团队成员 ;即,受限用户仍根据他们所属的团队在机构中具有普通权限。
例如,Red Hat Quay 管理员在其 config.yaml 文件中设置 FEATURE_RESTRICTED_USERS 配置字段,如下所示:
FEATURE_RESTRICTED_USERS: true
FEATURE_RESTRICTED_USERS: true
当按照所示设置时,user1 无法使用 Red Hat Quay UI 创建新机构。尝试后,返回以下出错信息: Unauthorized。另外,如果 user1 尝试使用 CLI (即 /< user1>/<image>:<tag> )将镜像推送到自己的命名空间,则会返回以下出错信息: Error: writing blob: Initing layer upload to /v2/user1/<image>/blobs/uploads/uploads/ in <quay-server.example.com>: unauthorized: 对请求的资源的访问不是授权。但是,如果 user1 是管理员定义的机构团队的一部分,则他们维护该团队的权限。例如,如果 user1 添加到组织的团队并被授予 Admin 角色,则他们具有该组织的管理特权。如果给出了
当 FEATURE_RESTRICTED_USERS 与 RESTRICTED_USERS_WHITELIST 配置字段搭配使用时,Red Hat Quay 管理员可以允许指定的成员继续推送到 registry 或组织。通常,当设置了 FEATURE_RESTRICTED_USERS 时,Red Hat Quay 管理员也可以设置 RESTRICTED_USERS_WHITELIST,否则 registry 的所有成员(团队定义除外)都能够获得执行基本任务的能力。
例如,Red Hat Quay 管理员在其 config.yaml 文件中设置 FEATURE_RESTRICTED_USERS 和 RESTRICTED_USERS_WHITELIST 配置字段,如下所示:
# ...
FEATURE_RESTRICTED_USERS: true
RESTRICTED_USERS_WHITELIST:
- user2
# ...
# ...
FEATURE_RESTRICTED_USERS: true
RESTRICTED_USERS_WHITELIST:
- user2
# ...
使用这个配置,user 2 以外的 所有用户都限制为推送镜像或创建机构。团队的其他用户也具有这些特权。不是由 RESTRICTED_USERS_WHITELIST 字段定义的 registry 的一部分,或者机构团队的一部分在 registry 中没有权限,因此无法执行基本任务。
此功能对 LDAP 部署类型的工作方式不同。如需更多信息,请参阅 Red Hat Quay 的 LDAP 身份验证设置。
2.2. 管理机构的超级用户访问权限 复制链接链接已复制到粘贴板!
当用户(如 user1) 在 registry 中创建机构时,他们拥有该机构的访问权限和权限。因此,他们可以创建存储库,定义团队和成员资格,创建机器人帐户、设置默认权限、查看日志,并将其他设置调整为保证。它是用户的所有意图和目的,即用户的组织。
默认情况下,超级用户没有用户组织的访问权限。但是,Red Hat Quay 管理员可以使用 FEATURE_SUPERUSERS_FULL_ACCESS 配置字段授予超级用户从命名空间中其他存储库读取、写入和删除内容的能力,它们没有拥有或明确权限。
- 此功能仅适用于新 UI 的 beta 版。启用后,它会显示超级用户有权访问的所有机构。
- 启用此字段后,超级用户无法一次性查看每个组织的镜像存储库。这是一个已知的限制,并将在以后的 Red Hat Quay 版本中修复。作为临时解决方案,超级用户可以通过从 Organizations 页面中导航到镜像存储库来查看镜像存储库。
要授予超级用户对 registry 中的所有机构的完整访问权限,您可以使用以下 YAML 配置:
# ... FEATURE_SUPERUSERS_FULL_ACCESS: true # ...
# ...
FEATURE_SUPERUSERS_FULL_ACCESS: true
# ...
当位于 FEATURE_SUPERUSERS_FULL_ACCESS: true 后,所有 机构都将在超级用户的组织 页面中可见。
第 3 章 Red Hat Quay 软件仓库概述 复制链接链接已复制到粘贴板!
存储库为存储一组相关容器镜像提供了一个中央位置。这些镜像可用于以标准化格式构建应用程序及其依赖项。
存储库按命名空间进行组织。每个命名空间可以有多个存储库。例如,您可能具有个人项目的命名空间、一个用于公司的命名空间,或者对于您机构中的特定团队有一个命名空间。
私有存储库允许您定义可从存储库推送到或从中拉取的用户或团队,从而控制有权访问镜像的用户,从而增强 registry 的安全性。
3.1. 使用 UI 调整存储库可见性 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Quay UI 调整存储库的可见性,使其可以公开私有。
流程
- 在 Red Hat Quay UI 上,单击导航窗格中的 Repositories。
- 点存储库的名称。
- 单击导航窗格中的 Settings。
- 单击 Repository visibility。
- 单击 Make private。存储库是私有的,只有权限列表中的用户可以查看并与之交互。
3.2. 使用 API 调整存储库可见性 复制链接链接已复制到粘贴板!
可以通过 POST /api/v1/repository/{repository}/changevisibility 命令,将存储库的可见性设置为 。
私有或公共
先决条件
- 您已创建了 OAuth 访问令牌。
-
您已在
config.yaml文件中设置了BROWSER_API_CALLS_XHR_ONLY: false。 - 您已创建了软件仓库。
流程
您可以通过在 visibility 模式中指定所需选项,将存储库
的可见性更改为公共或私有。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"success": true}{"success": true}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 Red Hat Quay Robot 帐户概述 复制链接链接已复制到粘贴板!
机器人帐户用于自动访问 Red Hat Quay. registry 中的存储库。它们与 OpenShift Container Platform 服务帐户类似。
设置 Robot 帐户如下所示:
- 生成与 Robot 帐户关联的凭据。
- Robot 帐户可从中推送和拉取镜像的存储库和镜像将被识别。
- 生成的凭据可以复制和粘贴以与不同的容器客户端一起使用,如 Docker、Podman、Kubernetes、Masos 等,以访问每个定义的存储库。
机器人帐户可以通过提供各种安全优势来帮助保护 Red Hat Quay registry,例如:
- 指定存储库访问。
-
粒度权限,如
Read(pull)或Write(push)访问。如果保证,它们也可以获得Admin权限。 - 为 CI/CD 管道、系统集成和其他自动化任务而设计,帮助避免在脚本、管道或其他环境变量中暴露凭证。
- 机器人帐户使用令牌而不是密码,这为管理员提供了在令牌被泄露时撤销令牌的功能。
每个 Robot 帐户都仅限于单个用户命名空间或组织。例如,Robot 帐户可以提供用户 quayadmin 的所有存储库的访问权限。但是,它无法提供对不在用户存储库列表中的存储库的访问权限。
可以使用 Red Hat Quay UI 创建机器人帐户,也可以使用 Red Hat Quay API 通过 CLI 创建。创建后,Red Hat Quay 管理员可以利用 Robot Accounts 的更多高级功能,如无密钥身份验证。
4.1. 使用 UI 创建机器人帐户 复制链接链接已复制到粘贴板!
使用以下步骤使用 v2 UI 创建机器人帐户。
流程
- 在 v2 UI 上,单击 Organizations。
-
单击您要为其创建机器人帐户的组织名称,如
test-org。 - 点 Robot accounts 选项卡 → Create robot account。
-
在 Provide a name for your robot account 框中,输入名称,如
robot1。您的 Robot 帐户的名称是您的用户名与机器人的名称的组合,如quayadmin+robot1 可选。如果需要,可以使用以下选项:
- 将机器人帐户添加到团队。
- 将机器人帐户添加到存储库。
- 调整机器人帐户的权限。
在 Review and finish 页面中,检查您提供的信息,然后点 Review and finish。此时会出现以下警报: Successfully created robot account with robot name: <organization_name> + <robot_name>。
或者,如果您尝试创建名称与另一个机器人帐户相同的机器人帐户,您可能会收到以下出错信息: Error create robot account。
- 可选。您可以单击 Expand 或 Collapse 来显示有关机器人帐户的描述性信息。
- 可选。您可以点击 kebab 菜单 → Set repository 权限来更改机器人帐户的权限。此时会出现以下信息: Successfully updated repository permission。
可选。您可以点击机器人帐户的名称来获取以下信息:
- 机器人帐户 :选择此项获取机器人令牌。您可以点 Regenerate token 来重新 生成令牌。
- Kubernetes Secret :选择此项以 Kubernetes pull secret YAML 文件的形式下载凭证。
-
Podman: 选择它复制包含凭据的完整
podman login命令行。 -
Docker Configuration :选择此项复制包含凭据的完整
docker login命令行。
4.2. 使用 Red Hat Quay API 创建机器人帐户 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 创建机器人帐户。
先决条件
- 您已创建了 OAuth 访问令牌。
-
您已在
config.yaml文件中设置了BROWSER_API_CALLS_XHR_ONLY: false。
流程
输入以下命令,使用
PUT /api/v1/organization/{orgname}/robots/{robot_shortname}端点为机构创建新的机器人帐户:curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_name>"
$ curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_name>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "orgname+robot-name", "created": "Fri, 10 May 2024 15:11:00 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}{"name": "orgname+robot-name", "created": "Fri, 10 May 2024 15:11:00 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令为当前用户创建一个新的机器人帐户,其
PUT /api/v1/user/robots/{robot_shortname}端点:curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/user/robots/<robot_name>"
$ curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/user/robots/<robot_name>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "quayadmin+robot-name", "created": "Fri, 10 May 2024 15:24:57 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}{"name": "quayadmin+robot-name", "created": "Fri, 10 May 2024 15:24:57 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 批量管理机器人帐户存储库访问权限 复制链接链接已复制到粘贴板!
使用 Red Hat Quay v2 UI 管理批量、机器人帐户存储库访问权限。
先决条件
- 您已创建了机器人帐户。
- 您已在单个机构下创建多个软件仓库。
流程
- 在 Red Hat Quay v2 UI 登录页面上,单击导航窗格中的 Organizations。
- 在 Organizations 页面上,选择具有多个存储库的组织名称。单个机构下的存储库数量可在 Repo Count 列下找到。
- 在您的组织页面中,单击 Robot accounts。
- 对于将添加到多个软件仓库中的机器人帐户,点 kebab 图标 → Set repository 权限。
在 Set repository permissions 页面上,选中机器人帐户要添加到的存储库的框。例如:
- 设置机器人帐户的权限,例如 None、Read、Write、Admin。
- 单击保存。警告显示 Success alert: Successfully updated repository permission appears on Set repository permissions 页,确认更改。
- 返回到 Organizations → Robot 帐户 页面。现在,机器人帐户的 Repositories 列会显示机器人帐户已添加到的存储库数量。
4.4. 使用 UI 禁用机器人帐户 复制链接链接已复制到粘贴板!
Red Hat Quay 管理员可以禁止用户创建新的机器人帐户来管理机器人帐户。
机器人帐户对于存储库镜像是必需的。将 ROBOTS_DISALLOW 配置字段设置为 true 会中断镜像配置。用户镜像存储库不应在其 config.yaml 文件中将 ROBOTS_DISALLOW 设置为 true。这是一个已知问题,并将在以后的 Red Hat Quay 发行版本中解决。
使用以下步骤禁用机器人帐户创建。
先决条件
- 您已创建了多个机器人帐户。
流程
更新
config.yaml字段以添加ROBOTS_DISALLOW变量,例如:ROBOTS_DISALLOW: true
ROBOTS_DISALLOW: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启 Red Hat Quay 部署。
验证:创建新的机器人帐户
- 导航到您的 Red Hat Quay 存储库。
- 点存储库的名称。
- 在导航窗格中,单击 Robot Accounts。
- 单击 Create Robot Account。
-
输入机器人帐户的名称,例如 <
organization-name/username>+<robot-name>。 -
单击 Create robot account 以确认创建。此时会出现以下信息:
Cannot create robot account。机器人帐户已被禁用。请联系您的管理员。
验证:登录到机器人帐户
在命令行界面(CLI)中,输入以下命令尝试作为机器人帐户登录:
podman login -u="<organization-name/username>+<robot-name>" -p="KETJ6VN0WT8YLLNXUJJ4454ZI6TZJ98NV41OE02PC2IQXVXRFQ1EJ36V12345678" <quay-server.example.com>
$ podman login -u="<organization-name/username>+<robot-name>" -p="KETJ6VN0WT8YLLNXUJJ4454ZI6TZJ98NV41OE02PC2IQXVXRFQ1EJ36V12345678" <quay-server.example.com>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返回以下出错信息:
Error: logging into "<quay-server.example.com>": invalid username/password
Error: logging into "<quay-server.example.com>": invalid username/passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以传递
log-level=debug标志,以确认机器人帐户已被停用:podman login -u="<organization-name/username>+<robot-name>" -p="KETJ6VN0WT8YLLNXUJJ4454ZI6TZJ98NV41OE02PC2IQXVXRFQ1EJ36V12345678" --log-level=debug <quay-server.example.com>
$ podman login -u="<organization-name/username>+<robot-name>" -p="KETJ6VN0WT8YLLNXUJJ4454ZI6TZJ98NV41OE02PC2IQXVXRFQ1EJ36V12345678" --log-level=debug <quay-server.example.com>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... DEBU[0000] error logging into "quay-server.example.com": unable to retrieve auth token: invalid username/password: unauthorized: Robot accounts have been disabled. Please contact your administrator.
... DEBU[0000] error logging into "quay-server.example.com": unable to retrieve auth token: invalid username/password: unauthorized: Robot accounts have been disabled. Please contact your administrator.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. 使用 Red Hat Quay API 重新生成机器人令牌 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 重新生成机器人帐户令牌。
先决条件
- 您已创建了 OAuth 访问令牌。
-
您已在
config.yaml文件中设置了BROWSER_API_CALLS_XHR_ONLY: false。
流程
输入以下命令,使用
POST /api/v1/organization/{orgname}/robots/{robot_shortname}/regenerate端点为机构重新生成机器人令牌:curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate"
$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "test-org+test", "created": "Fri, 10 May 2024 17:46:02 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}{"name": "test-org+test", "created": "Fri, 10 May 2024 17:46:02 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用
POST /api/v1/user/robots/{robot_shortname}/regenerate端点为当前用户重新生成机器人令牌:curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate"
$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "quayadmin+test", "created": "Fri, 10 May 2024 14:12:11 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}{"name": "quayadmin+test", "created": "Fri, 10 May 2024 14:12:11 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. 使用 UI 删除机器人帐户 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay UI 删除机器人帐户。
流程
- 登录到您的 Red Hat Quay registry:
- 单击具有机器人帐户的组织名称。
- 单击 Robot accounts。
- 选中要删除的机器人帐户的框。
- 点 kebab 菜单。
- 点击 Delete。
-
在文本框中键入
confirm,然后单击 Delete。
4.7. 使用 Red Hat Quay API 删除机器人帐户 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 删除机器人帐户。
先决条件
- 您已创建了 OAuth 访问令牌。
-
您已在
config.yaml文件中设置了BROWSER_API_CALLS_XHR_ONLY: false。
流程
输入以下命令,使用
DELETE /api/v1/organization/{orgname}/robots/{robot_shortname}端点删除机构的机器人帐户:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_shortname>"
curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_shortname>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用 API 删除机器人帐户时,CLI 不会返回信息。要确认删除操作,您可以检查 Red Hat Quay UI,或者您可以输入以下
GET /api/v1/organization/{orgname}/robots命令,以查看是否为机器人帐户返回详情:curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"robots": []}{"robots": []}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用
DELETE /api/v1/user/robots/{robot_shortname}端点删除当前用户的机器人帐户:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用 API 删除当前用户的机器人帐户时,CLI 不会返回信息。要确认删除操作,您可以检查 Red Hat Quay UI,或者您可以输入以下
GET /api/v1/user/robots/{robot_shortname}命令,以查看是否为机器人帐户返回详情:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"message":"Could not find robot with specified username"}{"message":"Could not find robot with specified username"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 Clair 安全扫描程序 复制链接链接已复制到粘贴板!
Clair v4 (Clair)是一个开源应用程序,它利用静态代码分析来解析镜像内容和报告影响内容的漏洞。Clair 与 Red Hat Quay 打包,可用于独立和 Operator 部署。它可以在高度可扩展的配置中运行,根据企业环境,可以单独扩展组件。
有关 Clair 安全扫描程序的更多信息,请参阅 Red Hat Quay 中的 Clair 报告。