Halaman ini menyediakan ringkasan Identity and Access Management (IAM) dan penggunaannya dengan mengontrol akses ke bucket, folder terkelola, dan resource objek di Cloud Storage.
Untuk mempelajari cara lain dalam mengontrol akses di Cloud Storage, lihat Ringkasan Kontrol Akses.
Untuk pembahasan mendetail tentang IAM dan fitur-fiturnya secara umum, lihat Identity and Access Management.
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 menggunakanresource.type
untuk memberikan akses ke bucket atau objek, tetapi hal tersebut sebagian besar redundan dengan penggunaanresource.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
dansetIamPolicy
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 kondisiresource.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
- Pelajari cara menggunakan IAM dengan Cloud Storage.
- Tinjau tabel referensi IAM untuk Cloud Storage.
- Pelajari praktik terbaik untuk menggunakan IAM.
- Mengelola kebijakan IAM untuk semua resource Google Cloud Anda.