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 mewakili identitas yang dapat mengakses resource. Setiap akun utama memiliki ID-nya sendiri.
- 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.
Akun utama
Di IAM, Anda dapat memberikan akses ke akun utama, yang mewakili identitas yang dapat mengakses resource. Dalam konteks pengelolaan akses, akun utama dapat berupa salah satu jenis berikut:
- Akun Google
- Akun layanan
- Google Grup
- Akun Google Workspace
- Domain Cloud Identity
allAuthenticatedUsers
allUsers
- Satu atau beberapa identitas gabungan dalam workforce identity pool
- Satu atau beberapa identitas gabungan dalam workload identity pool
- Serangkaian Pod Google Kubernetes Engine
Untuk mengetahui detail tentang format ID untuk setiap jenis akun utama, lihat ID utama.
Akun Google
Akun Google mewakili developer, administrator, atau orang lain
yang berinteraksi dengan Google Cloud menggunakan akun yang mereka buat dengan
Google. Setiap alamat email yang terkait dengan Akun Google dapat digunakan sebagai
prinsipal, termasuk alamat email gmail.com
atau alamat email dengan domain
lain. Pengguna baru dapat mendaftar Akun Google dengan membuka
halaman pendaftaran Akun Google.
Akun layanan
Akun layanan adalah akun untuk workload aplikasi atau komputasi, bukan untuk pengguna akhir individu. Saat menjalankan kode yang dihosting di Google Cloud, Anda menentukan akun layanan yang akan digunakan sebagai identitas untuk aplikasi Anda. Anda dapat membuat akun layanan sebanyak yang diperlukan untuk mewakili berbagai komponen logis aplikasi Anda. Untuk informasi selengkapnya tentang penggunaan akun layanan untuk mengautentikasi aplikasi Anda, 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 menambahkan akun utama ke atau menghapus akun utama dari grup Google, bukan memperbarui kebijakan izin untuk menambahkan 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.
allAuthenticatedUsers
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 gabungan, yang dikelola oleh
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.
allUsers
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.
Identitas gabungan dalam kumpulan identitas tenaga kerja
Identitas gabungan dalam workforce identity pool adalah identitas pengguna yang dikelola oleh IdP eksternal dan digabungkan menggunakan Workforce Identity Federation. Anda dapat menggunakan identitas tertentu dalam workforce identity pool, atau Anda dapat menggunakan atribut tertentu untuk menentukan grup identitas pengguna dalam workforce identity pool. Untuk informasi tentang ID utama untuk identitas gabungan, lihat ID utama.
Identitas gabungan dalam workload identity pool
Identitas gabungan dalam workload identity pool adalah identitas beban kerja yang dikelola oleh IdP eksternal dan digabungkan menggunakan Workload Identity Federation. Anda dapat menggunakan workload identity tertentu dalam workload identity pool, atau Anda dapat menggunakan atribut tertentu untuk menentukan grup workload identity dalam workload identity pool. Untuk informasi tentang ID utama untuk identitas gabungan, lihat ID utama.
Pod GKE
Beban kerja yang berjalan di GKE menggunakan Workload Identity Federation for GKE untuk mengakses layanan Google Cloud. Untuk informasi selengkapnya tentang ID utama untuk Pod GKE, lihat Mereferensikan resource Kubernetes dalam kebijakan IAM.
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
Saat akun utama terautentikasi mencoba mengakses resource, IAM akan memeriksa kebijakan izin resource tersebut untuk menentukan apakah tindakan tersebut diizinkan atau tidak.
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 kepada akun utama berikut menggunakan awalan yang sesuai:user:my-user@example.com
,serviceAccount:my-other-app@
, dangroup:my-group@example.com
. PeranobjectViewer
diberikan kepadauser:my-user@example.com
.
Cuplikan kode berikut menunjukkan struktur kebijakan izin.
{
"bindings": [
{
"role": "roles/storage.objectAdmin",
"members": [
"user:my-user@example.com",
"serviceAccount:my-other-app@",
"group:my-group@example.com"
]
},
{
"role": "roles/storage.objectViewer",
"members": [
"user:my-user@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
. Akibatnya, jika Anda memberikan
peran Editor kepada pengguna di example-prod
, Anda secara efektif memberikan peran Editor
untuk topic_a
kepada pengguna.
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 Cloud Storage menawarkan peran seperti Storage Folder Admin dan Storage Object User.
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.
Coba 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