用Python编写GCS bucket存储.objectAdmin权限

2024-05-16 19:48:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算服务帐户向GCS存储桶写入文件所需的最小权限集。我想我可以存储.objectAdmin,但是使用为pythonsdk提供的示例代码,它将失败,并出现错误:my-service-account@my-project.googleapis.com does not have storage.buckets.get access to my-bucket

client = _get_storage_client()
bucket = client.bucket(current_app.config['CLOUD_STORAGE_BUCKET'])
blob = bucket.blob(filename)

blob.upload_from_string(
    file_stream,
    content_type=content_type)

这是因为客户端.bucket调用实际上从bucket读取元数据,这存储.objectAdmin不同意。当我使用时它会自动修复存储管理权限,但这也允许帐户删除整个bucket,这是我不想要的。添加存储.legacyBucketReader也可以,但我用的是一个传统角色,我不确定我应该继续做下去。在

这里的最佳实践是什么?在


Tags: 文件client权限示例getbucketmytype
2条回答

云存储权限由Cloud IAMACLs共同管理。实际上,您可以同时使用这两种方法来允许服务帐户向bucket写入数据。这是通过将WRITER权限设置为所需的服务帐户来完成的,例如:

gsutil acl ch -u my-service-account:W gs://my-bucket

在将此更改应用于ACL之后,我能够上载到GCS bucket。你可以找到更多的例子here。在

如果您希望尽可能限制,可以添加以下两个权限:

  • roles/storage.objectCreator
  • Viewer

这允许被授予人执行以下操作:

  • 可以创建新对象。在
  • 桶可以列出
  • 还可以在列出时查看存储桶元数据(ACL除外)。在

更多详细信息:https://cloud.google.com/storage/docs/access-control/iam-roles

相关问题 更多 >