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.
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 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 menggunakanresource.type
untuk memberikan akses ke bucket atau objek, tetapi tindakan ini tidak terlalu diperlukan 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 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.