Izin IAM untuk perintah gsutil

Tabel berikut mencantumkan izin Identity and Access Management (IAM) yang diperlukan untuk menjalankan setiap perintah gsutil Cloud Storage pada 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-hal berikut:

Perintah Subperintah Resource yang Ditindaklanjuti Izin IAM yang Diperlukan
autoclass get Bucket storage.buckets.get
autoclass set Bucket storage.buckets.update
cat Objek storage.objects.get
compose Objek storage.objects.get
storage.objects.create
storage.objects.delete1
config Tidak ada
cors get Bucket storage.buckets.get
cors set Bucket storage.buckets.update
cp Objek storage.objects.list2 (untuk bucket tujuan)
storage.objects.get (untuk objek sumber)
storage.objects.create (untuk bucket tujuan)
storage.objects.delete 3 (untuk bucket tujuan)
defstorageclass get Bucket storage.buckets.get
defstorageclass set Bucket storage.buckets.update
du Objek storage.objects.get
hash Objek storage.objects.get
help Tidak ada
hmacKeys create Kunci HMAC storage.hmacKeys.create
hmacKeys delete Kunci HMAC storage.hmacKeys.delete
hmacKeys get Kunci HMAC storage.hmacKeys.get
hmacKeys list Kunci HMAC storage.hmacKeys.list
hmacKeys update Kunci HMAC storage.hmacKeys.update
iam get Bucket storage.buckets.get
storage.buckets.getIamPolicy
iam set atau ch Bucket storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize Project resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKeys.setIamPolicy (untuk kunci Cloud KMS yang diberi otorisasi)
kms encryption Bucket storage.buckets.get
kms encryption -d Bucket storage.buckets.get
storage.buckets.update
kms encryption -k Bucket, Project5 storage.buckets.get
storage.buckets.update
resourceManager.projects.get5
cloudkms.cryptoKeys.setIamPolicy5
kms serviceaccount Project resourceManager.projects.get
label get Bucket storage.buckets.get
label set/ch Bucket storage.buckets.update
lifecycle get Bucket storage.buckets.get
lifecycle set/ch Bucket storage.buckets.update
logging get Bucket storage.buckets.get
logging set Bucket storage.buckets.update
ls Project storage.buckets.list
storage.buckets.getIamPolicy6
ls Bucket, Objek storage.objects.list
storage.objects.getIamPolicy7
ls -b Bucket storage.buckets.get
storage.buckets.getIamPolicy6
mb Bucket storage.buckets.create
mv Objek storage.objects.list2 (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 Bucket storage.buckets.update
pubsub.topics.get (untuk project yang berisi topik Pub/Sub)
pubsub.topics.create8 (untuk project yang berisi topik Pub/Sub)
pubsub.topics.getIamPolicy (untuk topik Pub/Sub yang menerima notifikasi)
pubsub.topics.setIamPolicy8 (untuk topik Pub/Sub yang menerima notifikasi)
notification create -s Bucket storage.buckets.update
notification delete Bucket storage.buckets.get
storage.buckets.update
notification list Bucket storage.buckets.get
notification watchbucket Bucket storage.buckets.update
notification stopchannel Bucket storage.buckets.update
pap get Bucket storage.buckets.get
pap set Bucket storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy10
perfdiag Bucket storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb Bucket storage.buckets.delete
requesterpays get Bucket storage.buckets.get
requesterpays set on Bucket storage.buckets.update
requesterpays set off Bucket storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock, atau set Bucket storage.buckets.update
retention event atau temp Objek storage.objects.get
storage.objects.list
storage.objects.update
retention get Bucket storage.buckets.get
rewrite -k Objek storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s Objek storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm Bucket storage.buckets.delete
storage.objects.delete
storage.objects.list
rm Objek storage.objects.delete
storage.objects.list
rpo get Bucket storage.buckets.get
rpo set Bucket storage.buckets.get
storage.buckets.update
rsync Objek storage.objects.get (untuk objek sumber dan bucket tujuan)
storage.objects.create (untuk bucket tujuan)
storage.objects.delete11 (untuk bucket tujuan)
storage.objects.list (untuk bucket sumber dan tujuan)
rsync -n Objek storage.objects.list (untuk bucket sumber dan tujuan)
setmeta Objek 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 Objek storage.objects.get
test Tidak ada
ubla set Bucket storage.buckets.get
storage.buckets.update
ubla get Bucket storage.buckets.get
update Tidak ada
version Tidak ada
versioning get Bucket storage.buckets.get
versioning set Bucket storage.buckets.update
web get Bucket storage.buckets.get
web set Bucket 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.lista (untuk bucket tujuan)
storage.objects.get (untuk objek sumber)
storage.objects.create (untuk bucket tujuan)
storage.objects.delete b (untuk bucket tujuan)
storage.objects.getIamPolicy (untuk objek sumber)
storage.objects.setIamPolicy (untuk bucket tujuan)
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.lista (untuk bucket tujuan)
storage.objects.get (untuk objek sumber)
storage.objects.create (untuk bucket tujuan)
storage.objects.delete (untuk bucket sumber)
storage.objects.delete b (untuk bucket tujuan)
storage.objects.getIamPolicy (untuk objek sumber)
storage.objects.setIamPolicy (untuk bucket tujuan)
rsync -a atau rsync -p Objek storage.objects.get (untuk objek sumber dan bucket tujuan)
storage.objects.create (untuk bucket tujuan)
storage.objects.deletec (untuk bucket tujuan)
storage.objects.list (untuk bucket sumber dan tujuan)
storage.objects.getIamPolicy (untuk objek sumber)
storage.objects.setIamPolicy (untuk bucket tujuan)

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 guna 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 yang mengaktifkan Pemohon yang Membayar.

Karakter pengganti dan flag rekursif

Jika menggunakan karakter pengganti URI untuk memilih beberapa objek dalam suatu 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 sebuah perintah, Anda harus memiliki izin storage.buckets.list untuk project yang berisi bucket tersebut.

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 menangani beberapa objek atau bucket, perintah akan gagal saat terjadi 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 berhasil menerapkan ACL hingga mencapai objek yang izinnya tidak Anda miliki 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 izinnya tidak Anda miliki, tetapi melanjutkan operasinya.

Langkah berikutnya