允许上载命名文件的IAM条件表达式



我有一个名为bucket-hr-data的bucket。其中有一个名为payroll的文件夹。

我正在尝试创建一个服务帐户sa-payroll,该帐户只能管理该文件夹下的文件/文件夹。

这就是我的IAM条件对于服务帐户的样子。

resource.name.extract("projects/_/buckets/bucket-hr-data/objects/{name}/")=='payroll'

这在大多数情况下都有效,除了当我尝试上传一个有名字的文件时。

gsutil cp/somefile.txt gs://bucket人力资源数据/工资单/工资单/-works如预期

gsutil cp/somefile.txtgs://bucket hr数据/工资单/工资单/data1/-按预期工作

gsutil cp/somefile.txt gs://bucket hr data/payroll/payroll/somefile.txt-意外失败,出现403

如何更改IAM条件表达式以使所有3个命令都能工作?

您的bucket的访问控制可以是细粒度的。IAM云存储策略的条件仅适用于使用统一存储桶级别访问的存储桶。

如果您想使用IAM条件在存储桶上配置访问,解决方案是启用统一存储桶级别的访问。

我的测试存储桶具有统一级别的访问权限,此IAM条件运行良好。将IAM条件更改为:

resource.name.startsWith("projects/_/buckets/BUCKET_NAME/objects/payroll/payroll/")

更新:检查您的IAM角色。如果您的服务帐户只有Storage Object CreatorStorage Object Viewer角色,则尝试上载bucket对象中已经存在的对象将返回403,因为对象创建者角色无权删除对象。

相关内容

  • 没有找到相关文章

最新更新