错误:(gcloud.builds.submit)HTTPError 403:***没有storage.objects.



我有一个Github操作将我的源代码提交给Google Cloud Build。提交的文件确实有效。正在触发云构建作业。

但是Github操作退出时出现错误。这是错误消息:

ERROR: (gcloud.builds.submit) HTTPError 403: <?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message><Details>*** does not have storage.objects.get access to the Google Cloud Storage object.</Details></Error>

我正在使用自定义服务帐户。这些是我分配给它的角色。我不知道为什么仍然抛出错误。

Cloud Build Service Account
Cloud Build Viewer
Environment User and Storage Object Viewer
Cloud Storage for Firebase Viewer
Storage Object Viewer

我在另一个问题中读到,提供角色Viewer已经解决了这个问题,但一个刚刚称为Viewer的角色并不存在——至少在我的角色列表中不存在。

一个小问题:

有没有办法检查给定的云操作需要什么角色?例如,在我的日志storage.objects.get中看到这一点,我想看看哪些角色可以访问它。

在GCP中的IAM角色上,确保已通过roles/storage.objectViewerstorage.objects.get添加到正确的用户/帐户。您可以在此处找到列出的所有IAM角色:https://cloud.google.com/storage/docs/access-control/iam-roles

如果所有角色都签出了,那么很可能是服务帐户的身份验证问题,只是使用旧的或不正确的凭据进行身份验证。

OP提到的另一个问题是引用角色roles/viewer,它是项目所有资源中的查看器,而不是像roles/storage.objectViewer这样更具体的查看器角色。

请注意,每个角色中的权限数量非常不同,roles/viewer角色中可能有一个权限在roles/storage.objectViewer中不可用,但这是构建工作所必需的。

我猜在某个时刻,帐户会尝试执行buckets.get,由于roles/storage.objectViewer角色没有明确的storage.buckets.get权限,因此会出现访问错误。该权限授予roles/viewer项目角色1

无论如何,roles/viewer角色可以通过这里的控制台找到,也可以通过带有以下命令的SDK找到:

gcloud iam service-accounts add-iam-policy-binding <YOUR_SERVICE_ACCOUNT>@<YOUR_PROJECT>.iam.gserviceaccount.com --member='<YOUR_SERVICE_ACCOUNT>@<YOUR_PROJECT>.iam.gserviceaccount.com' --role='roles/viewer'

1我只是猜测,但缺少的权限可能是roles/viewer可用的数百个权限中的任何一个,也可能是其他角色缺少的权限。

对于您的次要问题,您可以直接从控制台使用IAM策略疑难解答。设置您的主体(电子邮件(、资源和权限。你会立刻知道它是否正常。

然而,正如DIGI所说,我知道你没有使用正确的凭据。

相关内容

  • 没有找到相关文章

最新更新