Kontrol akses dengan IAM

Cloud Logging menggunakan peran dan izin Identity and Access Management (IAM) untuk memungkinkan Anda mengontrol siapa yang dapat melihat, menulis, dan mengelola resource Logging. Peran IAM Anda menentukan apakah Anda dapat membuat sink log atau bucket log, membaca data log yang disimpan di bucket log, atau mengakses halaman seperti Logs Explorer. Saat Anda mengeluarkan perintah Cloud Logging API atau Google Cloud CLI, peran IAM Anda juga menentukan apakah Anda memiliki izin untuk menjalankan perintah tersebut.

Ringkasan

Peran IAM Anda menentukan tindakan yang dapat Anda lakukan dalam Logging. Peran adalah kumpulan izin. Saat Anda memberikan peran kepada akun utama, Anda memberikan semua izin yang terdapat dalam peran tersebut kepada akun utama. Anda dapat memberikan beberapa peran ke akun utama yang sama.

Peran IAM diberikan pada resource, seperti project, folder, bucket, atau organisasi Google Cloud . Misalnya, Anda dapat memberikan peran Logs Viewer (roles/logging.viewer) kepada akun utama di project Google Cloud tertentu.

Bagian Peran yang telah ditetapkan dan Peran logging di halaman ini memberikan informasi komprehensif tentang peran dan izin Logging. Bagian lain dari halaman ini memberikan informasi tentang peran atau izin untuk kasus penggunaan tertentu.

Bagian selanjutnya merangkum cara memberikan akses ke bucket log kepada akun utama atau memberikan akses hanya ke beberapa entri log dalam bucket log.

Memberikan akses ke bucket log

Peran Logs Viewer (roles/logging.viewer) memungkinkan akun utama mengakses semua data log yang disimpan di bucket log _Required dan _Default, kecuali untuk log akses data. Jika akun utama memerlukan akses ke log akses data, berikan peran Private Logs Viewer (roles/logging.privateLogViewer).

Untuk bucket log kustom, Anda dapat memberikan akses ke tampilan _AllLogs atau ke tampilan log kustom. Logging otomatis membuat tampilan _AllLogs, yang mencakup semua entri log dalam bucket log. Untuk memberikan akses ke tampilan log, tambahkan binding IAM ke kebijakan IAM yang dilampirkan ke tampilan log atau ke project. Untuk mempelajari lebih lanjut, lihat Mengontrol akses ke tampilan log.

Logging juga mendukung tag pada bucket log, yang dapat membantu Anda memahami biaya. Anda juga dapat menggunakan tag untuk mencegah pengguna menghapus bucket log. Untuk mempelajari lebih lanjut, lihat Menggunakan tag untuk mengelola akses ke bucket log.

Memberikan akses ke beberapa entri log di bucket log

Untuk memberi akun utama akses hanya ke beberapa entri log yang disimpan di bucket log, buat tampilan log, lalu beri akun utama akses ke tampilan log tersebut. Misalnya, Anda dapat membuat tampilan log di bucket log _Default yang hanya menyertakan entri log yang jenis resource-nya adalah instance Compute Engine. Untuk mempelajari lebih lanjut cara membuat tampilan log dan berbagai strategi yang dapat Anda gunakan untuk memberikan akses ke tampilan, lihat Mengonfigurasi tampilan log di bucket log.

Peran yang telah ditetapkan

IAM menyediakan peran bawaan untuk memberikan akses terperinci ke resource Google Cloud tertentu dan mencegah akses yang tidak diinginkan ke resource lain. Google Cloud membuat dan mengelola peran ini serta otomatis memperbarui izinnya sesuai kebutuhan, seperti saat Logging menambahkan fitur baru.

Tabel berikut mencantumkan peran yang telah ditetapkan 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 yang telah ditetapkan di tingkat Google Cloud project 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:

  • View

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

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(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:

  • View

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

  • View

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(roles/logging.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

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

Peran logging

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

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

  • Untuk mengizinkan pengguna membaca log di bucket _Required dan _Default atau menggunakan halaman Logs Explorer, 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).
  • Untuk mengizinkan pengguna membaca log di semua tampilan log yang ada dalam project, beri mereka peran IAM roles/logging.viewAccessor pada project tersebut.

  • Untuk mengizinkan pengguna hanya 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 kepada akun utama ke tampilan log.

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

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

  • Untuk mengizinkan pengguna menulis log menggunakan Logging API, berikan peran Logs Writer (roles/logging.logWriter). Peran ini tidak memberikan izin melihat.

  • Agar akun layanan sink dapat merutekan log ke bucket di project Google Cloud yang berbeda, beri akun layanan tersebut peran Logs Bucket Writer (roles/logging.bucketWriter). Untuk mengetahui 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 memberikan akses editor 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), serta izin untuk menulis entri log dan menghapus log. Namun, peran ini tidak mengizinkan 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 Owner (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 khusus dengan izin Logging, lakukan hal berikut:

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

Izin Cloud Logging

Tabel berikut adalah daftar sebagian izin yang diperlukan untuk fitur tertentu di Cloud Logging. 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 sink logging.sinks.{list, get}
Melihat penggunaan log logging.usage.get
Download log logging.logEntries.{list, download}

Hanya salah 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.

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

Saat membuat peran khusus 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 memberi akun layanan peran IAM 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.

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

Izin untuk command line

Perintah gcloud logging dikontrol oleh izin IAM.

Untuk menggunakan 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.