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 memberikan contoh pengelolaan izin di IAM.

Kebijakan izin dengan dua binding peran. Binding peran tersebut
  mengaitkan akun utama tertentu dengan peran tertentu.

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.

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:

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:

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.

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

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 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 kepada akun utama berikut menggunakan awalan yang sesuai: user:my-user@example.com, serviceAccount:my-other-app@appspot.gserviceaccount.com, dan group:my-group@example.com. Peran objectViewer diberikan kepada user: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@appspot.gserviceaccount.com",
        "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.

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. Akibatnya, jika Anda memberikan peran Editor kepada pengguna di example-prod, Anda secara efektif memberikan peran Editor untuk topic_a kepada pengguna tersebut.

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

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