Tabel berikut mencantumkan izin Identity and Access Management (IAM) yang diperlukan untuk menjalankan setiap perintah gsutil Cloud Storage di resource tertentu. Izin IAM dipaketkan bersama untuk membuat peran. Anda memberikan peran kepada pengguna dan grup.
Di halaman ini, Anda juga dapat menemukan informasi tentang hal berikut:
Menggunakan perintah tambahan yang hanya berlaku untuk bucket yang menonaktifkan akses level bucket yang seragam
Menggunakan karakter pengganti dan flag rekursif
Menggunakan flag
-u
untuk menentukan project untuk penagihanMenggunakan flag
-m
untuk menjalankan operasi secara paralel
Perintah | Sub-perintah | Izin IAM yang Diperlukan |
---|---|---|
autoclass |
get |
storage.buckets.get |
autoclass |
set |
storage.buckets.update |
cat |
storage.objects.get |
|
compose |
storage.objects.get storage.objects.create storage.objects.delete 1 |
|
config |
Tidak ada | |
cors |
get |
storage.buckets.get |
cors |
set |
storage.buckets.update |
cp |
storage.objects.list 2storage.objects.get storage.objects.create storage.objects.delete 3 |
|
defstorageclass |
get |
storage.buckets.get |
defstorageclass |
set |
storage.buckets.update |
du |
storage.objects.get |
|
hash |
storage.objects.get |
|
help |
Tidak ada | |
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.get storage.buckets.getIamPolicy |
iam |
set atau ch |
storage.buckets.get storage.buckets.getIamPolicy storage.buckets.setIamPolicy storage.buckets.update |
kms |
authorize |
resourceManager.projects.get iam.serviceAccounts.create 4cloudkms.cryptoKeys.setIamPolicy |
kms |
encryption |
storage.buckets.get |
kms |
encryption -d |
storage.buckets.get storage.buckets.update |
kms |
encryption -k |
storage.buckets.get storage.buckets.update resourceManager.projects.get 5cloudkms.cryptoKeys.setIamPolicy 5 |
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 (mencantumkan bucket) |
storage.buckets.list storage.buckets.getIamPolicy 6 |
|
ls (objek listingan) |
storage.objects.list storage.objects.getIamPolicy 7 |
|
ls -b |
storage.buckets.get storage.buckets.getIamPolicy 6 |
|
mb |
storage.buckets.create |
|
mv |
storage.objects.list 2 (untuk bucket tujuan)storage.objects.get (untuk objek sumber)storage.objects.create (untuk bucket tujuan)storage.objects.delete (untuk bucket sumber)storage.objects.delete 3 (untuk bucket tujuan) |
|
notification |
create |
storage.buckets.update pubsub.topics.get (untuk project yang berisi topik Pub/Sub)pubsub.topics.create 8 (untuk project yang berisi topik Pub/Sub)pubsub.topics.getIamPolicy (untuk topik Pub/Sub yang menerima notifikasi)pubsub.topics.setIamPolicy 8 (untuk topik Pub/Sub yang menerima notifikasi) |
notification |
create -s |
storage.buckets.update |
notification |
delete |
storage.buckets.get storage.buckets.update |
notification |
list |
storage.buckets.get |
notification |
watchbucket |
storage.buckets.update |
notification |
stopchannel |
storage.buckets.update |
pap |
get |
storage.buckets.get |
pap |
set |
storage.buckets.get storage.buckets.update storage.buckets.setIamPolicy |
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.update |
requesterpays |
set off |
storage.buckets.update resourcemanager.projects.createBillingAssignment 9 |
retention |
clear , event-default , lock , atau set |
storage.buckets.update |
retention |
event atau temp |
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.objects.delete |
|
rm -a |
storage.objects.delete storage.objects.list |
|
rm -r (menghapus bucket) |
storage.buckets.delete storage.objects.delete storage.objects.list |
|
rpo |
get |
storage.buckets.get |
rpo |
set |
storage.buckets.get storage.buckets.update |
rsync |
storage.objects.get storage.objects.create storage.objects.delete 11storage.objects.list |
|
rsync -n |
storage.objects.list (untuk bucket sumber dan tujuan) |
|
setmeta |
storage.objects.get storage.objects.list storage.objects.update |
|
signurl |
Tidak ada; tetapi akun layanan yang kuncinya digunakan sebagai bagian dari perintah ini harus memiliki izin untuk melakukan permintaan yang dienkode ke dalam URL yang ditandatangani. | |
stat |
storage.objects.get |
|
test |
Tidak ada | |
ubla |
set |
storage.buckets.get storage.buckets.update |
ubla |
get |
storage.buckets.get |
update |
Tidak satu pun | |
version |
Tidak ada | |
versioning |
get |
storage.buckets.get |
versioning |
set |
storage.buckets.update |
web |
get |
storage.buckets.get |
web |
set |
storage.buckets.update |
1Izin ini hanya diperlukan jika objek yang disusun memiliki nama yang sama dengan objek yang sudah ada di bucket.
2 Izin ini hanya diperlukan jika tujuan dalam perintah berisi jalur objek.
3Izin ini hanya diperlukan jika Anda menggunakan
upload komposit paralel atau jika Anda tidak menggunakan flag -n
, tetapi menyisipkan
objek yang memiliki nama yang sama dengan objek yang sudah ada di bucket.
4Izin ini hanya diperlukan jika Anda tidak memiliki akun layanan Cloud Storage yang dikaitkan dengan project.
5Jika Anda menggunakan gsutil kms encryption -k
, dan akun layanan project Anda tidak memiliki izin untuk mengakses kunci Cloud KMS yang diminta, gsutil akan menjalankan gsutil kms authorize
guna memberi akun layanan izin yang diperlukan.
6Izin ini hanya diperlukan jika Anda ingin menyertakan kebijakan IAM dalam detailnya.
7Izin ini hanya diperlukan jika Anda ingin kebijakan IAM disertakan dalam detailnya, dan tidak berlaku untuk bucket yang mengaktifkan akses level bucket yang seragam.
8Izin ini tidak diperlukan jika topik sudah ada dan akun layanan yang relevan memiliki akses ke topik tersebut.
9Izin ini hanya diperlukan jika Anda tidak menyertakan project penagihan dalam permintaan. Lihat Persyaratan penggunaan dan akses Pemohon yang Membayar untuk mengetahui informasi selengkapnya.
10Izin ini tidak diperlukan jika perintah tidak mengubah setelan bucket.
11Izin ini hanya diperlukan jika Anda menggunakan flag -d
atau jika Anda menyisipkan objek dengan nama yang sama, tetapi data yang berbeda dari objek yang sudah ada di bucket.
Metode terkait ACL
Tabel berikut mencantumkan izin IAM yang diperlukan untuk menjalankan perintah gsutil yang berlaku khusus untuk pengelolaan ACL. Perintah ini hanya berlaku untuk bucket yang telah menonaktifkan Akses level bucket yang seragam.
Perintah | Subperintah | Resource yang Ditindaklanjuti | Izin IAM yang Diperlukan |
---|---|---|---|
acl |
get |
Bucket | storage.buckets.get storage.buckets.getIamPolicy |
acl |
set atau ch |
Bucket | storage.buckets.get storage.buckets.getIamPolicy storage.buckets.setIamPolicy storage.buckets.update |
acl |
get |
Objek | storage.objects.get storage.objects.getIamPolicy |
acl |
set atau ch |
Objek | storage.objects.get storage.objects.getIamPolicy storage.objects.setIamPolicy storage.objects.update |
cp -a atau cp -p |
Objek | storage.objects.list astorage.objects.get storage.objects.create storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
defacl |
get |
Bucket | storage.buckets.get storage.buckets.getIamPolicy |
defacl |
set atau ch |
Bucket | storage.buckets.get storage.buckets.getIamPolicy storage.buckets.setIamPolicy storage.buckets.update |
iam |
get |
Objek | storage.objects.get storage.objects.getIamPolicy |
iam |
set atau ch |
Objek | storage.objects.get storage.objects.getIamPolicy storage.objects.setIamPolicy storage.objects.update |
mv -a atau mv -p |
Objek | storage.objects.list astorage.objects.get storage.objects.create storage.objects.delete storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
rsync -a rsync -p |
Objek | storage.objects.get storage.objects.create storage.objects.delete cstorage.objects.list storage.objects.getIamPolicy storage.objects.setIamPolicy |
a Izin ini hanya diperlukan jika tujuan dalam perintah berisi jalur objek.
bIzin ini hanya diperlukan jika Anda menggunakan
upload komposit paralel, atau jika Anda tidak menggunakan flag -n
, tetapi menyisipkan
objek yang memiliki nama yang sama dengan objek yang sudah ada di bucket.
cIzin ini hanya diperlukan jika Anda menggunakan flag -d
atau jika Anda menyisipkan objek dengan nama yang sama, tetapi data yang berbeda dari objek yang sudah ada di bucket.
Flag level atas -u
Jika menggunakan flag global -u
untuk menentukan project yang harus ditagih untuk permintaan Anda, Anda harus memiliki izin serviceusage.services.use
untuk project yang ditentukan. Flag -u
digunakan, misalnya, saat mengakses
bucket dengan Requester Pays diaktifkan.
Karakter pengganti dan flag rekursif
Jika menggunakan karakter pengganti URI untuk memilih beberapa objek dalam perintah, Anda
harus memiliki izin storage.objects.list
untuk bucket yang berisi
objek. Demikian pula, jika menggunakan karakter pengganti URI untuk memilih beberapa bucket dalam perintah, Anda harus memiliki izin storage.buckets.list
untuk project yang berisi bucket.
Jika menggunakan flag rekursif (-r
dan -R
), Anda harus memiliki izin storage.objects.list
untuk bucket yang relevan, selain izin yang diperlukan untuk perintah tertentu yang Anda gunakan.
Flag level atas -m
Biasanya, jika Anda menggunakan perintah gsutil yang bertindak di beberapa objek atau
bucket, perintah akan gagal pada error pertama. Namun, jika Anda menggunakan flag global -m
, gsutil akan mencatat error yang ditemukannya dan melanjutkan operasi.
Misalnya, Anda mencoba menjalankan perintah acl set
pada serangkaian objek, tetapi Anda memiliki izin untuk melakukannya pada beberapa objek saja. Jika
Anda tidak menggunakan flag -m
, gsutil akan berhasil menerapkan ACL hingga
mencapai objek yang tidak memiliki izin untuk menerapkan ACL. Pada saat itu,
gsutil akan gagal. Jika Anda menggunakan flag -m
, gsutil akan mencatat error yang muncul saat mencoba menerapkan ACL ke objek yang tidak Anda izinkan, tetapi akan melanjutkan operasi.
Langkah berikutnya
- Menetapkan peran IAM di level project dan bucket.
- Tinjau peran IAM yang berisi izin Cloud Storage.