gsutil 命令的 Cloud IAM 权限

下表列出了在给定资源上运行每个 Cloud Storage gsutil 命令所需的 Cloud Identity and Access Management (Cloud IAM) 权限。如需查看有关使用通配符、-r 标志和 -m 标志的说明,请参阅表格下面的各节内容。

命令 子命令 处理的资源 必需的 Cloud IAM 权限
acl get 存储分区 storage.buckets.get
storage.buckets.getIamPolicy
acl setch 存储分区 storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
acl get 对象 storage.objects.get
storage.objects.getIamPolicy10
acl setch 对象 storage.objects.get
storage.objects.getIamPolicy10
storage.objects.setIamPolicy10
storage.objects.update
bucketpolicyonly set 存储分区 storage.buckets.setIamPolicy2
bucketpolicyonly get 存储分区 storage.buckets.get
cat 对象 storage.objects.get
compose 对象 storage.objects.get(针对源对象)
storage.objects.create(针对目标存储分区)
storage.objects.delete1(针对目标存储分区)
config
cors get 存储分区 storage.buckets.get
cors set 存储分区 storage.buckets.update
cp 对象 storage.objects.list2(针对目标存储分区)
storage.objects.get(针对源对象)
storage.objects.create(针对目标存储分区)
storage.objects.delete1(针对目标存储分区)
storage.objects.getIamPolicy3、10(针对源对象)
storage.objects.setIamPolicy3、10(针对目标存储分区)
cp -n 对象 storage.objects.list2(针对目标存储分区)
storage.objects.get(针对源对象和目标存储分区)
storage.objects.create(针对目标存储分区)
storage.objects.getIamPolicy3、10(针对源对象)
storage.objects.setIamPolicy3、10(针对目标存储分区)
defacl get 存储分区 storage.buckets.get
storage.buckets.getIamPolicy
defacl setch 存储分区 storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
defstorageclass get 存储分区 storage.buckets.get
defstorageclass set 存储分区 storage.buckets.update
du 对象 storage.objects.get
hash 对象 storage.objects.get
help
hmacKeys create HMAC 密钥 storage.hmacKeys.create
hmacKeys delete HMAC 密钥 storage.hmacKeys.delete
hmacKeys get HMAC 密钥 storage.hmacKeys.get
hmacKeys list HMAC 密钥 storage.hmacKeys.list
hmacKeys update HMAC 密钥 storage.hmacKeys.update
iam get 存储分区 storage.buckets.get
storage.buckets.getIamPolicy
iam setch 存储分区 storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
iam get 对象 storage.objects.get
storage.objects.getIamPolicy10
iam setch 对象 storage.objects.get
storage.objects.getIamPolicy10
storage.objects.setIamPolicy10
storage.objects.update
kms authorize 项目 resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKey.setIamPolicy(针对授权的 Cloud KMS 密钥)
kms encryption 存储分区 storage.buckets.get
kms encryption -d 存储分区 storage.buckets.get
storage.buckets.update
kms encryption -k 存储分区、项目7 storage.buckets.get
storage.buckets.update
resourceManager.projects.get7
cloudkms.cryptoKey.setIamPolicy7
kms serviceaccount 项目 resourceManager.projects.get
label get 存储分区 storage.buckets.get
label set/ch 存储分区 storage.buckets.update
lifecycle get 存储分区 storage.buckets.get
lifecycle set/ch 存储分区 storage.buckets.update
logging get 存储分区 storage.buckets.get
logging set 存储分区 storage.buckets.update
ls 项目 storage.buckets.list
storage.buckets.get5
storage.buckets.getIamPolicy6
ls 存储分区、对象 storage.objects.list
storage.objects.get5
storage.objects.getIamPolicy6、10
ls -b 存储分区 storage.buckets.get
storage.buckets.getIamPolicy6
mb 存储分区 storage.buckets.create
mv 对象 storage.objects.list2(针对目标存储分区)
storage.objects.get(针对源对象)
storage.objects.create(针对目标存储分区)
storage.objects.delete(针对源存储分区)
storage.objects.delete1(针对目标存储分区)
storage.objects.getIamPolicy3、10(针对源对象)
storage.objects.setIamPolicy3、10(针对目标存储分区)
mv -n 对象 storage.objects.list2(针对目标存储分区)
storage.objects.get(针对源对象和目标存储分区)
storage.objects.create(针对目标存储分区)
storage.objects.delete(针对源存储分区)
storage.objects.getIamPolicy3、10(针对源对象)
storage.objects.setIamPolicy3、10(针对目标存储分区)
notification create 存储分区 storage.buckets.update
pubsub.topics.get(针对包含发布/订阅主题的项目)
pubsub.topics.create8(针对包含发布/订阅主题的项目)
pubsub.topics.getIamPolicy(针对接收通知的发布/订阅主题)
pubsub.topics.setIamPolicy8(针对接收通知的发布/订阅主题)
notification create -s 存储分区 storage.buckets.update
notification delete 存储分区 storage.buckets.update
notification list 存储分区 storage.buckets.get
notification watchbucket 存储分区 storage.buckets.update
notification stopchannel 存储分区 storage.buckets.update
perfdiag 存储分区 storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb 存储分区 storage.buckets.delete
requesterpays get 存储分区 storage.buckets.get
requesterpays set on 存储分区 storage.buckets.get
storage.buckets.update
requesterpays set off 存储分区 storage.buckets.get
storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clearevent-defaultlockset 存储分区 storage.buckets.update
retention eventtemp 对象 storage.objects.get
storage.objects.list
storage.objects.update
retention get 存储分区 storage.buckets.get
rewrite -k 对象 storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s 对象 storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm 存储分区 storage.buckets.delete
storage.objects.delete
storage.objects.list
rm 对象 storage.objects.delete
rsync 对象 storage.objects.get(针对源对象和目标存储分区)
storage.objects.create(针对目标存储分区)
storage.objects.delete1(针对目标存储分区)
storage.objects.list(针对源和目标存储分区)
storage.objects.getIamPolicy3、10(针对源对象)
storage.objects.setIamPolicy3、10(针对目标存储分区)
rsync -d 对象 storage.objects.get(针对源对象和目标存储分区)
storage.objects.create(针对目标存储分区)
storage.objects.delete(针对目标存储分区)
storage.objects.list(针对源和目标存储分区)
storage.objects.getIamPolicy3、10(针对源对象)
storage.objects.setIamPolicy3、10(针对目标存储分区)
rsync -n 对象 storage.objects.list(针对源和目标存储分区)
setmeta 对象 storage.objects.get
storage.objects.list
storage.objects.update
signurl 无;但是,与请求关联的服务帐号必须具有 storage.objects.get 权限。
stat 对象 storage.objects.get
test
update
version
versioning get 存储分区 storage.buckets.get
versioning set 存储分区 storage.buckets.update
web get 存储分区 storage.buckets.get
web set 存储分区 storage.buckets.update

1 仅当插入的对象与存储分区中已存在的对象具有相同的名称时,才需要此权限。

2 仅当命令中的目标包含对象路径时,才需要此权限。

3 仅当命令中使用 -a-p 标志时,才需要此权限。

4 仅当不存在与项目关联的 Cloud Storage 服务帐号时,才需要此权限。

5 仅当命令中使用 -L-l 标志时,才需要此权限。

6 仅当您要在详细信息中添加 Cloud IAM 政策时,才需要此权限。

7 如果您使用 gsutil kms encryption -k 且您项目的服务帐号没有访问所请求 Cloud KMS 密钥的权限,gsutil 会运行 gsutil kms authorize,以便为您的服务帐号授予所需的权限。

8 如果主题已存在且相关服务帐号可以访问该主题,则不需要这些权限。

9 仅当您的请求中未包含结算项目时,才需要此权限。如需了解详情,请参阅请求者付款功能的使用和访问要求

10 此权限不适用于启用了仅限存储分区政策功能的存储分区。

-u 顶级标志

如果您使用 -u 顶级标志指定用于结算请求费用的项目,则必须对指定的项目具有 serviceusage.services.use 权限。例如,在访问启用了请求者付款功能的存储分区时,会用到 -u 标志。

通配符和递归标志

如果在命令中使用 URI 通配符选择多个对象,则您必须对包含这些对象的存储分区具有 storage.objects.list 权限。类似地,如果在命令中使用 URI 通配符选择多个存储分区,则您必须对包含这些存储分区的项目具有 storage.buckets.list 权限。

如果您使用递归标志(-r-R),那么,除了您正在使用的特定命令所需的权限之外,您还必须具有相关存储分区的 storage.objects.list 权限。

-m 顶级标志

通常,如果您使用作用于多个对象或存储分区的 gsutil 命令,该命令会在出现第一个错误时失败。但是,当您使用 -m 顶级标志时,gsutil 会记录它遇到的任何错误并继续执行操作。

例如,假设您尝试对一系列对象执行 acl set 命令,但您仅有权对其中部分对象执行该命令。如果不使用 -m 标志,gsutil 会一直成功应用 ACL,直到到达您无权应用 ACL 的对象为止。这时,gsutil 将失败。如果您使用 -m 标志,gsutil 会记录出现的错误(gsutil 在尝试将 ACL 应用于您没有权限的对象时,会出现此类错误),但是,它不会失败,而是会继续执行操作。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage
需要帮助?请访问我们的支持页面