我有一个 Google 服务帐户 (GSA),我试图用它来列出 docker 映像。例如:
curl -sL https://us-central1-docker.pkg.dev/v2/_catalog --user "_json_key_base64:${GSA_KEY_B64?}"
{
"repositories" : []
}
我希望 GSA 仅在特定注册表上有
roles/artifactregistry.reader
,这对于拉取特定图像来说很好,但会导致空的 _catalog。我试过:
roles/artifactregistry.reader
--> 空结果roles/viewer
--> 空结果roles/artifactregistry.reader
-> 空结果roles/viewer
整个GCP项目 -> 结果!(但这在我看来太粗糙了)我将 viewer 角色上的 artifactregistry.* 权限与 ArtifiactRegistry Reader 角色进行了比较,我看到的唯一真正区别是
artifactregistry.repositories.getIamPolicy
。我在 访问控制文档中没有看到任何特定于
_catalog
的内容。
那么 在
_catalog
API 中列出存储库所需的细粒度权限/角色是什么?
要使用
v2/_catalog
API,您需要 2 个角色:
roles/artifactregistry.reader
在项目级别或特定工件注册表上roles/browser
在项目层面。特别是您需要许可resourcemanager.projects.get
。这允许检索项目元数据(包括项目级资源列表)。此权限包含在 +/- 1700 个角色中的 1000 多个角色中
可用的角色,因此如果用户/GSA 是,通常您不会遇到这种情况
分配至少 1 个项目角色。