无法将图片推送到Google容器注册表-调用者没有权限“ storage.buckets.get”

Tan*_*uka 5 docker google-cloud-platform google-container-registry google-cloud-iam

我正在研究将图像推送到gc容器注册表的bitbucket管道。我已经创建了一个具有Storage Admin角色的服务帐户。(bitbucket-authorization@mgcp-xxxx.iam.gserviceaccount.com)

在此处输入图片说明

gcloud auth activate-service-account --key-file key.json
gcloud config set project mgcp-xxxx
gcloud auth configure-docker --quiet
docker push eu.gcr.io/mgcp-xxxx/image-name
Run Code Online (Sandbox Code Playgroud)

尽管登录成功,但我得到:项目'mgcp-xxxx'的令牌交换失败。呼叫者没有权限“ storage.buckets.get”。要配置权限,请按照以下说明进行操作:https : //cloud.google.com/container-registry/docs/access-control

任何人都可以对我所缺少的提出建议吗?

谢谢!

Shi*_*ine 17

对于一直在这里阅读的任何人。这里的其他建议对我没有帮助,但是我发现还需要Cloud Service Build Account角色。然后storage.buckets.get消失。

这是我推送 docker 镜像的最小角色 (2) 设置: 自动化角色

但是,Cloud Service Build Account角色添加了更多的权限,而storage.buckets.get. 可以在此处找到确切的权限。

注意:我很清楚Cloud Service Build Account角色也添加了storage.objects.get权限。但是,添加roles/storage.objectViewer并没有解决我的问题。不管它有没有得到storage.objects.get许可。

如果上述方法不起作用,您可能激活了错误的帐户。这可以通过以下方式解决:

gcloud auth activate-service-account --key-file key.json
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可能需要使用以下内容设置 docker 凭证助手:

gcloud auth configure-docker --project <project_name>
Run Code Online (Sandbox Code Playgroud)

最后一点。在设置角色和通过gcloud工具工作之间似乎有一些延迟。然而,这是最小的,想想不到一分钟的范围。

干杯

  • 谢谢你!不确定他们是否重命名了它,但现在它是“云构建服务帐户”而不是“云服务构建帐户”。如果您需要从命令行或API进行设置,则角色名称为“roles/cloudbuild.builds.builder” (2认同)

Pat*_*ins 12

您需要登录您的帐户并将项目设置为您想要的项目。您很有可能只是没有登录。

gcloud auth login

gcloud config set project <PROJECT_ID_HERE>


Tan*_*uka 6

过去,我有另一个具有相同名称和不同权限的服务帐户。发现服务帐户名称已缓存后,我创建了一个具有不同名称的新服务帐户,并且该帐户已正常运行。


vit*_*oji 6

这些是逐步命令,让我将第一个容器推送到 GCE 私有存储库:

export PROJECT=pacific-shelter-218
export KEY_NAME=key-name1
export KEY_DISPLAY_NAME='My Key Name'

sudo gcloud iam service-accounts create ${KEY_NAME} --display-name ${KEY_DISPLAY_NAME}
sudo gcloud iam service-accounts list
sudo gcloud iam service-accounts keys create --iam-account ${KEY_NAME}@${PROJECT}.iam.gserviceaccount.com key.json
sudo gcloud projects add-iam-policy-binding ${PROJECT} --member serviceAccount:${KEY_NAME}@${PROJECT}.iam.gserviceaccount.com --role roles/storage.admin
sudo docker login -u _json_key -p "$(cat key.json)" https://gcr.io
sudo docker push  gcr.io/pacific-shelter-218/mypcontainer:v2
Run Code Online (Sandbox Code Playgroud)


Pav*_*tov 5

文档似乎已过时 https://cloud.google.com/container-registry/docs/access-control

注意:推送镜像需要对象读写权限以及storage.buckets.get权限。存储对象管理员角色不包含 storage.buckets.get 权限,但存储旧存储桶写入者角色包含。

Storage Legacy Bucket Writer角色不再可用。

为了解决权限问题,我向服务帐户添加了两个角色

  • 存储管理员
  • 存储对象查看器(具有 storage.buckets.get 权限)