【发布时间】:2021-10-25 12:28:55
【问题描述】:
我想在 Google Cloud 上拥有一个只能将对象写入特定存储 Cloud Storage 存储分区的服务帐号。我已经使用部署管理器创建了服务帐户,现在尝试使用必要的绑定创建一个存储桶
def GenerateConfig(context):
"""Generate configuration for a cloud storage bucket for experiment data."""
resources = []
resources.append({
'type': 'storage.v1.bucket',
'name': 'mybucket',
'properties': {
'predefinedAcl': 'projectPrivate',
'projection': 'full',
'location': 'europe-west2',
'storageClass': 'STANDARD',
'bindings': {
'role': 'roles/storage.objectCreator',
'member': 'serviceAccount:my-service@my-project.iam.gserviceaccount.com',
}
}
})
return {'resources': resources}
如果我使用部署管理器创建此部署,我可以看到新存储桶,并且我可以看到与部署关联的存储桶具有绑定
member: serviceAccount:my-service@my-project.iam.gserviceaccount.com
role: roles/storage.objectCreator
但是,如果我使用此服务帐户将文件写入此云存储桶,则会失败并显示 403:
"errors": [
{
"message": "my-service@my-project.iam.gserviceaccount.com does not have storage.objects.create access to the Google Cloud Storage object.",
"domain": "global",
"reason": "forbidden"
}
]
如果我随后使用策略分析器查看此服务帐户具有哪些权限,则不会返回任何内容。 我误解了什么?是否无法创建只能访问某些存储桶的服务帐户,或者它必须有权访问项目中的所有存储桶?
【问题讨论】:
标签: google-cloud-platform google-cloud-storage service-accounts google-iam google-deployment-manager