Izin IAM untuk perintah gsutil

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:

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.delete1
config Tidak ada
cors get storage.buckets.get
cors set storage.buckets.update
cp storage.objects.list2 (untuk bucket tujuan)
storage.objects.get (untuk objek sumber)
storage.objects.create (untuk bucket tujuan)
storage.objects.delete3 (untuk bucket tujuan)
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.create4
cloudkms.cryptoKeys.setIamPolicy (untuk kunci Cloud KMS yang diotorisasi)
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.get5
cloudkms.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 (mencantumkan bucket) storage.buckets.list
storage.buckets.getIamPolicy6
ls (mencantumkan objek) storage.objects.list
storage.objects.getIamPolicy7
ls -b storage.buckets.get
storage.buckets.getIamPolicy6
mb storage.buckets.create
mv 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.delete3 (untuk bucket tujuan)
notification create 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 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.setIamPolicy10
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.createBillingAssignment9
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 (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 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.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 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 yang mengaktifkan Pemohon yang Membayar.

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 memiliki izin, tetapi akan melanjutkan operasi.

Langkah berikutnya