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 utama secara langsung, tetapi berikan peran kepada akun utama. Saat peran diberikan ke akun utama, semua izin pada peran tersebut juga diberikan. 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 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 jika diperlukan, seperti saat Logging menambahkan fitur baru.

Tabel berikut mencantumkan peran bawaan untuk Logging. Untuk setiap peran, tabel menampilkan judul peran, deskripsi, izin yang terdapat, dan jenis resource level terendah tempat peran dapat diberikan. Anda dapat memberikan peran yang telah ditetapkan di level project Google Cloud atau, pada umumnya, jenis apa pun yang lebih tinggi dalam hierarki Google Cloud. Untuk mengatur cakupan peran Logs View Accessor lebih ketat ke level 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.delete

logging.buckets.get

logging.buckets.list

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.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.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.update
  • logging.queries.updateShared

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

logging.views.*

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

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

logging.buckets.get

logging.buckets.list

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.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.views.create

logging.views.delete

logging.views.get

logging.views.list

logging.views.update

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

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

resourcemanager.projects.get

(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.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

resourcemanager.projects.get

Bagian berikut memberikan informasi tambahan untuk membantu Anda menentukan peran 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).

  • Agar pengguna dapat membuat dan mengubah konfigurasi logging, seperti sink, bucket, tampilan, link, metrik berbasis log, atau pengecualian, berikan peran Logs Configuration Writer (roles/logging.configWriter).

  • Untuk mengizinkan pengguna membaca log di bucket _Required dan _Default, gunakan Logs Explorer, dan gunakan halaman 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).
  • Untuk mengizinkan pengguna membaca log yang disimpan di bucket yang ditentukan pengguna, berikan peran Logs View Accessor (roles/logging.viewAccessor). Anda dapat membatasi otorisasi untuk tampilan log tertentu di bucket tertentu menggunakan kondisi IAM. Baca bagian Memberikan akses ke tampilan log.

  • Untuk memberi pengguna akses ke kolom LogEntry yang dibatasi, jika ada, di bucket tertentu, berikan peran Logs Field Accessor (roles/logging.fieldAccessor). Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi akses tingkat kolom.

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

  • Agar akun layanan dari sink merutekan log ke bucket dalam project Google Cloud lain, berikan peran Logs Bucket Writer (roles/logging.bucketWriter) ke akun layanan. Untuk petunjuk tentang 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, 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 Owner (roles/owner).

Pemberian peran

Untuk mempelajari cara memberikan peran ke 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, baca artikel Memahami peran khusus IAM.

Izin untuk Logging API

Metode Logging API memerlukan izin IAM tertentu. Tabel berikut mencantumkan izin yang diperlukan oleh metode API.

Jika Anda tertarik dengan log yang disimpan di organisasi, akun penagihan, dan folder Google Cloud, perhatikan bahwa resource tersebut memiliki metode API sendiri untuk logs dan sinks. Daripada mengulangi semua metode dalam tabel, hanya metode projects yang ditampilkan satu per satu.

Metode logging Izin yang diperlukan Jenis aset
billingAccounts.logs.* logging.logs.* (Lihat projects.logs.*) akun penagihan
billingAccounts.sinks.* logging.sinks.* (Lihat projects.sinks.*.) akun penagihan
billingAccounts.locations.buckets.* logging.buckets.* (Lihat projects.locations.buckets.*.) akun penagihan
entries.list logging.logEntries.list atau
logging.privateLogEntries.list
project, organisasi,
folder, akun penagihan
entries.tail logging.logEntries.list atau
logging.privateLogEntries.list
project, organisasi,
folder, akun penagihan
entries.write logging.logEntries.create project, organisasi,
folder, akun penagihan
folders.logs.* logging.logs.* (Lihat projects.logs.*) folder
folders.sinks.* logging.sinks.* (Lihat projects.sinks.*) folder
folders.locations.buckets.* logging.buckets.* (Lihat projects.locations.buckets.*) folder
monitoredResourceDescriptors.list (tidak ada) (tidak ada)
organizations.logs.* logging.logs.* (Lihat projects.logs.*) organizations
organizations.sinks.* logging.sinks.* (Lihat projects.sinks.*) organizations
organizations.locations.buckets.* logging.buckets.* (Lihat projects.locations.buckets.*) organizations
projects.exclusions.create logging.exclusions.create projects
projects.exclusions.delete logging.exclusions.delete projects
projects.exclusions.get logging.exclusions.get projects
projects.exclusions.list logging.exclusions.list projects
projects.exclusions.patch logging.exclusions.update projects
projects.logs.list logging.logs.list projects
projects.logs.delete logging.logs.delete projects
projects.sinks.list logging.sinks.list projects
projects.sinks.get logging.sinks.get projects
projects.sinks.create logging.sinks.create projects
projects.sinks.update logging.sinks.update projects
projects.sinks.delete logging.sinks.delete projects
projects.locations.buckets.list logging.buckets.list projects
projects.locations.buckets.get logging.buckets.get projects
projects.locations.buckets.patch logging.buckets.update projects
projects.locations.buckets.create logging.buckets.create projects
projects.locations.buckets.delete logging.buckets.delete projects
projects.locations.buckets.undelete logging.buckets.undelete projects
projects.metrics.list logging.logMetrics.list projects
projects.metrics.get logging.logMetrics.get projects
projects.metrics.create logging.logMetrics.create projects
projects.metrics.update logging.logMetrics.update projects
projects.metrics.delete logging.logMetrics.delete projects

Izin untuk konsol Google Cloud

Tabel berikut mencantumkan izin yang diperlukan untuk menggunakan 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
Menambahkan kemampuan untuk melihat log audit Akses Data Tambahkan logging.privateLogEntries.list
Tambahkan kemampuan untuk melihat metrik berbasis log Tambahkan logging.logMetrics.{list, get}
Menambahkan kemampuan untuk melihat sink Tambahkan logging.sinks.{list, get}
Menambahkan kemampuan untuk melihat penggunaan log Tambahkan logging.usage.get
Menambahkan kemampuan untuk mengecualikan log Tambahkan logging.exclusions.{list, create, get, update, delete}
Menambahkan kemampuan untuk menggunakan sink Menambahkan logging.sinks.{list, create, get, update, delete}
Menambahkan kemampuan untuk membuat metrik berbasis log Tambahkan logging.logMetrics.{list, create, get, update, delete}
Tambahkan kemampuan untuk menyimpan kueri Tambahkan logging.queries.{list, create, get, update, delete}
Tambahkan kemampuan untuk membagikan kueri Tambahkan logging.queries.share
Tambahkan kemampuan untuk menggunakan kueri terbaru Tambahkan logging.queries.{create, list}

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.

Daftar berikut ini menjelaskan peran yang telah ditetapkan dan izin yang sesuai untuk mengelola set data BigQuery tertaut:

Peran dan izin yang tercantum sebelumnya hanya berlaku untuk halaman Logging, seperti halaman Log Analytics. Jika Anda menggunakan antarmuka BigQuery untuk mengelola set data, Anda mungkin memerlukan peran dan izin BigQuery yang terpisah. Lihat Kontrol akses dengan IAM untuk BigQuery guna mengetahui informasi selengkapnya.

Izin untuk merutekan log

Untuk mengetahui informasi tentang cara menetapkan kontrol akses saat membuat dan mengelola sink untuk merutekan log, lihat Menetapkan izin tujuan.

Perhatikan bahwa pengelolaan filter pengecualian terintegrasi dengan mengonfigurasi sink. Semua izin yang terkait dengan pengelolaan sink, termasuk menyetel filter pengecualian, disertakan dalam izin logging.sinks.*. Saat membuat peran kustom yang menyertakan izin untuk mengelola filter pengecualian, tambahkan izin logging.sinks.* ke peran, bukan menambahkan izin logging.exclusions.*.

Setelah entri log Anda dirutekan ke tujuan yang didukung, akses ke salinan log dikontrol sepenuhnya oleh izin dan peran IAM pada tujuan: Cloud Storage, BigQuery, atau Pub/Sub.

Izin untuk metrik berbasis log

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

  • Peran Logs Configuration Writer (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.

Izin untuk notifikasi berbasis log

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

  • Untuk mendapatkan izin yang diperlukan untuk membaca log dan mengelola aturan notifikasi Logging, minta administrator untuk memberi Anda peran IAM Admin Logging (roles/logging.admin) pada project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

  • Untuk mendapatkan izin yang Anda perlukan untuk mengelola kebijakan dan saluran pemberitahuan yang digunakan oleh pemberitahuan berbasis log, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:

  • Untuk mendapatkan izin yang diperlukan guna membuat kebijakan pemberitahuan di Google Cloud CLI, minta administrator untuk memberi Anda peran IAM Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) di project Anda.

Logging cakupan akses

Cakupan akses adalah metode lama untuk menentukan izin bagi 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 lainnya yang diaktifkan.

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