Ringkasan rekomendasi peran

Rekomendasi peran membantu Anda mengidentifikasi dan menghapus izin yang berlebihan dari akun utama, sehingga meningkatkan konfigurasi keamanan resource.

Ringkasan rekomendasi peran

Rekomendasi peran dibuat oleh pemberi rekomendasi IAM. Pemberi rekomendasi IAM adalah salah satu pemberi rekomendasi yang ditawarkan Pemberi rekomendasi.

Setiap rekomendasi peran menyarankan agar Anda menghapus atau mengganti peran yang memberikan izin berlebih kepada akun utama Anda. Dalam skala besar, rekomendasi ini membantu Anda menerapkan prinsip hak istimewa terendah dengan memastikan bahwa akun utama hanya memiliki izin yang benar-benar diperlukan.

Pemberi rekomendasi IAM mengidentifikasi izin berlebih menggunakan insight kebijakan. Insight kebijakan adalah temuan berbasis ML tentang penggunaan izin akun utama.

Beberapa rekomendasi juga terkait dengan analisis gerakan lateral. Insight ini mengidentifikasi peran yang memungkinkan akun layanan dalam satu project untuk meniru akun layanan dalam project lain. Untuk informasi selengkapnya, lihat Cara hasil insight gerakan lateral.

Cara insight kebijakan dihasilkan

Insight kebijakan menyoroti izin dalam peran akun utama yang tidak digunakan akun utama.

Pemberi rekomendasi IAM menghasilkan insight kebijakan dengan membandingkan jumlah total izin akun utama dengan izin yang digunakan akun utama dalam 90 hari terakhir. Jika peran diberikan kurang dari 90 hari yang lalu, pemberi rekomendasi IAM akan melihat penggunaan izin akun utama sejak akun utama diberikan peran.

Ada beberapa cara yang dapat digunakan akun utama untuk menggunakan izin:

  • Secara langsung, dengan memanggil API yang memerlukan izin

    Misalnya, metode roles.list di REST API IAM memerlukan izin iam.roles.list. Saat memanggil metode roles.list, Anda menggunakan izin iam.roles.list.

    Demikian pula, saat memanggil metode testIamPermissions untuk resource, Anda secara efektif menggunakan semua izin yang sedang diuji.

  • Secara tidak langsung, menggunakan Konsol Google Cloud untuk bekerja dengan resource Google Cloud

    Misalnya, di konsol Google Cloud, Anda dapat mengedit instance virtual machine (VM) Compute Engine yang memerlukan izin berbeda berdasarkan setelan yang Anda ubah. Namun, konsol Google Cloud juga menampilkan setelan yang ada, yang memerlukan izin compute.instances.get.

    Oleh karena itu, saat Anda mengedit instance VM di Konsol Google Cloud, Anda menggunakan izin compute.instances.get.

Pemberi rekomendasi IAM juga menggunakan machine learning untuk mengidentifikasi izin dalam peran akun utama saat ini yang mungkin diperlukan oleh akun utama, meskipun akun utama tidak menggunakan izin tersebut baru-baru ini. Untuk mengetahui informasi selengkapnya, lihat Machine learning untuk insight kebijakan di halaman ini.

Insight kebijakan tidak dibuat untuk semua peran IAM yang diberikan ke akun utama. Untuk mengetahui informasi selengkapnya tentang alasan peran mungkin tidak memiliki insight kebijakan, lihat Ketersediaan di halaman ini.

Untuk mempelajari cara mengelola insight kebijakan, baca artikel Mengelola insight kebijakan untuk project, folder, dan organisasi atau Mengelola insight kebijakan untuk bucket Cloud Storage.

Machine learning untuk insight kebijakan

Dalam beberapa kasus, akun utama mungkin memerlukan izin tertentu yang disertakan dalam perannya saat ini, tetapi belum digunakan baru-baru ini. Untuk mengidentifikasi izin ini, pemberi rekomendasi IAM menggunakan model machine learning (ML) saat membuat insight kebijakan.

Model machine learning ini dilatih pada beberapa kumpulan sinyal:

  • Pola kemunculan bersama yang umum dalam histori yang diamati: Fakta bahwa pengguna menggunakan izin A, B, dan C di masa lalu memberikan petunjuk bahwa A, B, dan C mungkin berkaitan dalam beberapa cara dan keduanya dibutuhkan bersama untuk melakukan tugas di Google Cloud. Jika model ML sering mengamati pola ini, saat berikutnya pengguna lain menggunakan izin A dan B, model tersebut akan menyarankan bahwa pengguna mungkin juga memerlukan izin C.

  • Pengetahuan domain seperti yang dienkode dalam definisi peran: IAM menyediakan ratusan peran bawaan yang berbeda-beda yang dikhususkan untuk layanan. Jika peran yang telah ditetapkan berisi sekumpulan izin, hal tersebut merupakan sinyal kuat bahwa izin tersebut harus diberikan bersama.

Selain sinyal ini, model tersebut juga menggunakan penyematan kata untuk menghitung seberapa mirip izin tersebut secara semantik. Izin yang serupa secara semantik akan "berdekatan" satu sama lain setelah penyematan, dan lebih mungkin diberikan bersama. Misalnya, bigquery.datasets.get dan bigquery.tables.list akan sangat berdekatan satu sama lain setelah disematkan.

Semua data yang digunakan dalam pipeline machine learning pemberi rekomendasi IAM memiliki k-anonymity, yang berarti bahwa individu dalam set data anonim tidak dapat diidentifikasi ulang. Untuk mencapai tingkat anonimitas ini, kami menghapus semua informasi identitas pribadi (PII) seperti ID pengguna yang terkait dengan setiap pola penggunaan izin. Kemudian, kami menghapus semua pola penggunaan yang tidak cukup sering muncul di Google Cloud. Model global dilatih menggunakan data anonim ini.

Model global dapat disesuaikan lebih lanjut untuk setiap organisasi menggunakan federated learning, proses machine learning yang melatih model machine learning tanpa mengekspor data.

Cara rekomendasi peran dibuat

Jika insight kebijakan menunjukkan bahwa akun utama tidak memerlukan semua izin dalam perannya, pemberi rekomendasi IAM akan menilai peran tersebut untuk menentukan apakah peran tersebut dapat dicabut, atau apakah ada peran lain yang lebih cocok. Jika peran dapat dicabut, pemberi rekomendasi IAM akan membuat rekomendasi peran untuk mencabut peran tersebut. Jika ada peran lain yang lebih cocok, pemberi rekomendasi IAM akan membuat rekomendasi peran untuk mengganti peran dengan peran yang disarankan. Peran yang disarankan ini dapat berupa peran khusus baru, peran khusus yang sudah ada, atau satu atau beberapa peran standar. Kecuali dalam kasus rekomendasi untuk akun layanan yang dikelola Google, rekomendasi peran tidak pernah menyarankan perubahan yang meningkatkan tingkat akses akun utama.

Rekomendasi peran dibuat berdasarkan kontrol akses IAM saja. Aturan ini tidak mempertimbangkan jenis kontrol akses lainnya, seperti daftar kontrol akses (ACL) dan role-based access control (RBAC) Kubernetes. Jika Anda menggunakan jenis kontrol akses lainnya, berhati-hatilah saat Anda meninjau rekomendasi, dan pertimbangkan bagaimana kontrol akses tersebut berkaitan dengan kebijakan izin Anda.

Selain itu, rekomendasi peran tidak dibuat untuk semua peran IAM yang diberikan ke akun utama. Untuk mengetahui informasi selengkapnya tentang alasan peran mungkin tidak memiliki rekomendasi peran, lihat Ketersediaan di halaman ini.

Periode observasi

Periode pengamatan rekomendasi peran adalah jumlah hari data penggunaan izin yang menjadi dasar rekomendasi.

Periode pengamatan maksimum untuk rekomendasi peran adalah 90 hari. Artinya, pemberi rekomendasi IAM menggunakan maksimum data penggunaan izin dari 90 hari terakhir untuk membuat rekomendasi peran.

Pemberi rekomendasi IAM juga tidak mulai membuat rekomendasi peran hingga memiliki data penggunaan izin selama beberapa hari. Durasi ini disebut periode observasi minimum. Secara default, periode pengamatan minimum adalah 90 hari, tetapi untuk rekomendasi peran level project, Anda dapat menetapkannya secara manual ke 30 hari atau 60 hari. Untuk mengetahui detailnya, lihat Mengonfigurasi pembuatan rekomendasi peran. Jika Anda menetapkan periode pengamatan minimum ke kurang dari 90 hari, Anda akan mendapatkan rekomendasi lebih cepat, tetapi akurasi rekomendasi mungkin terpengaruh.

Jika lebih lama dari periode pengamatan minimum, tetapi kurang dari 90 hari sejak peran diberikan, periode pengamatan adalah durasi waktu sejak peran diberikan.

Peran khusus baru dalam rekomendasi peran

Saat menyarankan penggantian untuk sebuah peran, pemberi rekomendasi IAM selalu menyarankan peran khusus yang ada, atau satu atau beberapa peran bawaan, yang tampaknya lebih sesuai dengan kebutuhan akun utama.

Jika pemberi rekomendasi IAM mengidentifikasi pola penggunaan izin yang umum di organisasi Anda yang tidak dipetakan ke peran bawaan atau peran khusus yang sudah ada, sebaiknya buat peran khusus level project baru. Peran khusus ini hanya mencakup izin yang direkomendasikan. Anda dapat mengubah rekomendasi peran khusus dengan menambahkan atau menghapus izin.

Jika Anda ingin menerapkan prinsip hak istimewa terendah seminimal mungkin, pilih peran khusus yang baru. Pemberi rekomendasi IAM membuat peran khusus di level project. Anda bertanggung jawab untuk memelihara dan memperbarui peran khusus untuk project Anda.

Jika Anda lebih suka menggunakan peran yang dikelola Google, pilih peran bawaan. Google Cloud memperbarui peran ini secara rutin dengan menambahkan atau menghapus izin. Agar mendapatkan notifikasi tentang pembaruan ini, berlanggananlah ke feed berita untuk log perubahan izin. Saat Anda memilih peran standar, akun utama akan tetap memiliki setidaknya beberapa izin, dan kemungkinan sejumlah besar izin yang belum digunakan.

Pemberi rekomendasi IAM tidak merekomendasikan peran khusus baru dalam kasus berikut:

  • Rekomendasi ini untuk peran tingkat folder atau tingkat organisasi.
  • Organisasi Anda sudah memiliki 100 peran khusus atau lebih.
  • Project Anda sudah memiliki 25 peran khusus atau lebih.

Selain itu, pemberi rekomendasi IAM merekomendasikan tidak lebih dari 5 peran khusus baru per hari untuk setiap project, dan tidak lebih dari 15 peran khusus baru di seluruh organisasi.

Cara wawasan gerakan lateral dihasilkan

Pergerakan lateral adalah ketika akun layanan dalam satu project memiliki izin untuk meniru akun layanan di project lain. Misalnya, akun layanan mungkin telah dibuat di project A, tetapi memiliki izin untuk meniru akun layanan di project B.

Izin ini dapat menyebabkan rantai peniruan identitas di seluruh project yang memberi akun utama akses yang tidak diinginkan ke resource. Misalnya, jika akun utama meniru akun layanan di project A, akun utama tersebut dapat menggunakan akun layanan tersebut untuk meniru akun layanan di project B. Jika akun layanan di project B memiliki izin untuk meniru identitas akun layanan lain dalam project lain di organisasi Anda, akun utama dapat terus menggunakan peniruan akun layanan untuk berpindah dari satu project ke project lain, sehingga mendapatkan izin selama pelaksanaannya.

Pemberi rekomendasi IAM menghasilkan insight pergerakan lateral dengan mengidentifikasi peran yang sesuai dengan kriteria berikut:

  • Akun utama yang diberi peran adalah akun layanan yang tidak dibuat di project.
  • Peran ini mencakup salah satu izin berikut, yang memungkinkan akun utama meniru identitas akun layanan:

    • iam.serviceAccounts.actAs
    • iam.serviceAccounts.getAccessToken
    • iam.serviceAccounts.getOpenIdToken
    • iam.serviceAccounts.implicitDelegation
    • iam.serviceAccounts.signBlob
    • iam.serviceAccounts.signJwt

Jika peran cocok dengan kriteria ini, pemberi rekomendasi IAM akan membuat insight gerakan lateral untuk peran tersebut. Insight ini berisi informasi tentang kemampuan peniruan identitas akun layanan, termasuk akun layanan yang dapat ditiru dan apakah akun tersebut menggunakan izin peniruan identitas dalam 90 hari terakhir.

Pemberi rekomendasi IAM tidak menggunakan insight pergerakan lateral mereka sendiri untuk membuat rekomendasi peran baru. Hal ini karena, jika akun layanan menggunakan izin peniruan identitas, pemberi rekomendasi IAM tidak dapat menyarankan penghapusannya dengan aman. Namun, jika rekomendasi peran menyarankan penghapusan izin ini karena tidak digunakan, pemberi rekomendasi IAM akan menautkan insight pergerakan lateral ke rekomendasi tersebut. Penautan ini membantu Anda memprioritaskan rekomendasi peran untuk akun layanan yang memiliki izin peniruan identitas yang andal dan tidak digunakan di seluruh project.

Untuk mempelajari cara mengelola insight gerakan lateral, lihat Mengelola insight gerakan lateral.

Ketersediaan

Insight kebijakan, insight pergerakan lateral, dan rekomendasi peran tidak dibuat untuk semua peran yang diberikan kepada akun utama. Baca bagian berikut untuk memahami peran dari insight kebijakan, insight gerakan lateral, dan rekomendasi.

Ketersediaan insight kebijakan

Agar pemberi rekomendasi IAM dapat membuat insight kebijakan untuk suatu peran, hal berikut harus benar:

  • Kebijakan izin IAM yang memberikan peran harus dilampirkan ke salah satu referensi berikut:

    • Bucket Cloud Storage
    • Set data BigQuery
    • Project
    • Folder
    • Organisasi

    Pemberi rekomendasi IAM hanya membuat insight kebijakan untuk peran yang diberikan pada resource tersebut.

  • Binding peran yang memberikan peran tidak boleh memiliki kondisi. Pemberi rekomendasi IAM tidak menghasilkan insight kebijakan untuk binding peran bersyarat.

  • Akun utama yang diberi peran harus berupa salah satu dari jenis utama berikut:

    Untuk mengetahui informasi selengkapnya tentang jenis utama, lihat ID utama.

Perlu waktu hingga 10 hari bagi pemberi rekomendasi IAM untuk membuat insight kebijakan untuk peran yang baru diberikan.

Insight kebijakan yang sudah ada diperbarui setiap hari berdasarkan penggunaan izin terbaru Anda. Namun, data yang menjadi dasar insight kebijakan biasanya mengalami keterlambatan hingga dua hari setelah penggunaan Anda yang sebenarnya.

Ketersediaan insight gerakan lateral

Insight gerakan lateral dihasilkan untuk peran yang diberikan pada resource berikut:

  • Organisasi
  • Folder
  • Project
  • Akun layanan

Ketersediaan rekomendasi peran

Agar pemberi rekomendasi IAM dapat membuat rekomendasi peran untuk suatu peran, hal berikut harus berlaku:

  • Peran tersebut harus memiliki insight kebijakan yang terkait dengannya. Insight kebijakan ini berfungsi sebagai dasar untuk rekomendasi.
  • Harus lebih lama dari periode observasi minimum sejak peran diberikan. Hal ini memastikan bahwa pemberi rekomendasi IAM memiliki data penggunaan yang memadai untuk membuat rekomendasi. Secara default, periode pengamatan minimum adalah 90 hari, tetapi Anda dapat menetapkannya secara manual ke 30 hari atau 60 hari. Untuk mengetahui detailnya, lihat Mengonfigurasi pembuatan rekomendasi peran.
  • Jika akun utama yang diberi peran adalah akun layanan yang dikelola Google, peran tersebut harus merupakan Pemilik, Editor, atau Viewer. Pemberi rekomendasi IAM tidak membuat rekomendasi peran untuk akun layanan yang dikelola Google dengan peran lain. Untuk mengetahui detail selengkapnya, lihat Rekomendasi peran untuk akun layanan yang dikelola Google.

Jika peran baru saja diberikan atau tidak memiliki insight, kolom Izin yang dianalisis di Konsol Google Cloud akan menampilkan ikon .

Terkadang, pemberi rekomendasi IAM tidak menghasilkan rekomendasi peran untuk suatu peran, meskipun ada cukup waktu yang telah berlalu dan peran tersebut memiliki insight yang terkait dengannya. Hal ini dapat terjadi karena alasan berikut:

  • Tidak ada peran IAM bawaan yang lebih sesuai daripada peran saat ini. Jika akun utama sudah memiliki peran bawaan yang meminimalkan izinnya, atau yang menyertakan lebih sedikit izin dibandingkan peran bawaan lainnya, pemberi rekomendasi IAM tidak dapat merekomendasikan peran lain yang telah ditetapkan.

    Anda dapat mengurangi izin akun utama dengan membuat peran khusus untuk akun utama.

  • Akun utama adalah akun layanan yang dikelola Google, dan perannya bukan peran dasar. Pemberi rekomendasi IAM hanya membuat rekomendasi peran untuk akun layanan yang dikelola Google jika akun layanan memiliki peran dasar (Pemilik, Editor, atau Viewer). Untuk mengetahui detail selengkapnya, lihat Rekomendasi peran untuk akun layanan yang dikelola Google.

  • Tidak ada akun utama lain yang memiliki peran dasar Pemilik untuk project. Setidaknya satu akun utama harus memiliki peran Pemilik (roles/owner) untuk setiap project. Jika hanya satu akun utama yang memiliki peran ini, pemberi rekomendasi IAM tidak akan menyarankan Anda mencabut atau mengganti peran tersebut.

Dalam kasus ini, kolom Izin yang dianalisis di Google Cloud Console menampilkan penggunaan izin akun utama, tetapi tidak memiliki ikon Rekomendasi tersedia .

Rekomendasi peran yang ada dimuat ulang setiap hari berdasarkan penggunaan izin terbaru Anda. Namun, data yang didasarkan pada rekomendasi peran biasanya tertinggal hingga dua hari di belakang penggunaan Anda yang sebenarnya.

Prioritas dan tingkat keparahan

Prioritas rekomendasi dan tingkat keparahan insight membantu Anda memahami urgensi rekomendasi atau insight dan menentukan prioritas yang sesuai.

Prioritas rekomendasi peran

Rekomendasi diberi tingkat prioritas berdasarkan urgensi yang dirasakan. Tingkat prioritas berkisar dari P0 (prioritas tertinggi) hingga P4 (prioritas terendah).

Prioritas rekomendasi peran bergantung pada peran rekomendasi tersebut:

Detail rekomendasi Prioritas Penjelasan
Rekomendasi untuk peran yang memberikan akses publik ke bucket Cloud Storage P1 Bucket yang dapat diakses secara publik dapat diakses oleh siapa saja di internet. Dengan menghapus akses publik, Anda dapat memiliki lebih banyak kontrol atas data.
Rekomendasi untuk peran yang memberikan akses publik ke set data BigQuery P1 {i>Dataset<i} yang dapat diakses secara publik dapat diakses oleh siapa saja di internet. Dengan menghapus akses publik, Anda dapat memiliki lebih banyak kontrol atas data.
Rekomendasi untuk peran dasar (Pemilik, Editor, dan Viewer) yang diberikan di project, folder, atau organisasi P2 Peran dasar sangat permisif, dan menerapkan rekomendasi untuk peran ini dapat sangat mengurangi izin yang berlebihan.
Rekomendasi yang tidak memberikan akses publik atau peran dasar P4 Meskipun membantu Anda mengurangi izin yang berlebihan, rekomendasi ini tidak menghapus akses publik atau peran dasar yang sangat permisif, sehingga menjadi prioritas yang lebih rendah.

Tingkat keparahan insight

Insight diberi tingkat keparahan berdasarkan urgensi yang dirasakan. Tingkat keparahan dapat berupa LOW, MEDIUM, HIGH, atau CRITICAL.

Tingkat keparahan insight kebijakan bergantung pada peran insight tersebut:

Detail insight Tingkat keparahan Penjelasan
Insight untuk peran yang memberikan akses publik ke bucket Cloud Storage CRITICAL Bucket yang dapat diakses secara publik dapat diakses oleh siapa saja di internet. Dengan menghapus akses publik, Anda dapat memiliki lebih banyak kontrol atas data.
Insight untuk peran yang memberikan akses publik ke set data BigQuery CRITICAL {i>Dataset<i} yang dapat diakses secara publik dapat diakses oleh siapa saja di internet. Dengan menghapus akses publik, Anda dapat memiliki lebih banyak kontrol atas data.
Insight untuk peran dasar (Pemilik, Editor, dan Viewer) yang diberikan pada project, folder, atau organisasi HIGH Peran dasar sangat permisif, dan menangani insight untuk peran ini dapat sangat mengurangi izin berlebih.
Insight yang tidak memberikan akses publik atau peran dasar LOW Meskipun menyoroti izin yang berlebihan, insight ini tidak melibatkan akses publik atau peran dasar yang sangat permisif, sehingga menjadikannya prioritas yang lebih rendah.

Semua insight gerakan lateral memiliki tingkat keparahan LOW.

Cara penerapan rekomendasi peran

Pemberi rekomendasi IAM tidak menerapkan rekomendasi secara otomatis. Sebaliknya, Anda harus meninjau rekomendasi tersebut dan memutuskan apakah akan menerapkan atau menolaknya. Untuk mempelajari cara meninjau, menerapkan, dan menolak rekomendasi peran, lihat salah satu panduan berikut:

Logging audit

Saat Anda menerapkan atau menolak rekomendasi, pemberi rekomendasi IAM akan membuat entri log. Anda dapat melihat entri ini di histori rekomendasi, atau melihatnya di log audit Google Cloud.

Subjenis rekomendasi peran

Rekomendasi peran dibagi menjadi beberapa subjenis yang berbeda berdasarkan tindakan yang direkomendasikan. Jika menggunakan gcloud CLI atau REST API, Anda dapat menggunakan subjenis ini untuk memfilter rekomendasi.

Subjenis Deskripsi
REMOVE_ROLE Rekomendasi untuk menghapus peran level project, level folder, atau level organisasi akun utama.
REMOVE_ROLE_BIGQUERY_DATASET Rekomendasi untuk menghapus peran tingkat set data akun utama.
REMOVE_ROLE_STORAGE_BUCKET Rekomendasi untuk menghapus peran tingkat bucket akun utama.
REPLACE_ROLE Rekomendasi untuk mengganti peran level project, level folder, atau tingkat organisasi akun utama dengan peran yang kurang permisif. Penggantian yang direkomendasikan bisa berupa peran khusus yang sudah ada, atau satu atau beberapa peran yang telah ditetapkan.
REPLACE_ROLE_CUSTOMIZABLE Rekomendasi untuk mengganti peran akun utama dengan peran khusus baru yang lebih tidak permisif dibandingkan perannya saat ini.
REPLACE_ROLE_BIGQUERY_DATASET Rekomendasi untuk mengganti peran tingkat set data akun utama dengan peran yang kurang permisif. Penggantian yang direkomendasikan bisa berupa peran khusus yang sudah ada, atau satu atau beberapa peran yang telah ditetapkan.
REPLACE_ROLE_STORAGE_BUCKET Rekomendasi untuk mengganti peran level bucket akun utama dengan peran yang kurang permisif. Penggantian yang direkomendasikan bisa berupa peran khusus yang sudah ada, atau satu atau beberapa peran yang telah ditetapkan.
SERVICE_AGENT_WITH_DEFAULT_ROLE Rekomendasi untuk mengganti peran Pemilik, Editor, atau Viewer akun layanan yang dikelola Google dengan peran yang otomatis diberikan ke akun layanan saat dibuat. Untuk mengetahui informasi selengkapnya, lihat Rekomendasi untuk akun layanan yang dikelola Google.
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Rekomendasi untuk mengganti peran Pemilik, Editor, atau Viewer akun layanan yang dikelola Google dengan peran yang kurang permisif. Untuk mengetahui informasi selengkapnya, lihat Rekomendasi untuk akun layanan yang dikelola Google.

Rekomendasi peran untuk akun layanan yang dikelola Google

Untuk akun layanan yang dikelola Google, pemberi rekomendasi IAM hanya memberikan rekomendasi untuk peran dasar (Pemilik, Editor, atau Viewer).

Rekomendasi untuk akun layanan yang dikelola Google dibagi menjadi dua subjenis rekomendasi.

SERVICE_AGENT_WITH_DEFAULT_ROLE

Saat pembuatan, beberapa akun layanan yang dikelola Google akan otomatis diberi peran agen layanan untuk memastikan layanan Google Cloud Anda berfungsi dengan baik. Jika Anda mengganti peran ini dengan peran dasar (Pemilik, Editor, atau Viewer), rekomendasi peran mungkin menyarankan agar Anda memulihkan peran agen layanan awal untuk menghapus izin yang berlebihan, meskipun peran agen layanan memiliki izin yang tidak dalam peran dasar. Rekomendasi ini memiliki subjenis SERVICE_AGENT_WITH_DEFAULT_ROLE. Fitur ini membantu Anda menghapus kelebihan izin dengan aman, sekaligus memastikan bahwa semua layanan Google Cloud berfungsi dengan benar.

Rekomendasi SERVICE_AGENT_WITH_DEFAULT_ROLE adalah satu-satunya jenis rekomendasi yang mungkin menyarankan peran dengan izin yang tidak dalam peran saat ini.

SERVICE_AGENT_WITHOUT_DEFAULT_ROLE

Jika akun layanan yang dikelola Google tidak diberi peran secara otomatis saat pembuatan, rekomendasi untuk akun layanan akan didasarkan secara eksklusif pada izin yang digunakan akun layanan. Rekomendasi ini memiliki subjenis SERVICE_AGENT_WITHOUT_DEFAULT_ROLE.

Rekomendasi peran di Security Command Center

Jika memiliki paket Premium Security Command Center, Anda dapat melihat beberapa subjenis rekomendasi peran sebagai temuan di Security Command Center. Setiap subjenis dikaitkan dengan detektor:

Subjenis rekomendasi Kategori temuan
REMOVE_ROLE Unused IAM role
REPLACE_ROLE IAM role has excessive permissions
SERVICE_AGENT_WITH_DEFAULT_ROLE Service agent role replaced with basic role
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Service agent granted basic role

Untuk mengetahui informasi selengkapnya tentang cara melihat rekomendasi peran di Security Command Center, lihat Pemberi rekomendasi IAM dalam dokumentasi Security Command Center.

Contoh rekomendasi peran

Contoh berikut menunjukkan jenis rekomendasi yang dapat Anda terima.

Mencabut peran yang ada

Pengguna my-user@example.com diberi peran Browser pada sebuah project. Peran Browser menyertakan enam izin yang memungkinkan pengguna melihat resource dalam project. Namun, selama 90 hari terakhir, my-user@example.com belum melihat resource apa pun.

Oleh karena itu, pemberi rekomendasi IAM membuat rekomendasi peran yang menyarankan agar Anda mencabut peran Browser dari my-user@example.com:

Konsol

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "This role has not been used during the observation window.",
  "etag": "\"9fc3241da8bfab51\"",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REMOVE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "description": "This role has not been used during the observation window.",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"9fc3241da8bfab51\"",
  "recommenderSubtype": "REMOVE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "priority": "P4"
}

Mengganti peran yang ada

Akun layanan diberi peran Editor (roles/editor) pada sebuah project. Peran dasar ini mencakup lebih dari 3.000 izin dan memberikan akses ekstensif ke project. Namun, selama 90 hari terakhir, akun layanan hanya menggunakan sebagian dari izin tersebut.

Oleh karena itu, pemberi rekomendasi IAM membuat rekomendasi peran yang menyarankan agar Anda mencabut peran Editor dan menggantinya dengan kombinasi dua peran lainnya, sehingga menghapus ribuan izin berlebih:

Konsol

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountUser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "member": "user:my-user@example.com",
      "minimumObservationPeriodInDays": "0",
      "removedRole": "roles/editor",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "etag": "\"0da9a354c2a83d96\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "priority": "P2",
  "recommenderSubtype": "REPLACE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountOwner"
            }
          },
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/editor",
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"0da9a354c2a83d96\"",
  "recommenderSubtype": "REPLACE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "priority": "P2"
}

Membuat peran khusus

Pengguna my-user@example.com diberi peran Cloud Trace Admin (roles/cloudtrace.admin) di sebuah project. Peran ini mencakup lebih dari 10 izin, tetapi insight kebijakan menunjukkan bahwa, selama 90 hari terakhir, my-user@example.com hanya menggunakan 4 dari izin tersebut.

Oleh karena itu, pemberi rekomendasi IAM membuat rekomendasi peran yang menyarankan agar Anda membuat peran khusus yang hanya menyertakan izin yang benar-benar digunakan my-user@example.com:

Konsol

gcloud

Subjenis REPLACE_ROLE_CUSTOMIZABLE menunjukkan bahwa pemberi rekomendasi IAM merekomendasikan untuk membuat peran kustom dengan izin yang digunakan. Untuk melihat izin yang digunakan, dapatkan insight kebijakan terkait.

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "associatedResourceNames": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "etag": "\"c7f57a4725d32d66\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "originalContent": {},
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {},
      "revokedIamPermissionsCount": 1
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ]
}

REST

Subjenis REPLACE_ROLE_CUSTOMIZABLE menunjukkan bahwa pemberi rekomendasi IAM merekomendasikan pembuatan peran kustom dengan izin yang digunakan. Untuk melihat izin yang digunakan, dapatkan insight kebijakan terkait.

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 1
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            }
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"c7f57a4725d32d66\"",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "priority": "P4"
}

Rekomendasi peran ini juga menyarankan opsi lain, yaitu mengganti peran yang ada dengan peran Cloud Trace User (roles/cloudtrace.user). Peran bawaan ini mencakup izin yang sedikit lebih sedikit dibandingkan peran Admin Cloud Trace.

Penggantian peran dengan izin yang disarankan oleh machine learning

Akun layanan diberi peran Editor (roles/editor) pada sebuah project. Peran dasar ini mencakup lebih dari 3.000 izin dan memberikan akses luas ke sebuah project. Namun, insight kebijakan menunjukkan bahwa, selama 90 hari terakhir, akun layanan menggunakan kurang dari 10 izin.

Insight kebijakan juga menyoroti beberapa izin yang mungkin akan diperlukan akun layanan di masa mendatang. Pemberi rekomendasi IAM mengidentifikasi izin tersebut menggunakan machine learning.

Pemberi rekomendasi IAM membuat rekomendasi peran yang menyarankan agar Anda mencabut peran Editor dan menggantinya dengan peran Storage Object Admin (roles/storage.objectAdmin), yang memberikan kontrol penuh atas objek di bucket Cloud Storage. Perubahan ini menghapus ribuan izin berlebih, sekaligus tetap menyertakan izin yang digunakan akun layanan dan izin yang mungkin diperlukan akun layanan di masa mendatang:

Konsol

Pemberi rekomendasi IAM menggunakan ikon Machine learning untuk mengidentifikasi izin yang ditambahkan berdasarkan machine learning pemberi rekomendasi IAM, bukan penggunaan izin. Dalam contoh ini, izin resourcemanager.projects.get direkomendasikan berdasarkan machine learning:

gcloud

Izin yang ditambahkan berdasarkan machine learning pemberi rekomendasi IAM, bukan penggunaan izin, tidak tercantum dalam rekomendasi itu sendiri. Sebaliknya, peristiwa tersebut akan tercantum dalam insight kebijakan yang terkait dengan rekomendasi. Semua izin berbasis ML tercantum di kolom inferredPermissions pada insight. Dalam contoh ini, izin resourcemanager.projects.get direkomendasikan berdasarkan machine learning:

associatedRecommendations:
- recommendation: projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '5069'
  exercisedPermissions:
  - permission: storage.objects.create
  - permission: storage.objects.delete
  - permission: storage.objects.get
  - permission: storage.objects.list
  inferredPermissions:
  - permission: resourcemanager.projects.get
  member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com
  role: roles/editor
description: 4 of the permissions in this role binding were used in the past 90 days.
etag: '"d3cdec23cc712bd0"'
insightSubtype: PERMISSIONS_USAGE
lastRefreshTime: '2020-07-11T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040
observationPeriod: 7776000s
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012
severity: HIGH

Untuk mempelajari cara mendapatkan insight kebijakan, lihat artikel Meninjau insight kebijakan.

REST

Izin yang ditambahkan berdasarkan machine learning pemberi rekomendasi IAM, bukan penggunaan izin, tidak tercantum dalam rekomendasi itu sendiri. Sebaliknya, peristiwa tersebut akan tercantum dalam insight kebijakan yang terkait dengan rekomendasi. Semua izin berbasis ML tercantum di kolom inferredPermissions pada insight. Dalam contoh ini, izin resourcemanager.projects.get direkomendasikan berdasarkan machine learning:

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568",
  "description": "4 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/editor",
    "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [
      {
        "permission": "storage.objects.create"
      },
      {
        "permission": "storage.objects.delete"
      },
      {
        "permission": "storage.objects.get"
      },
      {
        "permission": "storage.objects.list"
      }
    ],
    "inferredPermissions": [
      {
        "permission": "resourcemanager.projects.get"
      }
    ],
    "currentTotalPermissionsCount": "5069"
  },
  "lastRefreshTime": "2020-07-12T07:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "PERMISSIONS_USAGE",
  "etag": "\"d3cdec23cc712bd0\"",
  "severity": "HIGH"
}

Untuk mempelajari cara mendapatkan insight kebijakan, lihat artikel Meninjau insight kebijakan.

Langkah selanjutnya