Kontrol akses dengan IAM

Dokumen ini menjelaskan cara Anda menggunakan peran dan izin Identity and Access Management (IAM) untuk mengontrol akses ke data log di Logging API, Logs Explorer, dan Google Cloud CLI.

Ringkasan

Izin dan peran IAM menentukan kemampuan Anda untuk mengakses data log di Logging API, Logs Explorer, dan Google Cloud CLI.

Peran adalah kumpulan izin. Anda tidak dapat memberikan izin akun utama secara langsung; sebagai gantinya, Anda dapat memberikan peran kepada mereka. Saat memberikan peran kepada akun utama, Anda memberikan semua izin yang dimiliki oleh peran tersebut. Anda dapat memberikan beberapa peran ke akun utama yang sama.

Untuk menggunakan Logging dalam resource Google Cloud, seperti project, folder, bucket, atau organisasi Google Cloud, akun utama harus memiliki peran IAM yang berisi izin yang sesuai.

Peran yang telah ditetapkan

IAM menyediakan peran yang telah ditetapkan untuk memberikan akses terperinci ke resource Google Cloud tertentu dan mencegah akses yang tidak diinginkan ke resource lainnya. Google Cloud membuat dan mengelola peran ini serta otomatis memperbarui izinnya jika diperlukan, seperti saat Logging menambahkan fitur baru.

Tabel berikut mencantumkan peran standar untuk Logging. Untuk setiap peran, tabel menampilkan judul peran, deskripsi, izin yang dimuat, dan jenis resource level terendah tempat peran dapat diberikan. Anda dapat memberikan peran bawaan di tingkat project Google Cloud atau, dalam sebagian besar kasus, jenis apa pun yang lebih tinggi dalam hierarki resource. Untuk membatasi peran Logs View Accessor ke tampilan log di bucket, gunakan atribut resource untuk IAM Conditions.

Untuk mendapatkan daftar semua izin individual yang terdapat dalam peran, lihat Mendapatkan metadata peran.

Role Permissions

(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.getIamPolicy
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.setIamPolicy
  • logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.fields.access

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logScopes.get

logging.logScopes.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

Bagian berikut memberikan informasi tambahan untuk membantu Anda memutuskan peran yang berlaku untuk kasus penggunaan akun utama Anda.

Peran logging

  • Agar pengguna dapat melakukan semua tindakan di Logging, berikan peran Logging Admin (roles/logging.admin).

  • Agar pengguna dapat membuat dan mengubah konfigurasi logging, berikan peran Logs Configuration Writer (roles/logging.configWriter). Peran ini memungkinkan Anda membuat atau mengubah salah satu hal berikut:

    Peran ini tidak memadai untuk membuat metrik berbasis log atau kebijakan pemberitahuan berbasis log. Untuk informasi tentang peran yang diperlukan untuk tugas ini, lihat Izin untuk metrik berbasis log dan Izin untuk kebijakan pemberitahuan berbasis log.

  • Untuk mengizinkan pengguna membaca log di bucket _Required dan _Default atau menggunakan halaman Logs Explorer dan Log Analytics, berikan salah satu peran berikut:

    • Untuk akses ke semua log di bucket _Required, dan akses ke tampilan _Default di bucket _Default, berikan peran Logs Viewer (roles/logging.viewer).
    • Untuk akses ke semua log di bucket _Required dan _Default, termasuk log akses data, berikan peran Private Logs Viewer (roles/logging.privateLogViewer).
  • Agar pengguna dapat membaca log di semua tampilan log yang ada dalam project, berikan peran IAM roles/logging.viewAccessor pada project tersebut.

  • Agar pengguna hanya dapat membaca log dalam tampilan log tertentu, Anda memiliki dua opsi:

    • Buat kebijakan IAM untuk tampilan log, lalu tambahkan binding IAM ke kebijakan tersebut yang memberikan akses utama ke tampilan log.

    • Berikan peran IAM roles/logging.viewAccessor kepada akun utama di project yang berisi tampilan log, tetapi lampirkan kondisi IAM untuk membatasi pemberian ke tampilan log tertentu.

    Untuk informasi tentang cara membuat tampilan log dan memberikan akses, lihat Mengonfigurasi tampilan log di bucket log.

  • Untuk memberi pengguna akses ke kolom LogEntry yang dibatasi, jika ada, di bucket log tertentu, berikan peran Logs Field Accessor (roles/logging.fieldAccessor). Untuk informasi selengkapnya, lihat Mengonfigurasi akses tingkat kolom.
  • Agar pengguna dapat menulis log menggunakan Logging API, berikan peran Penulis Log (roles/logging.logWriter). Peran ini tidak memberikan izin melihat.

  • Agar akun layanan rute sink dapat mencatat log ke bucket di project Google Cloud yang berbeda, berikan peran Logs Bucket Writer (roles/logging.bucketWriter) ke akun layanan. Untuk petunjuk tentang cara memberikan izin ke akun layanan, lihat Menetapkan izin tujuan.

Peran level project

  • Untuk memberikan akses lihat ke sebagian besar layanan Google Cloud, berikan peran Viewer (roles/viewer).

    Peran ini mencakup semua izin yang diberikan oleh peran Logs Viewer (roles/logging.viewer).

  • Untuk memberi editor akses ke sebagian besar layanan Google Cloud, berikan peran Editor (roles/editor).

    Peran ini mencakup semua izin yang diberikan oleh peran Logs Viewer (roles/logging.viewer), dan izin untuk menulis entri log, menghapus log, dan membuat metrik berbasis log. Namun, peran ini tidak memungkinkan pengguna membuat sink, membaca log audit Akses Data yang ada di bucket _Default, atau membaca log yang ada di bucket log yang ditentukan pengguna.

  • Untuk memberikan akses penuh ke sebagian besar layanan Google Cloud, berikan peran Pemilik (roles/owner).

Memberikan peran

Untuk mempelajari cara memberikan peran kepada akun utama, lihat Memberikan, mengubah, dan mencabut akses.

Anda dapat memberikan beberapa peran kepada pengguna yang sama. Untuk mendapatkan daftar izin yang terdapat dalam peran, lihat Mendapatkan metadata peran.

Jika Anda mencoba mengakses resource Google Cloud dan tidak memiliki izin yang diperlukan, hubungi akun utama yang tercantum sebagai Pemilik untuk resource tersebut.

Peran khusus

Untuk membuat peran kustom dengan izin Logging, lakukan tindakan berikut:

Untuk mengetahui informasi selengkapnya tentang peran khusus, lihat Memahami peran khusus IAM.

Izin Cloud Logging

Tabel berikut adalah sebagian daftar izin yang diperlukan untuk fitur Cloud Logging tertentu. Tabel ini dapat membantu Anda mengidentifikasi izin yang diperlukan untuk menggunakan halaman seperti Logs Explorer.

Dalam tabel, a.b.{x,y} berarti a.b.x dan a.b.y.

Aktivitas konsol Izin yang diperlukan
Akses hanya baca minimal logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Melihat log audit Akses Data logging.privateLogEntries.list
Melihat metrik berbasis log logging.logMetrics.{list, get}
Melihat sink logging.sinks.{list, get}
Melihat penggunaan log logging.usage.get
Download log logging.logEntries.{list, download}

Hanya satu dari izin ini yang diperlukan untuk mendownload log. Peran yang berisi izin untuk mendownload log harus diberikan di level project. Anda tidak dapat mendownload log jika peran yang berisi izin ini diberikan dalam file kebijakan IAM dari tampilan log.

Melihat cakupan log default observability.scopes.get
Kecualikan log logging.exclusions.{list, create, get, update, delete}

Saat membuat peran kustom yang menyertakan izin untuk mengelola filter pengecualian, tambahkan izin logging.sinks.* ke peran, bukan menambahkan izin logging.exclusions.*.

Membuat dan menggunakan sink logging.sinks.{list, create, get, update, delete}

Saat membuat sink, Anda juga harus memberikan peran IAM ke akun layanan yang memungkinkannya menulis entri log ke tujuan. Untuk mengetahui informasi selengkapnya, lihat Menetapkan izin tujuan.

Setelah entri log Anda dirutekan ke tujuan yang didukung, akses ke entri log sepenuhnya dikontrol oleh izin dan peran IAM di tujuan.

Membuat pemberitahuan berbasis log Lihat Peran yang diperlukan untuk membuat dan menggunakan kebijakan pemberitahuan berbasis log.
Membuat metrik berbasis log logging.logMetrics.{list, create, get, update, delete}

Untuk informasi tentang peran IAM lain yang Anda perlukan untuk membuat dan menggunakan metrik berbasis log, lihat Peran yang diperlukan untuk membuat dan menggunakan metrik berbasis log.

Menyimpan dan menggunakan kueri pribadi logging.queries.usePrivate
logging.queries.{listShared,getShared}
Menyimpan dan menggunakan kueri bersama logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Menggunakan kueri terbaru logging.queries.{create, list}
Menetapkan dan mengelola cakupan log default observability.scopes.{get, update}

Izin untuk command line

Perintah gcloud logging dikontrol oleh izin IAM.

Untuk menggunakan salah satu perintah gcloud logging, akun utama harus memiliki izin serviceusage.services.use.

Akun utama juga harus memiliki peran IAM yang sesuai dengan resource log, dan kasus penggunaan. Untuk mengetahui detailnya, lihat izin antarmuka command line.

Peran yang diperlukan untuk membuat dan menggunakan metrik berbasis log

Berikut adalah ringkasan peran dan izin umum yang diperlukan akun utama untuk mengakses metrik berbasis log:

  • Peran Penulis Konfigurasi Log (roles/logging.configWriter) memungkinkan akun utama mencantumkan, membuat, mendapatkan, memperbarui, dan menghapus metrik berbasis log.

  • Peran Logs Viewer (roles/logging.viewer) berisi izin untuk melihat metrik yang ada. Secara khusus, akun utama memerlukan izin logging.logMetrics.get dan logging.logMetrics.list untuk melihat metrik yang ada.

  • Peran Monitoring Viewer (roles/monitoring.viewer) berisi izin untuk membaca data TimeSeries. Secara khusus, akun utama memerlukan izin monitoring.timeSeries.list untuk membaca data deret waktu.

  • Peran Logging Admin (roles/logging.admin), Project Editor (roles/editor), dan Project Owner (roles/owner) berisi izin untuk membuat metrik berbasis log. Secara khusus, akun utama memerlukan izin logging.logMetrics.create untuk membuat metrik berbasis log.

Peran yang diperlukan untuk membuat dan menggunakan kebijakan pemberitahuan berbasis log

Untuk membuat dan mengelola kebijakan pemberitahuan berbasis log, akun utama memerlukan peran dan izin Logging dan Pemantauan berikut:

  • Untuk mendapatkan izin yang Anda perlukan guna membuat kebijakan pemberitahuan berbasis log di Pemantauan dan membuat aturan notifikasi Logging terkait, minta administrator untuk memberi Anda peran IAM berikut di project Anda:

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat kebijakan pemberitahuan berbasis log di Pemantauan dan membuat aturan notifikasi Logging terkait. Untuk melihat izin yang pasti diperlukan, luaskan bagian Izin yang diperlukan:

    Izin yang diperlukan

    Izin berikut diperlukan untuk membuat kebijakan pemberitahuan berbasis log di Pemantauan dan untuk membuat aturan notifikasi Logging terkait:

    • monitoring.alertPolicies.create
    • logging.notificationRules.create

    Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Jika Anda membuat kebijakan pemberitahuan di Google Cloud CLI, peran atau izin berikut juga diperlukan:

  • Untuk mendapatkan izin yang diperlukan guna membuat kebijakan pemberitahuan menggunakan Google Cloud CLI, minta administrator untuk memberi Anda peran IAM Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Peran bawaan ini berisi izin serviceusage.services.use, yang diperlukan untuk membuat kebijakan pemberitahuan menggunakan Google Cloud CLI.

    Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Jika project Google Cloud Anda sudah memiliki saluran notifikasi, Anda dapat mengonfigurasi kebijakan pemberitahuan untuk menggunakan saluran yang ada tanpa peran atau izin tambahan. Namun, jika Anda perlu membuat saluran notifikasi untuk kebijakan pemberitahuan berbasis log, peran atau izin berikut diperlukan:

  • Untuk mendapatkan izin yang diperlukan guna membuat saluran notifikasi untuk kebijakan pemberitahuan berbasis log, minta administrator untuk memberi Anda peran IAM Monitoring NotificationChannel Editor (roles/monitoring.notificationChannelEditor) di project Anda.

    Peran bawaan ini berisi izin monitoring.notificationChannels.create, yang diperlukan untuk membuat saluran notifikasi untuk kebijakan pemberitahuan berbasis log.

Izin untuk kebijakan pemberitahuan berbasis SQL

Kebijakan pemberitahuan berbasis SQL mengevaluasi hasil kueri SQL yang dijalankan terhadap data dari grup entri log. Untuk informasi tentang peran yang diperlukan untuk membuat dan mengelola kebijakan pemberitahuan berbasis SQL, lihat bagian Sebelum memulai di Memantau hasil kueri SQL dengan kebijakan pemberitahuan.

Cakupan akses logging

Cakupan akses adalah metode lama untuk menentukan izin akun layanan di instance VM Compute Engine Anda.

Cakupan akses berikut berlaku untuk Logging API:

Cakupan akses Izin yang diberikan
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Akses penuh ke Logging API.
https://www.googleapis.com/auth/cloud-platform Akses penuh ke Logging API dan ke semua Google Cloud API lain yang diaktifkan.

Untuk mengetahui informasi tentang cara menggunakan metode lama ini untuk menetapkan tingkat akses akun layanan, lihat Cakupan akses.