Halaman ini menjelaskan cara kerja sistem Identity and Access Management (IAM) Google Cloud dan cara menggunakannya untuk mengelola akses di Google Cloud.
Dengan IAM, Anda dapat memberikan akses terperinci ke resource Google Cloud tertentu dan membantu mencegah akses ke resource lain. IAM juga dapat Anda gunakan untuk menerapkan prinsip keamanan hak istimewa terendah, yang menyatakan tidak ada yang boleh memiliki izin lebih dari yang sebenarnya dibutuhkan.
Cara kerja IAM
Dengan IAM, Anda dapat mengelola kontrol akses dengan menentukan siapa (identitas) yang memiliki akses apa (peran) untuk resource yang mana. Misalnya, instance virtual machine Compute Engine, cluster Google Kubernetes Engine (GKE), dan bucket Cloud Storage merupakan resource Google Cloud. Organisasi, folder, dan project yang digunakan untuk mengatur resource Anda juga merupakan resource.
Di IAM, izin untuk mengakses resource tidak diberikan secara langsung kepada pengguna akhir. Sebagai gantinya, izin dikelompokkan ke dalam peran, dan peran diberikan ke akun utama terautentikasi. (Dulu, IAM sering menyebut akun utama sebagai anggota. Beberapa API masih menggunakan istilah ini.)
Kebijakan izin, yang juga dikenal sebagai kebijakan IAM, menentukan dan menerapkan peran yang diberikan ke akun utama. Setiap kebijakan izin ditambahkan ke suatu resource. Saat akun utama terautentikasi mencoba mengakses resource, IAM akan memeriksa kebijakan izin resource tersebut untuk menentukan apakah tindakan tersebut diizinkan atau tidak.
Diagram berikut mengilustrasikan pengelolaan izin di IAM.
Model pengelolaan akses ini memiliki tiga bagian utama:
- Akun utama. Akun utama dapat berupa Akun Google (untuk pengguna akhir), akun layanan (untuk workload aplikasi dan komputasi), grup Google, atau akun Google Workspace atau domain Cloud Identity yang dapat mengakses resource. Setiap akun utama memiliki ID-nya sendiri, yang biasanya berupa alamat email.
- Peran. Peran adalah kumpulan izin. Izin menentukan operasi apa saja yang diizinkan pada resource. Jika Anda memberikan peran ke akun utama, maka semua izin yang terdapat pada peran tersebut juga ikut diberikan.
- Kebijakan. Kebijakan izin merupakan sekumpulan binding peran yang mengaitkan satu atau beberapa akun utama ke peran individual. Jika ingin menentukan siapa (akun utama) yang memiliki jenis akses tertentu (peran) pada resource, Anda dapat membuat kebijakan izin dan menambahkannya ke resource.
Misalnya pada diagram sebelumnya, kebijakan izin mengaitkan akun utama,
seperti user@example.com
, ke peran, seperti peran App Engine Admin
(roles/appengine.appAdmin
). Jika kebijakan izin ditambahkan ke suatu project, maka
akun utama akan mendapatkan peran yang telah ditentukan dalam project tersebut.
Bagian selanjutnya dari halaman ini menjelaskan konsep secara lebih mendetail.
Konsep yang terkait dengan identitas
Di IAM, Anda dapat memberikan akses ke akun utama. Akun utama dapat berupa salah satu jenis akun berikut:
- Akun Google
- Akun layanan
- Grup Google
- Akun Google Workspace
- Domain Cloud Identity
- Semua pengguna terautentikasi
- Semua pengguna
Akun Google
Akun Google mewakili developer, administrator, atau orang lain yang berinteraksi dengan Google Cloud. Setiap alamat email yang terkait dengan Akun Google dapat berupa identitas, termasuk gmail.com atau domain lainnya. Pengguna baru dapat mendaftar Akun Google Account dengan membuka halaman pendaftaran Akun Google.
Akun layanan
Akun layanan adalah akun untuk workload aplikasi atau komputasi, bukan untuk pengguna akhir individu. Jika menjalankan kode yang dihosting di Google Cloud, maka kode tersebut akan berjalan sebagai akun yang Anda tentukan. Anda dapat membuat akun layanan sebanyak yang diperlukan untuk mewakili berbagai komponen logis aplikasi Anda. Untuk mengetahui informasi lebih lanjut tentang penggunaan akun layanan untuk mengautentikasi aplikasi, lihat Akun layanan.
Grup Google
Grup Google adalah kumpulan Akun Google dan akun layanan yang memiliki nama. Setiap grup Google memiliki alamat email unik yang terkait dengan grup tersebut. Anda dapat menemukan alamat email yang terkait dengan grup Google dengan mengklik Tentang di halaman beranda grup Google manapun. Untuk mengetahui informasi selengkapnya tentang Google Grup, lihat halaman beranda Google Grup.
Grup Google merupakan cara mudah untuk menerapkan kontrol akses ke kumpulan pengguna. Anda dapat memberikan dan mengubah kontrol akses untuk seluruh grup sekaligus, sehingga tidak perlu memberikan atau mengubah kontrol akses satu per satu untuk pengguna individu atau akun layanan. Anda juga dapat dengan mudah menambahkan dan menghapus akun utama dari grup Google alih-alih mengupdate kebijakan izin untuk menambah atau menghapus pengguna.
Grup Google tidak memiliki kredensial login. Jadi, Anda tidak dapat menggunakan Grup Google untuk membuat identitas agar dapat membuat permintaan untuk mengakses aset.
Akun Google Workspace
Akun Google Workspace mewakili grup virtual dari semua Akun
Google yang ada di dalamnya. Akun Google Workspace dikaitkan dengan
nama domain internet organisasi Anda, seperti example.com
. Saat Anda membuat
Akun Google untuk pengguna baru, seperti username@example.com
, Akun
Google tersebut kemudian akan ditambahkan ke grup virtual untuk akun Google Workspace Anda.
Seperti Google Grup, akun Google Workspace tidak dapat digunakan untuk membuat identitas. Namun, pengelolaan izin yang mudah tetap memungkinkan.
Domain Cloud Identity
Domain Cloud Identity mirip dengan akun Google Workspace karena mewakili grup virtual dari semua Akun Google dalam suatu organisasi. Hanya saja, pengguna domain Cloud Identity tidak memiliki akses ke aplikasi dan fitur Google Workspace. Untuk mengetahui informasi selengkapnya, lihat Tentang Cloud Identity.
Semua pengguna terautentikasi
Nilai allAuthenticatedUsers
adalah ID khusus yang mewakili semua
akun layanan dan semua pengguna di internet yang telah diautentikasi dengan
Akun Google. ID ini mencakup akun yang tidak terhubung ke
akun Google Workspace atau domain Cloud Identity, seperti
akun Gmail pribadi. Pengguna yang tidak diautentikasi, seperti pengunjung
anonim, tidak akan disertakan.
Jenis akun utama ini tidak mencakup identitas yang datang dari penyedia identitas (IdP)
eksternal. Jika Anda menggunakan workforce identity federation atau
workload identity federation, jangan gunakan allAuthenticatedUsers
.
Sebagai gantinya, Anda dapat menggunakan salah satu jenis akun utama berikut:
- Untuk menyertakan pengguna dari semua IdP, gunakan
allUsers
. - Untuk menyertakan pengguna dari IdP eksternal tertentu, gunakan ID untuk semua identitas dalam workforce identity pool atau semua identitas dalam workload identity pool.
Beberapa jenis resource tidak mendukung jenis akun utama ini.
Semua pengguna
Nilai allUsers
adalah ID khusus yang mewakili siapa saja yang ada di
internet, termasuk pengguna terautentikasi dan tidak terautentikasi.
Beberapa jenis resource tidak mendukung jenis akun utama ini.
Konsep yang terkait dengan pengelolaan akses
Saat akun utama terautentikasi mencoba mengakses resource, IAM akan memeriksa kebijakan izin resource tersebut untuk menentukan apakah tindakan tersebut diizinkan atau tidak.
Bagian ini menjelaskan entity dan konsep yang terlibat dalam proses otorisasi.
Resource
Jika pengguna memerlukan akses ke resource Google Cloud tertentu, Anda dapat memberi peran kepada pengguna untuk resource tersebut. Beberapa contoh resource yaitu project, instance Compute Engine, dan bucket Cloud Storage.
Beberapa layanan mendukung
pemberian izin IAM pada tingkat yang lebih terperinci daripada
level project. Misalnya, Anda dapat memberikan peran Storage Admin
(roles/storage.admin
) ke pengguna untuk bucket Cloud Storage
tertentu, atau Anda juga dapat memberikan peran Compute Instance Admin
(roles/compute.instanceAdmin
) ke pengguna untuk instance Compute Engine
tertentu.
Selain itu, Anda dapat memberikan izin IAM di level project. Izin ini kemudian diwarisi oleh semua resource dalam project tersebut. Misalnya, untuk memberikan akses ke semua bucket Cloud Storage dalam suatu project, alih-alih memberikannya ke setiap bucket individu, sebaiknya berikan akses ke project tersebut. Atau, untuk memberikan akses ke semua instance Compute Engine dalam suatu project, alih-alih memberikannya ke setiap instance individu, sebaiknya berikan akses ke project tersebut.
Untuk mengetahui informasi tentang peran yang dapat diberikan pada resource tertentu, lihat Memahami peran dan lihat kolom Resource Terendah untuk peran tertentu.
Izin
Izin menentukan operasi apa saja yang diizinkan pada suatu resource. Dalam
dunia IAM, izin direpresentasikan dalam bentuk
service.resource.verb
,
misalnya seperti pubsub.subscriptions.consume
.
Izin seringkali terkait one-to-one dengan metode
REST API. Artinya, setiap layanan Google Cloud memiliki serangkaian
izin terkait untuk setiap metode REST API yang dieksposnya. Pemanggil metode
memerlukan izin tersebut untuk memanggil metode. Misalnya, jika menggunakan
Pub/Sub dan perlu memanggil metode topics.publish()
, maka Anda harus
memiliki izin pubsub.topics.publish
untuk topik tersebut.
Izin tidak dapat diberikan kepada pengguna secara langsung. Sebagai gantinya, Anda mengidentifikasi peran yang berisi izin yang sesuai, lalu memberikan peran tersebut kepada pengguna. Untuk mengetahui daftar semua izin yang tersedia dan peran yang memuatnya, lihat referensi izin.
Peran
Peran adalah kumpulan izin. Izin tidak dapat diberikan kepada pengguna secara langsung. Sebagai gantinya, mereka akan diberi peran. Jika Anda memberikan peran kepada pengguna, maka semua izin yang terdapat pada peran tersebut juga ikut diberikan kepada mereka.
Ada beberapa jenis peran di IAM:
Peran dasar: Peran yang secara historis tersedia di konsol Google Cloud. Peran terdiri dari Pemilik, Editor, dan Viewer.
Peran bawaan: Peran yang memberikan kontrol akses yang lebih terperinci daripada peran dasar. Misalnya, peran bawaan Pub/Sub Publisher (
roles/pubsub.publisher
) memberikan akses untuk hanya memublikasikan pesan ke topik Pub/Sub.Peran khusus: Peran yang dibuat untuk menyesuaikan izin dengan kebutuhan organisasi saat peran bawaan tidak memenuhi kebutuhan Anda.
Untuk mengetahui informasi selengkapnya tentang peran, lihat resource berikut:
- Untuk mempelajari cara memberikan peran kepada pengguna, lihat Memberikan, mengubah, dan mencabut akses.
- Untuk mengetahui informasi tentang peran bawaan IAM, lihat Memahami peran.
- Untuk mengetahui informasi tentang peran khusus, lihat Memahami peran khusus dan Membuat dan mengelola peran khusus.
Kebijakan izin
Anda dapat memberikan peran kepada pengguna dengan membuat kebijakan izin, yang merupakan kumpulan pernyataan yang menentukan siapa yang memiliki jenis akses tertentu. Kebijakan izin ditambahkan pada resource dan digunakan untuk menerapkan kontrol akses setiap kali resource tersebut diakses.
Kebijakan izin terdiri dari daftar binding peran. Binding peran mengaitkan daftar akun utama ke suatu peran.
role
: Peran yang ingin Anda berikan ke akun utama.role
ditentukan dalam bentukroles/service.roleName
. Misalnya, Cloud Storage memberikan antara lain peranroles/storage.objectAdmin
,roles/storage.objectCreator
, danroles/storage.objectViewer
.members
: Daftar satu atau beberapa akun utama seperti yang dijelaskan di bagian Konsep yang terkait dengan identitas dalam dokumen ini. Setiap jenis akun utama diidentifikasi dengan awalan, seperti Akun Google (user:
), akun layanan (serviceAccount:
), grup Google (group:
), atau akun Google Workspace atau domain Cloud Identity (domain:
). Dalam contoh cuplikan kode berikut, peranstorage.objectAdmin
diberikan ke akun utama berikut dengan menggunakan awalan yang sesuai:user:ali@example.com
,serviceAccount:my-other-app@appspot.gserviceaccount.com
,group:admins@example.com
, dandomain:google.com
. PeranobjectViewer
diberikan kepadauser:maria@example.com
.
Cuplikan kode berikut menunjukkan struktur kebijakan izin.
{
"bindings": [
{
"role": "roles/storage.objectAdmin",
"members": [
"user:ali@example.com",
"serviceAccount:my-other-app@appspot.gserviceaccount.com",
"group:admins@example.com",
"domain:google.com"
]
},
{
"role": "roles/storage.objectViewer",
"members": [
"user:maria@example.com"
]
}
]
}
IAM dan kebijakan API
IAM menyediakan serangkaian metode yang dapat Anda gunakan untuk membuat dan mengelola kebijakan izin di resource Google Cloud. Metode-metode ini diekspos oleh layanan yang mendukung IAM. Misalnya, metode IAM diekspos oleh Resource Manager, Pub/Sub, dan Cloud Life Sciences API.
Metode IAM tersebut adalah:
setIamPolicy()
: Menetapkan kebijakan izin di resource Anda.getIamPolicy()
: Mendapatkan kebijakan izin yang telah ditetapkan sebelumnya.testIamPermissions()
: Menguji apakah pemanggil memiliki izin tertentu untuk suatu resource.
Anda dapat menemukan topik referensi API untuk metode-metode ini dalam dokumentasi untuk setiap layanan yang mendukung IAM.
Hierarki resource
Resource Google Cloud diatur secara hierarkis:
- Organisasi adalah node root dalam hierarki.
- Folder merupakan turunan dari organisasi, atau dari folder lain.
- Project merupakan turunan dari organisasi, atau dari suatu folder.
- Resource untuk setiap layanan merupakan turunan dari project.
Setiap resource memiliki tepat satu induk. Untuk mengetahui informasi selengkapnya, lihat hierarki resource Resource Manager.
Diagram berikut merupakan salah satu contoh hierarki resource Google Cloud.
Anda dapat menetapkan kebijakan izin di level mana pun dalam hierarki resource: level organisasi, level folder, level project, atau level resource. Resources mewarisi kebijakan izin semua resource induknya. Kebijakan izin yang efektif untuk resource adalah gabungan kebijakan izin yang ditetapkan pada resource tersebut dan kebijakan izin yang diwarisi dari tingkat yang lebih tinggi dalam hierarki.
Pewarisan kebijakan ini bersifat transitif; dengan kata lain, resource mewarisi kebijakan izin dari project, yang mewarisi kebijakan izin dari folder, yang mewarisi kebijakan izin dari organisasi. Oleh karena itu, kebijakan izin level organisasi juga berlaku di level resource.
Misalnya: Dalam diagram sebelumnya, topic_a
merupakan resource
Pub/Sub yang berada dalam project example-prod
. Jika Anda ingin memberikan peran
Editor ke micah@example.com untuk example-prod
dan memberikan peran Penayang ke
song@example.com untuk topic_a
, maka Anda secara efektif memberikan peran Editor untuk
topic_a
ke micah@example.com dan peran Penayang ke song@example.com.
Kebijakan izin untuk resource turunan mewarisi kebijakan izin untuk resource induknya. Misalnya, jika Anda memberikan peran Editor kepada pengguna untuk suatu project, dan memberikan peran Viewer ke pengguna yang sama untuk resource turunan, maka pengguna tersebut masih memiliki izin peran Editor untuk resource turunan. Jika Anda mengubah hierarki resource, maka pewarisan kebijakan juga akan berubah. Misalnya, memindahkan project ke suatu organisasi dapat menyebabkan project tersebut mengikuti kebijakan izin organisasi.
Dukungan IAM untuk layanan Google Cloud
Dengan IAM, setiap metode API di semua layanan Google Cloud diperiksa untuk memastikan akun yang membuat permintaan API memiliki izin yang sesuai untuk menggunakan resource.
Layanan Google Cloud menawarkan peran bawaan yang menyediakan kontrol akses yang lebih terperinci. Misalnya, Compute Engine menawarkan peran seperti Compute Instance Admin dan Compute Network Admin, serta App Engine menawarkan peran seperti App Engine Admin dan Layanan App Engine Admin.
Peran bawaan tersedia untuk sebagian besar layanan Google Cloud. Untuk mengetahui detailnya, lihat daftar semua peran bawaan. Jika Anda membutuhkan lebih banyak kontrol atas izin, pertimbangkan untuk membuat peran khusus.
Anda dapat memberikan peran tertentu kepada pengguna untuk mengakses resource yang lebih terperinci daripada level project. Misalnya, Anda dapat membuat kebijakan izin yang memberikan peran Pelanggan kepada pengguna untuk topik Pub/Sub tertentu. Daftar semua peran bawaan menunjukkan jenis resource dengan level terendah atau paling terperinci yang menerima setiap peran.
Model konsistensi untuk IAM API
IAM API memiliki konsistensi tertunda. Dengan kata lain, jika Anda menulis data dengan IAM API dan segera membaca data tersebut, maka operasi baca mungkin akan menampilkan versi data yang lebih lama. Selain itu, perubahan yang Anda buat mungkin memerlukan waktu untuk memengaruhi pemeriksaan akses.
Model konsistensi ini memengaruhi cara kerja IAM API. Misalnya, jika Anda membuat akun layanan dan segera merujuk ke akun layanan tersebut dalam permintaan lain, maka IAM API mungkin mengatakan akun layanan tidak dapat ditemukan. Perilaku ini terjadi karena operasi memiliki konsistensi tertunda; perlu waktu agar akun layanan baru dapat terlihat oleh permintaan baca.
Langkah selanjutnya
- Untuk mengetahui daftar peran IAM yang tersedia, lihat Memahami peran.
- Untuk mendapatkan bantuan dalam memilih peran bawaan yang paling sesuai, baca Memilih peran bawaan.
- Untuk mempelajari cara membuat peran untuk kebutuhan khusus Anda, baca Understanding custom roles.
- Untuk mengetahui petunjuk tentang cara memberikan, mengubah, dan mencabut peran IAM ke akun utama, lihat Memberikan, mengubah, dan mencabut akses ke resource.
- Jelajahi alat Policy Intelligence, yang dapat membantu Anda memahami dan mengelola kebijakan izin agar meningkatkan konfigurasi keamanan secara proaktif.
- Untuk mempelajari cara membantu mengamankan aplikasi Anda, lihat ringkasan Identity-Aware Proxy.
Cobalah sendiri
Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
Mulai secara gratis