我试图计算服务帐户向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也可以,但我用的是一个传统角色,我不确定我应该继续做下去。在
这里的最佳实践是什么?在
云存储权限由Cloud IAM和ACLs共同管理。实际上,您可以同时使用这两种方法来允许服务帐户向bucket写入数据。这是通过将
WRITER
权限设置为所需的服务帐户来完成的,例如:在将此更改应用于ACL之后,我能够上载到GCS bucket。你可以找到更多的例子here。在
如果您希望尽可能限制,可以添加以下两个权限:
roles/storage.objectCreator
Viewer
这允许被授予人执行以下操作:
更多详细信息:https://cloud.google.com/storage/docs/access-control/iam-roles
相关问题 更多 >
编程相关推荐