Identity and Access Management

Penggunaan

Halaman ini memberikan ringkasan tentang Identity and Access Management (IAM) dan penggunaannya untuk mengontrol akses ke resource bucket, folder terkelola, dan 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 untuk membuat objek dalam 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. Saat kebijakan penolakan dihubungkan dengan resource, akun utama dalam kebijakan tersebut tidak dapat menggunakan izin yang ditentukan untuk mengakses resource atau sub-resource apa pun di dalam resource tersebut, terlepas dari peran yang diberikan. Kebijakan penolakan akan mengabaikan kebijakan izin IAM.

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 menampilkan daftar bucket dalam project Anda. Anda tidak secara langsung memberikan izin ke akun utama, tetapi 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 di project Anda.

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

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

Anda dapat memberikan peran kepada akun utama di tingkat project, tingkat bucket, atau level folder terkelola. Izin yang diberikan oleh peran tersebut berlaku secara tambahan di seluruh hierarki resource. Anda dapat memberikan peran di berbagai tingkat hierarki resource untuk tingkat perincian yang lebih tinggi dalam model izin Anda.

Misalnya, Anda ingin memberikan izin kepada pengguna untuk membaca objek di bucket apa pun dalam project, tetapi hanya membuat objek di bucket A. Untuk melakukannya, Anda dapat memberi pengguna peran Storage Object Viewer (roles/storage.objectViewer) 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 di bucket tersebut.

Beberapa peran dapat digunakan di semua tingkat hierarki resource. Saat digunakan di level project, izin yang ada di dalamnya berlaku untuk semua bucket, folder, dan objek dalam project tersebut. Saat 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) pada level bucket atau pada level folder terkelola. Peran IAM yang memungkinkan Anda mengontrol kebijakan penolakan IAM hanya dapat diterapkan di tingkat organisasi.

Hubungan dengan ACL

Selain IAM, bucket dan objek Anda dapat menggunakan sistem kontrol akses lama yang disebut daftar kontrol akses (ACL) jika fitur akses level bucket yang seragam tidak diaktifkan untuk bucket Anda. Secara umum, Anda harus menghindari penggunaan ACL, dan Anda harus mengaktifkan akses level bucket yang seragam untuk bucket Anda. Bagian ini membahas hal-hal yang harus diingat jika Anda mengizinkan penggunaan ACL untuk bucket dan objek di dalamnya.

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
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) Bucket Reader
Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) Bucket Writer
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 memberi pengguna peran Storage Object Viewer (roles/storage.objectViewer), ACL tidak akan berubah.

Karena ACL objek berfungsi secara terpisah dari peran IAM, ACL tersebut tidak muncul dalam hierarki kebijakan IAM. Saat mengevaluasi siapa yang memiliki akses ke salah satu objek Anda, pastikan Anda memeriksa ACL untuk objek tersebut, selain memeriksa kebijakan IAM level project dan level bucket Anda.

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 Anda 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, jane@example.com dan john@example.com memiliki peran dasar Viewer (roles/viewer) untuk project bernama my-example-project, dan misalkan Anda memiliki bucket di 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

IAM Conditions memungkinkan Anda menetapkan kondisi yang mengontrol bagaimana 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 bucket atau objek. Anda juga dapat menggunakan resource.type untuk memberikan akses ke bucket atau objek, tetapi tindakan ini tidak terlalu diperlukan 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 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