下表列出在特定資源上執行各項 Cloud Storage gsutil 指令所需的 Identity and Access Management (IAM) 權限。IAM 權限會組合成角色。您將角色授予使用者和群組。
這個頁面也會提供下列資訊:
| 指令 | 子指令 | 必要 IAM 權限 |
|---|---|---|
autoclass |
get |
storage.buckets.get |
autoclass |
set |
storage.buckets.update |
cat |
storage.objects.get |
|
compose |
storage.objects.getstorage.objects.createstorage.objects.delete1 |
|
config |
無 | |
cors |
get |
storage.buckets.get |
cors |
set |
storage.buckets.update |
cp |
storage.objects.list2storage.objects.getstorage.objects.createstorage.objects.delete3 |
|
defstorageclass |
get |
storage.buckets.get |
defstorageclass |
set |
storage.buckets.update |
du |
storage.objects.get |
|
hash |
storage.objects.get |
|
help |
無 | |
hmacKeys |
create |
storage.hmacKeys.create |
hmacKeys |
delete |
storage.hmacKeys.delete |
hmacKeys |
get |
storage.hmacKeys.get |
hmacKeys |
list |
storage.hmacKeys.list |
hmacKeys |
update |
storage.hmacKeys.update |
iam |
get |
storage.buckets.getstorage.buckets.getIamPolicy |
iam |
set或ch |
storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.update |
kms |
authorize |
resourceManager.projects.getiam.serviceAccounts.create4cloudkms.cryptoKeys.setIamPolicy |
kms |
encryption |
storage.buckets.get |
kms |
encryption -d |
storage.buckets.getstorage.buckets.update |
kms |
encryption -k |
storage.buckets.getstorage.buckets.updateresourceManager.projects.get5cloudkms.cryptoKeys.setIamPolicy5 |
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 (列出 bucket) |
storage.buckets.liststorage.buckets.getIamPolicy6 |
|
ls (列出物件) |
storage.objects.liststorage.objects.getIamPolicy7 |
|
ls -b |
storage.buckets.getstorage.buckets.getIamPolicy6 |
|
mb |
storage.buckets.create |
|
mv |
storage.objects.list2 (目的地 bucket)storage.objects.get (來源物件)storage.objects.create (目的地 bucket)storage.objects.delete (來源 bucket)storage.objects.delete3 (目的地 bucket) |
|
notification |
create |
storage.buckets.updatepubsub.topics.get (適用於包含 Pub/Sub 主題的專案)pubsub.topics.create8 (適用於包含 Pub/Sub 主題的專案)pubsub.topics.getIamPolicy (適用於接收通知的 Pub/Sub 主題)pubsub.topics.setIamPolicy8 (適用於接收通知的 Pub/Sub 主題) |
notification |
create -s |
storage.buckets.update |
notification |
delete |
storage.buckets.getstorage.buckets.update |
notification |
list |
storage.buckets.get |
pap |
get |
storage.buckets.get |
pap |
set |
storage.buckets.getstorage.buckets.updatestorage.buckets.setIamPolicy |
perfdiag |
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.liststorage.objects.get |
|
rb |
storage.buckets.delete |
|
requesterpays |
get |
storage.buckets.get |
requesterpays |
set on |
storage.buckets.update |
requesterpays |
set off |
storage.buckets.updateresourcemanager.projects.createBillingAssignment9 |
retention |
clear、event-default、lock 或 set。 |
storage.buckets.update |
retention |
event或temp |
storage.objects.getstorage.objects.liststorage.objects.update |
retention |
get |
storage.buckets.get |
rewrite -k |
storage.objects.liststorage.objects.getstorage.objects.createstorage.objects.delete |
|
rewrite -s |
storage.objects.liststorage.objects.getstorage.objects.createstorage.objects.deletestorage.objects.update |
|
rm |
storage.objects.delete |
|
rm -a |
storage.objects.deletestorage.objects.list |
|
rm -r (刪除 bucket) |
storage.buckets.deletestorage.objects.deletestorage.objects.list |
|
rpo |
get |
storage.buckets.get |
rpo |
set |
storage.buckets.getstorage.buckets.update |
rsync |
storage.objects.getstorage.objects.createstorage.objects.delete11storage.objects.list |
|
rsync -n |
storage.objects.list (用於來源和目的地值區) |
|
setmeta |
storage.objects.getstorage.objects.liststorage.objects.update |
|
signurl |
無。不過,使用金鑰做為這個指令一部分的服務帳戶,必須具備執行要求 (編碼為經簽署的網址) 的權限。 | |
stat |
storage.objects.get |
|
test |
無 | |
ubla |
set |
storage.buckets.getstorage.buckets.update |
ubla |
get |
storage.buckets.get |
update |
無 | |
version |
無 | |
versioning |
get |
storage.buckets.get |
versioning |
set |
storage.buckets.update |
web |
get |
storage.buckets.get |
web |
set |
storage.buckets.update |
1 只有在組合物件與 bucket 中現有物件同名時,才需要這項權限。
2 只有在指令中的目的地包含物件路徑時,才需要這項權限。
3只有在使用平行複合上傳,或未採用 -n 旗標,但插入的物件與值區中現有物件同名時,才需要這項權限。
4只有在您目前沒有與專案有關的 Cloud Storage 服務帳戶時,才需要這項權限。
5如果您使用 gsutil kms encryption -k,且專案的服務帳戶沒有存取所要求 Cloud KMS 金鑰的權限,gsutil 會執行 gsutil kms authorize,將必要權限授予服務帳戶。
6 只有在您希望詳細資料包含 IAM 政策時,才需要這項權限。
7 只有在您希望詳細資料包含 IAM 政策時,才需要這項權限,且不適用於已啟用統一 bucket 層級存取權的 bucket。
8如果主題已存在且相關服務帳戶可存取該主題,則不需要這些權限。
9只有在您的要求中未包含計費專案時,才需要這項權限。詳情請參閱要求者付費的使用及存取需求一節。
10如果指令不會變更 bucket 設定,則不需要這項權限。
11:只有在使用 -d 旗標,或是插入與值區中現有物件同名但資料不同的物件時,才需要這項權限。
與 ACL 相關的方法
下表列出執行 gsutil 指令所需的 IAM 權限,這些指令專門用於管理 ACL。這些指令僅適用於已停用統一值區層級存取權的值區。
| 指令 | 子指令 | 動作所需資源 | 必要 IAM 權限 |
|---|---|---|---|
acl |
get |
bucket | storage.buckets.getstorage.buckets.getIamPolicy |
acl |
set或ch |
bucket | storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.update |
acl |
get |
物件 | storage.objects.getstorage.objects.getIamPolicy |
acl |
set或ch |
物件 | storage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update |
cp -a或cp -p |
物件 | storage.objects.listastorage.objects.getstorage.objects.createstorage.objects.deletebstorage.objects.getIamPolicystorage.objects.setIamPolicy |
|
defacl |
get |
bucket | storage.buckets.getstorage.buckets.getIamPolicy |
defacl |
set或ch |
bucket | storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.update |
iam |
get |
物件 | storage.objects.getstorage.objects.getIamPolicy |
iam |
set或ch |
物件 | storage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update |
mv -a或mv -p |
物件 | storage.objects.listastorage.objects.getstorage.objects.createstorage.objects.deletestorage.objects.deletebstorage.objects.getIamPolicystorage.objects.setIamPolicy |
|
rsync -arsync -p |
物件 | storage.objects.getstorage.objects.createstorage.objects.deletecstorage.objects.liststorage.objects.getIamPolicystorage.objects.setIamPolicy |
a 只有在指令中的目的地包含物件路徑時,才需要這項權限。
b只有在使用平行複合上傳,或未使用 -n 旗標,但插入的物件與 bucket 中現有物件同名時,才需要這項權限。
c只有在使用 -d 旗標,或插入與 bucket 中現有物件同名但資料不同的物件時,才需要這項權限。
-u 頂層旗標
如果您使用 -u 全域旗標指定應為要求付費的專案,則必須擁有指定專案的 serviceusage.services.use 權限。舉例來說,存取已啟用要求者付費功能的 bucket 時,會使用 -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 會在嘗試將 ACL 套用至您不具備權限的物件時,記錄所發生的錯誤,但同時又會繼續作業。
後續步驟
- 在專案和 bucket 層級指派 IAM 角色。
- 查看包含 Cloud Storage 權限的 IAM 角色。