Identity and Access Management

Penggunaan

Halaman ini menyediakan ringkasan Identity and Access Management (IAM) dan penggunaannya dengan mengontrol akses ke bucket, folder terkelola, dan resource objek di Cloud Storage.

Ringkasan

IAM dapat Anda gunakan untuk mengontrol siapa yang memiliki akses ke resource di project Google Cloud Anda. Resource mencakup bucket Cloud Storage, folder terkelola dalam bucket, dan objek yang disimpan dalam bucket, serta entity Google Cloud lainnya seperti instance Compute Engine.

Akun utama adalah pihak yang dikelola IAM. Akun utama bisa berupa pengguna individu, grup, domain, atau bahkan publik secara keseluruhan. Akun utama diberi peran, sehingga mereka dapat melakukan tindakan di Cloud Storage serta Google Cloud secara umum. Setiap peran adalah kumpulan satu atau beberapa izin. Izin adalah unit dasar IAM: setiap izin memungkinkan Anda melakukan tindakan tertentu.

Misalnya, izin storage.objects.create memungkinkan Anda membuat objek. Izin ini ditemukan dalam peran seperti Storage Object Creator (roles/storage.objectCreator), yang memberikan izin yang berguna untuk membuat objek di bucket, dan Storage Object Admin (roles/storage.objectAdmin), yang memberikan berbagai izin untuk bekerja dengan objek.

Kumpulan peran IAM yang Anda tetapkan pada sebuah resource disebut kebijakan IAM. Akses yang diberikan peran ini berlaku untuk resource tempat kebijakan ditetapkan dan resource apa pun yang ada di dalam resource tersebut. Misalnya, Anda dapat menetapkan kebijakan IAM pada bucket yang memberi pengguna kontrol administratif atas bucket dan objeknya. Anda juga dapat menetapkan kebijakan IAM pada project yang memberi pengguna lain kemampuan untuk melihat objek di semua bucket dalam project.

Jika memiliki resource organisasi Google Cloud, Anda juga dapat menggunakan kebijakan penolakan IAM untuk menolak akses ke resource. Jika kebijakan penolakan dilampirkan ke resource, akun utama dalam kebijakan tidak dapat menggunakan izin yang ditentukan untuk mengakses resource atau sub-resource apa pun di dalamnya, terlepas dari peran yang diberikan. Kebijakan tolak akan menggantikan kebijakan IAM yang diizinkan.

Izin

Izin memungkinkan akun utama melakukan tindakan tertentu pada bucket, folder terkelola, atau objek di Cloud Storage. Misalnya, izin storage.buckets.list memungkinkan akun utama mencantumkan bucket dalam project Anda. Anda tidak memberikan izin akun utama secara langsung. Sebagai gantinya, Anda memberikan peran, yang memiliki satu atau beberapa izin yang dipaketkan di dalamnya.

Untuk daftar referensi izin IAM yang berlaku di Cloud Storage, lihat Izin IAM untuk Cloud Storage.

Peran

Peran adalah paket berisi satu atau beberapa izin. Misalnya, peran Storage Object Viewer (roles/storage.objectViewer) berisi izin storage.objects.get dan storage.objects.list. Anda memberikan peran kepada akun utama, yang memungkinkannya melakukan tindakan pada bucket, folder terkelola, dan objek dalam project Anda.

Untuk daftar referensi peran IAM yang berlaku di Cloud Storage, lihat Peran IAM untuk Cloud Storage.

Memberikan peran di level project, level bucket, atau level folder terkelola

Anda dapat memberikan peran ke akun utama di level project, level bucket, atau level folder terkelola. Izin yang diberikan oleh peran tersebut akan berlaku secara tambahan di sepanjang hierarki resource. Anda dapat memberikan peran di berbagai level hierarki resource agar lebih terperinci dalam model izin.

Misalnya, Anda ingin memberikan izin kepada pengguna untuk membaca objek di bucket mana pun dalam sebuah project, tetapi membuat objek hanya di bucket A. Untuk mencapai hal ini, Anda dapat memberikan peran Storage Object Viewer (roles/storage.objectViewer) kepada pengguna untuk project, yang memungkinkan pengguna membaca objek apa pun yang disimpan di bucket mana pun dalam project Anda, dan peran Storage Object Creator (roles/storage.objectCreator) untuk bucket A, yang memungkinkan pengguna membuat objek hanya dalam bucket tersebut.

Beberapa peran dapat digunakan di semua level hierarki resource. Saat digunakan di level project, izin yang ada di dalamnya berlaku untuk semua bucket, folder, dan objek dalam project. Jika digunakan di level bucket, izin hanya berlaku untuk bucket tertentu serta folder dan objek di dalamnya. Contoh peran tersebut adalah peran Storage Admin (roles/storage.admin), peran Storage Object Viewer (roles/storage.objectViewer), dan peran Storage Object Creator (roles/storage.objectCreator).

Beberapa peran hanya dapat diterapkan pada satu level. Misalnya, Anda hanya dapat menerapkan peran Storage Legacy Object Owner (roles/storage.legacyObjectOwner) di level bucket atau di level folder terkelola. Peran IAM yang memungkinkan Anda mengontrol kebijakan penolakan IAM hanya dapat diterapkan di level organisasi.

Hubungan dengan ACL

Peran IAM Bucket Lama berfungsi bersama dengan ACL bucket: saat Anda menambahkan atau menghapus peran Bucket Lama, ACL yang terkait dengan bucket akan mencerminkan perubahan Anda. Demikian pula, mengubah ACL khusus bucket akan memperbarui peran IAM Bucket Lama yang sesuai untuk bucket.

Peran Bucket Lama ACL yang Setara
Pembaca Bucket Lama Penyimpanan (roles/storage.legacyBucketReader) Pembaca Keranjang
Penulis Bucket Lama Penyimpanan (roles/storage.legacyBucketWriter) Penulis Bucket
Pemilik Bucket Lama Penyimpanan (roles/storage.legacyBucketOwner) Pemilik Bucket

Semua peran IAM level bucket lainnya, termasuk peran IAM Objek Lama, bekerja secara terpisah dari ACL. Demikian pula, semua peran IAM level project bekerja secara terpisah dari ACL. Misalnya, jika Anda memberikan peran Storage Object Viewer (roles/storage.objectViewer) kepada pengguna, ACL tidak akan berubah. Artinya, Anda dapat menggunakan peran IAM level bucket untuk memberikan akses yang luas ke semua objek dalam bucket dan menggunakan ACL objek terperinci untuk menyesuaikan akses ke objek tertentu dalam bucket.

Kebijakan penolakan IAM vs. ACL

Kebijakan penolakan IAM berlaku untuk akses pemberian ACL. Misalnya, jika Anda membuat kebijakan penolakan yang menolak izin storage.objects.get akun utama pada project, akun utama tidak dapat melihat objek dalam project tersebut, meskipun mereka diberi izin READER untuk masing-masing objek.

Izin IAM untuk mengubah ACL

Anda dapat menggunakan IAM untuk memberi akun utama izin yang diperlukan untuk mengubah ACL pada objek. Dengan semua izin storage.buckets berikut, pengguna dapat bekerja dengan ACL bucket dan ACL objek default: .get, .getIamPolicy, .setIamPolicy, dan .update.

Demikian pula, izin storage.objects berikut secara bersamaan memungkinkan pengguna untuk bekerja dengan ACL objek: .get, .getIamPolicy, .setIamPolicy, dan .update.

Peran khusus

Meskipun IAM memiliki banyak peran bawaan yang mencakup kasus penggunaan umum, Anda dapat menentukan peran sendiri yang berisi paket izin yang Anda tentukan. Untuk mendukung ini, IAM menawarkan peran khusus.

Jenis akun utama

Ada sejumlah jenis akun utama. Misalnya, Akun Google dan grup Google mewakili dua jenis umum, sedangkan allAuthenticatedUsers dan allUsers adalah dua jenis khusus. Untuk daftar jenis akun utama di IAM, lihat ID utama. Untuk informasi selengkapnya tentang akun utama secara umum, lihat Konsep yang terkait dengan identitas.

Nilai kemudahan

Cloud Storage mendukung nilai kemudahan, yang merupakan kumpulan khusus akun utama yang dapat diterapkan khusus untuk kebijakan bucket IAM Anda. Secara umum, Anda sebaiknya menghindari penggunaan nilai kemudahan di lingkungan produksi, karena nilai kemudahan memerlukan pemberian peran dasar, sebuah praktik yang tidak disarankan di lingkungan produksi.

Nilai kemudahan adalah ID dua bagian yang terdiri dari peran dasar dan ID project:

  • projectOwner:PROJECT_ID
  • projectEditor:PROJECT_ID
  • projectViewer:PROJECT_ID

Nilai kemudahan bertindak sebagai penghubung akun utama yang diberi peran dasar dan peran IAM: peran IAM yang diberikan pada nilai kemudahan, pada dasarnya juga diberikan pada semua akun utama dari peran dasar yang ditentukan untuk ID project.

Misalnya, jihan@example.com dan john@example.com memiliki peran dasar Viewer (roles/viewer) untuk project bernama my-example-project, dan Anda memiliki bucket dalam project tersebut bernama my-bucket. Jika Anda memberikan peran Storage Object Creator (roles/storage.objectCreator) untuk my-bucket ke nilai kemudahan projectViewer:my-example-project, maka jane@example.com dan john@example.com akan mendapatkan izin yang terkait dengan peran Storage Object Creator untuk my-bucket.

Anda dapat memberikan dan mencabut akses ke nilai kemudahan untuk bucket Anda, tetapi perhatikan bahwa Cloud Storage otomatis menerapkannya dalam keadaan tertentu. Lihat perilaku yang dapat diubah untuk peran dasar dalam Cloud Storage untuk informasi selengkapnya.

Kondisi

Kondisi IAM memungkinkan Anda menetapkan kondisi yang mengontrol cara izin diberikan atau ditolak ke akun utama. Cloud Storage mendukung jenis atribut kondisi berikut:

  • resource.name: Memberikan atau menolak akses ke bucket dan objek berdasarkan nama objek atau bucket. Anda juga dapat menggunakan resource.type untuk memberikan akses ke bucket atau objek, tetapi hal tersebut sebagian besar redundan dengan penggunaan resource.name. Contoh kondisi berikut menerapkan setelan IAM ke semua objek dengan awalan yang sama:

    resource.name.startsWith('projects/_/buckets/BUCKET_NAME/objects/OBJECT_PREFIX')

  • Tanggal/waktu: Menetapkan tanggal habis masa berlaku untuk izin.

    request.time < timestamp('2019-01-01T00:00:00Z')

Ekspresi bersyarat ini adalah pernyataan logika yang menggunakan subset Common Expression Language (CEL). Anda menentukan kondisi dalam pengikatan peran kebijakan IAM bucket.

Perhatikan pembatasan ini:

  • Anda harus mengaktifkan akses level bucket yang seragam di bucket sebelum menambahkan kondisi di level bucket. Meskipun kondisi diizinkan di level project, Anda harus memigrasikan semua bucket dalam project ke akses level bucket yang seragam agar ACL Cloud Storage tidak mengabaikan IAM conditions level project. Anda dapat menerapkan batasan akses level bucket yang seragam untuk mengaktifkan akses level bucket yang seragam untuk semua bucket baru dalam project Anda.
  • Saat menggunakan JSON API untuk memanggil getIamPolicy dan setIamPolicy di bucket dengan kondisi, Anda harus menetapkan kebijakan IAM ke versi 3.
  • Karena izin storage.objects.list diberikan pada level bucket, Anda tidak dapat menggunakan atribut kondisi resource.name untuk membatasi akses daftar objek ke subset objek dalam bucket.
  • Kondisi yang habis masa berlakunya tetap ada di kebijakan IAM Anda sampai Anda menghapusnya.

Penggunaan alat Cloud Storage

Meskipun izin IAM tidak dapat ditetapkan melalui XML API, pengguna yang diberi izin IAM masih dapat menggunakan XML API, serta alat lainnya untuk mengakses Cloud Storage.

Untuk referensi mengenai izin IAM yang memungkinkan pengguna melakukan tindakan dengan alat Cloud Storage lain, lihat Referensi IAM untuk Cloud Storage.

Langkah selanjutnya