You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用GCP Artifact Registry的Docker Registry v2 _catalog API需何种IAM角色?

调用Artifact Registry /_catalog API的细粒度权限需求

问题背景

使用Google服务账号(GSA)执行以下命令调用Artifact Registry的/_catalog接口,尝试列出仓库:

curl -sL https://us-central1-docker.pkg.dev/v2/_catalog --user "_json_key_base64:${GSA_KEY_B64?}"

返回结果为空数组:

{
   "repositories" : []
}

已测试的权限配置效果:

  • 特定仓库的roles/artifactregistry.reader → 返回空结果
  • 特定仓库的roles/viewer → 返回空结果
  • 整个GCP项目的roles/artifactregistry.reader → 返回空结果
  • 整个GCP项目的roles/viewer → 成功获取结果(但权限粒度过粗)

对比角色权限后发现,Viewer角色比Artifact Registry Reader多了artifactregistry.repositories.getIamPolicy,但官方文档未明确/_catalog对应的权限要求,需确定该接口所需的细粒度权限/角色。

解决方案

调用/_catalog接口列出仓库的核心权限是**artifactregistry.repositories.list**,该权限为项目级权限,需在GCP项目层面授予。

权限与角色说明

  1. 权限本质:/_catalog接口的作用是枚举指定区域内项目下的所有仓库,属于项目级别的资源列表操作,因此需要项目级的artifactregistry.repositories.list权限,而非单个仓库的权限。
  2. 权限配置选项:
    • 预定义角色:roles/artifactregistry.repoAdmin包含artifactregistry.repositories.list权限,但同时附带仓库管理权限,适合需要完整仓库管理能力的场景。
    • 自定义角色:若需最小权限,可创建仅包含artifactregistry.repositories.list,加上你需要的仓库读取权限(如artifactregistry.repositories.get、artifactregistry.versions.list等)的自定义角色,实现最细粒度的权限控制。

验证逻辑

项目级roles/viewer能成功返回结果,是因为该角色默认包含了artifactregistry.repositories.list这个项目级枚举权限;而roles/artifactregistry.reader仅拥有单个仓库的读取权限,不具备项目级的仓库列表权限,因此调用/_catalog会返回空结果。

内容的提问来源于stack exchange,提问作者Matthew Monaco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:33:33