当前位置: 首页 > 知识库问答 >
问题:

Python中通过服务帐户访问Google云存储的权限

米俊喆
2023-03-14

我正试图从Python脚本中获得一个服务帐户来在Google Cloud Storage中创建Blob,但我遇到了凭据问题。

"home/user/.config/gcloud/service_admin.json"
 roles/viewer, roles/storage.admin,  roles/resourcemanager.projectCreator, roles/billing.user
from google.cloud import storage
import google.auth

credentials, project = google.auth.default()
client = storage.Client('myproject', credentials=credentials)
bucket = client.get_bucket('my_bucket')
google.api_core.exceptions.Forbidden: 403 GET
https://www.googleapis.com/storage/v1/b/my_bucket?projection=noAcl:
s_account@myproject.iam.gserviceaccount.com does not have
storage.buckets.get access to my_bucket

如果我将环境变量设置为

export GOOGLE_APPLICATION_CREDENTIALS="home/user/.config/gcloud/service_admin.json"

然后重新运行脚本。但是,我希望它在创建帐户的脚本的一个实例中运行,并继续在桶中创建必要的文件。如果我知道我的json凭据文件在哪里,我如何访问my_bucket。

共有1个答案

宇文嘉勋
2023-03-14

请尝试服务器到服务器身份验证文档中的以下示例:

from google.cloud import storage

# Explicitly use service account credentials by specifying the private key file.
storage_client = storage.Client.from_service_account_json('service_account.json')

# Make an authenticated API request
buckets = list(storage_client.list_buckets())
print(buckets)

这样,您就可以在代码中直接指向包含服务帐户密钥的文件。

 类似资料:
  • 我已经创建了一个Google云平台服务帐户,,具有存储管理员()角色。 现在,我希望限制此帐户,使其只能访问特定的谷歌云存储(GCS)存储桶()。 现在的问题是,可以访问所有GCS存储桶。我无法从其他GCS存储桶中删除,因为被继承。 那我该怎么办?

  • 我正在尝试使用django-storages为带有服务帐户json文件的google云存储桶授予权限。但是,只有当我向所有具有对象视图权限的用户授予访问权限时,才能访问桶中的项目。我如何限制桶的公共访问。

  • 我想使用gsutil和服务帐户在命令行上访问Goolge播放报告。有一个云存储URI,格式为gs://bucket\u name,我可以用我的用户帐户列出和下载报告,但不能用我创建的服务帐户。错误总是相同的: 我已向服务帐户授予了所有必需的权限,因此我不明白为什么用户帐户可以使用,而服务帐户却无法使用。 所以如果你知道如何帮助我,我会非常感谢你。

  • 我们正在尝试创建一个与谷歌管理SDK的集成,以便能够检索,更新和创建帐户在我们的领域。但是,我们不断收到一个403错误,表明我们没有被授权访问Resource/API。 我们正在使用从一个服务帐户获得的凭据,该帐户启用了域范围的授权,并且具有以下两个作用域:https://www.googleapis.com/auth/admin.directory.user.readonly,https://w

  • 注意:驱动器文件夹“12 ccq 1 ggotydw _ ox 09 tzf 5 bdgapajb 0 ar”已与服务帐户电子邮件ID共享。 以下是控制台日志的一些结果,反映了失败的位置。 token * * * * * * * * * { " access _ token ":" * * * * * * * * * * * * * "," token_type":"Bearer "," expi

  • 我正在调查AWS/Google云基础架构系统是否可以混合,我的要求之一是从一个系统到另一个系统的安全和简单的身份验证。目前,我需要从一个Google Cloud VM实例连接到一个受限的AWS S3 bucket。 我的问题通常是:有没有办法做到这一点,什么是最好的方法。我相信每个人都希望有机会使用多个云提供商为他们的基础设施提供高安全性、易用性和维护性。 经过一些研究,我发现唯一可能的方法是通过