Memahami log audit

Halaman ini menjelaskan entri log Cloud Audit Logs secara mendetail: strukturnya, cara membacanya, dan cara menafsirkannya.

Cloud Audit Logs menyediakan log audit berikut untuk setiap project, folder, dan organisasi Google Cloud:

  • Log audit Aktivitas Admin
  • Log audit Akses Data
  • Log audit Peristiwa Sistem
  • Log audit Kebijakan Ditolak

Untuk ringkasan umum tentang Cloud Audit Logs, lihat Cloud Audit Logs.

Format entri log audit

Entri log audit adalah jenis entri log Cloud Logging. Seperti semua entri log Logging, entri log audit disimpan dalam objek LogEntry. Yang membedakan entri log audit dengan entri log lainnya adalah kolom protoPayload. Dalam entri log audit, kolom protoPayload entri log berisi objek AuditLog yang menyimpan data logging audit.

Singkatnya, setiap entri log audit ditandai dengan informasi berikut:

  • Project, folder, atau organisasi yang memiliki entri log.
  • Resource tempat entri log diterapkan. Informasi ini terdiri dari jenis resource dari Daftar resource yang dipantau dan nilai tambahan yang menunjukkan instance tertentu. Misalnya, Anda dapat melihat entri log audit dari satu instance VM Compute Engine atau dari semua instance VM.
  • Stempel waktu.
  • Layanan: Layanan adalah produk Google Cloud individual, seperti Compute Engine, Cloud SQL, atau Pub/Sub. Setiap layanan diidentifikasi berdasarkan nama: Compute Engine adalah compute.googleapis.com, Cloud SQL adalah cloudsql.googleapis.com, dan seterusnya. Informasi ini tercantum di kolom protoPayload.serviceName pada entri log audit.

    Jenis resource dimiliki oleh satu layanan, tetapi layanan dapat memiliki beberapa jenis resource. Untuk mengetahui daftar layanan dan resource, buka Memetakan layanan ke resource.

  • Payload, yang merupakan jenis protoPayload. Payload setiap entri log audit adalah objek berjenis AuditLog, yang menentukan kumpulan kolom khusus untuk Cloud Audit Logs, seperti serviceName dan authenticationInfo. Ini juga memiliki kolom opsional, metadata, yang digunakan layanan Google Cloud untuk mencantumkan informasi khusus layanan dalam entri log audit. Beberapa layanan Google Cloud masih menggunakan kolom serviceData lama untuk mencantumkan informasi khusus layanan. Untuk daftar layanan yang menggunakan kolom serviceData, lihat Data audit khusus layanan.

  • Nama log: Entri log audit termasuk dalam log dalam project, folder, dan organisasi. Nama log tersebut tercantum di bawah ini:

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

Dalam project, folder, atau organisasi, nama log ini biasanya disingkat activity, data_access, system_event, dan policy.

Contoh entri log audit

Bagian ini menggunakan contoh entri log audit untuk menjelaskan cara menemukan informasi yang paling penting dalam entri log audit.

Contoh berikut adalah entri log audit Aktivitas Admin yang ditulis oleh App Engine untuk mencatat perubahan pada kebijakan Identity and Access Management (IAM) dengan PROJECT_ID my-gcp-project-id. Agar lebih singkat, beberapa bagian entri log dihilangkan, dan beberapa kolom ditandai:

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "appengine.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.appengine.legacy.AuditData",
          policyDelta: { bindingDeltas: [
              action: "ADD",
              role: "roles/logging.privateLogViewer",
              member: "user:user@example.com"
          ], }
        },
        request: {
          resource: "my-gcp-project-id",
          policy: { bindings: [...], }
        },
        response: {
          bindings: [
            {
              role: "roles/logging.privateLogViewer",
              members: [ "user:user@example.com" ]
            }
          ],
        }
      },
      insertId: "53179D9A9B559.AD6ACC7.B40604EF",
      resource: {
        type: "gae_app",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2019-05-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

Berikut adalah kueri yang digunakan untuk memilih contoh entri log audit di atas. Log ini dapat digunakan di Logs Explorer, Logging API, atau Google Cloud CLI. ID project ada dalam nama log, dan kuerinya cepat karena kolom logName diindeks:

    resource.type = "gae_app"
    logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Jika Anda mencari log audit dari satu instance jenis resource, seperti gce_instance, tambahkan penentu instance:

    resource.type = "gce_instance"
    resource.instance_id = "INSTANCE_ID"
    logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Menafsirkan contoh entri log audit

Pada contoh entri log audit di atas, kolom protoPayload, insertId, resource, timestamp, severity, dan logName yang ditampilkan adalah bagian dari objek LogEntry. Nilai kolom protoPayload adalah objek AuditLog. Ringkasan ini mengenkapsulasi data logging audit.

Melihat contoh entri log audit di atas, Anda mungkin memiliki beberapa pertanyaan:

  • Apakah ini entri log audit? Tentu saja, yang dapat Anda ketahui dengan dua cara:

    • Kolom protoPayload.@type adalah type.googleapis.com/google.cloud.audit.AuditLog.

    • Kolom logName menyertakan domain cloudaudit.googleapis.com.

  • Layanan apa yang menulis log audit? Log tersebut ditulis oleh App Engine. Informasi ini tercantum di kolom protoPayload.serviceName pada entri log audit.

  • Operasi apa yang diaudit? SetIamPolicy, seperti yang ditentukan dalam kolom protoPayload.methodName, sedang diaudit. Informasi selengkapnya tentang operasi yang diaudit dapat ditemukan di objek AuditData di protoPayload.serviceData.

  • Resource apa yang diaudit? Aplikasi yang berjalan di App Engine, yang terkait dengan project Google Cloud my-gcp-project-id, sedang diaudit. Anda dapat menentukan ini dari kolom resource, yang menentukan jenis resource gae_app dan ID project my-gcp-project-id. Dalam contoh ini, Anda akan menemukan detail tentang jenis resource dalam daftar jenis resource yang dimonitor.

Untuk informasi selengkapnya, lihat jenis LogEntry, jenis AuditLog, dan jenis AuditData IAM.

Entri log audit yang besar atau berjalan lama

Satu operasi yang diaudit akan dibagi menjadi beberapa entri log jika operasi berjalan secara asinkron atau jika menghasilkan data AuditLog yang besar. Jika ada lebih dari satu entri log untuk operasi yang sama, objek LogEntry akan berisi kolom operation dan entri untuk operasi yang sama akan memiliki nilai yang sama untuk LogEntry.operation.id dan LogEntry.operation.producer.

Dalam contoh entri log audit sebelumnya, kolom operation tidak ada, yang berarti bahwa semua informasi audit terdapat dalam satu entri log.

Data audit khusus layanan

Beberapa layanan memperluas informasi yang disimpan di AuditLog dengan menempatkan struktur data tambahan di kolom serviceData log audit. Tabel berikut mencantumkan layanan yang menggunakan kolom serviceData dan menyediakan link ke jenis AuditData-nya.

Layanan Jenis data layanan
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (lama) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
IAM type.googleapis.com/google.iam.v1.logging.AuditData

Melihat log audit

Anda dapat membuat kueri untuk semua log audit atau membuat kueri untuk log berdasarkan nama log auditnya. Nama log audit mencakup ID resource project, folder, akun penagihan, atau organisasi Google Cloud yang informasi logging auditnya ingin Anda lihat. Kueri Anda dapat menentukan kolom LogEntry yang diindeks, dan jika menggunakan halaman Log Analytics, yang mendukung Kueri SQL, Anda dapat melihat hasil kueri sebagai diagram.

Untuk mengetahui informasi selengkapnya tentang cara membuat kueri log Anda, lihat halaman berikut:

Anda dapat melihat log audit di Cloud Logging menggunakan Konsol Google Cloud, Google Cloud CLI, atau Logging API.

Konsol

Di Konsol Google Cloud, Anda dapat menggunakan Logs Explorer guna mengambil entri log audit untuk project, folder, atau organisasi Google Cloud Anda:

  1. Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Logs Explorer:

    Buka Logs Explorer

  2. Pilih project, folder, atau organisasi Google Cloud yang sudah ada.

  3. Untuk menampilkan semua log audit, masukkan salah satu kueri berikut ke kolom editor kueri, lalu klik Jalankan kueri:

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. Agar dapat menampilkan log audit untuk jenis log audit dan resource tertentu, di panel Builder kueri, lakukan langkah berikut ini:

    • Di Jenis resource, pilih resource Google Cloud yang log auditnya ingin Anda lihat.

    • Di Log name, pilih jenis log audit yang ingin dilihat:

      • Untuk log audit Aktivitas Admin, pilih activity.
      • Untuk log audit Akses Data, pilih data_access.
      • Untuk log audit Peristiwa Sistem, pilih system_event.
      • Untuk log audit Kebijakan Ditolak, pilih policy.
    • Klik Jalankan kueri.

    Jika Anda tidak melihat opsi ini, maka tidak ada log audit dengan jenis tersebut yang tersedia di project, folder, atau organisasi Google Cloud.

    Jika mengalami masalah saat mencoba melihat log di Logs Explorer, lihat informasi pemecahan masalah.

    Untuk mengetahui informasi selengkapnya tentang pembuatan kueri menggunakan Logs Explorer, lihat Membangun kueri di Logs Explorer. Untuk mengetahui informasi tentang cara meringkas entri log di Logs Explorer menggunakan Gemini, lihat Meringkas entri log dengan bantuan Gemini.

gcloud

Google Cloud CLI menyediakan antarmuka command line ke Logging API. Berikan ID resource yang valid di setiap nama log. Misalnya, jika kueri Anda menyertakan PROJECT_ID, ID project yang Anda berikan harus merujuk ke project Google Cloud yang saat ini dipilih.

Untuk membaca entri log audit level project Google Cloud Anda, jalankan perintah berikut:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

Untuk membaca entri log audit level folder, jalankan perintah berikut:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

Untuk membaca entri log audit level organisasi, jalankan perintah berikut:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Untuk membaca entri log audit level akun Penagihan Cloud Anda, jalankan perintah berikut:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

Tambahkan flag --freshness ke perintah Anda untuk membaca log yang berusia lebih dari 1 hari.

Untuk mengetahui informasi selengkapnya tentang penggunaan gcloud CLI, lihat gcloud logging read.

API

Saat membangun kueri, sediakan ID resource yang valid di setiap nama log. Misalnya, jika kueri Anda menyertakan PROJECT_ID, ID project yang Anda berikan harus merujuk ke project Google Cloud yang saat ini dipilih.

Misalnya, untuk menggunakan Logging API guna melihat entri log audit level project Anda, lakukan tindakan berikut:

  1. Buka bagian Coba API ini dalam dokumentasi untuk metode entries.list.

  2. Masukkan string berikut ke dalam bagian Isi permintaan di formulir Coba API ini. Mengklik formulir yang telah diisi ini akan otomatis mengisi isi permintaan, tetapi Anda harus memberikan PROJECT_ID yang valid di setiap nama log.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Klik Jalankan.