Ringkasan IAM

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.

Kebijakan izin dengan dua binding peran. Binding peran tersebut
  mengaitkan anggota tertentu dengan peran tertentu.

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.

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:

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.

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.

Izin untuk pemetaan Peran

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:

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 IAM.

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 bentuk roles/service.roleName. Misalnya, Cloud Storage memberikan antara lain peran roles/storage.objectAdmin, roles/storage.objectCreator, dan roles/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, peran storage.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, dan domain:google.com. Peran objectViewer diberikan kepada user: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.

Hierarki untuk resource IAM.

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

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