![具有存储管理员角色的服务帐号没有 storage.buckets.get 访问权限](https://linux22.com/image/781029/%E5%85%B7%E6%9C%89%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86%E5%91%98%E8%A7%92%E8%89%B2%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%B8%90%E5%8F%B7%E6%B2%A1%E6%9C%89%20storage.buckets.get%20%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90.png)
我正在尝试使用 python 从 kubernetes 上的 pod 获取 gcp 上的存储桶。
现在,该 pod 上的服务帐户具有存储管理员的角色,但由于某种原因,当我尝试访问该存储桶时仍然会出现异常。
google.api_core.exceptions.Forbidden: 403 GET https://www.googleapis.com/storage/v1/b/<bucket_name>?projection=noAcl: 874<principal> does not have storage.buckets.get access to the Google Cloud Storage bucket.
代码:
client = storage.Client(project='<project-id>')
client.get_bucket(<bucket_name>)
有人知道为什么会发生这样的事情吗?它应该在存储方面具有最高优先级...
答案1
此错误可能以两种方式发生,请查看此解决方案并进行相应检查:
1.storage.objects.get是来自GCS的查看文件的需求,但是看起来您的用户账户或邮箱已经有正确的权限。
要检查权限,请按照以下步骤操作:
复制您的已验证 URL 并将其粘贴到任何网站上并进行搜索。如果您当前的帐户没有正确的权限,则将返回 @Gmail-account 没有对 Google Cloud Storage 对象的 storage.objects.get 访问权限,或者您可以访问存储桶详细信息的权限以检查您的电子邮件和服务是否在那里并且具有正确的角色。
- 每一个存储桶名称必须是唯一的。这意味着即使您没有名为“ABC”的存储桶,其他人也会拥有它。您可以通过尝试创建一个具有该名称的存储桶来检查这是否属实,您将收到一条消息,提示存储桶名称已被占用。这就是您收到 403 错误的原因。该存储桶属于其他人,您无权访问它。