Pengantar log audit di BigQuery

Log adalah rekaman teks yang dibuat sebagai respons terhadap peristiwa atau tindakan tertentu. Misalnya, BigQuery membuat entri log untuk tindakan seperti membuat atau menghapus tabel, membeli slot, atau menjalankan tugas pemuatan.

Google Cloud juga menulis log, termasuk log audit yang memberikan insight tentang masalah operasional terkait penggunaan layanan Google Cloud oleh Anda. Untuk mengetahui informasi lebih lanjut tentang cara Google Cloud menangani logging, lihat dokumentasi Cloud Logging dan ringkasan Cloud Audit Logs.

Log audit versus tampilan INFORMATION_SCHEMA

Project Google Cloud Anda berisi log audit hanya untuk resource yang berada langsung dalam project Google Cloud. Resource Google Cloud lainnya, seperti folder, organisasi, dan akun penagihan, berisi log auditnya sendiri.

Log audit membantu Anda menjawab pertanyaan "Siapa yang melakukan apa, di mana, dan kapan?" dalam resource Google Cloud. Log audit adalah sumber informasi definitif untuk aktivitas sistem menurut pengguna dan pola akses, serta harus menjadi sumber utama Anda dalam pertanyaan audit atau keamanan.

Tampilan INFORMATION_SCHEMA di BigQuery adalah sumber insight lain yang dapat Anda gunakan bersama dengan metrik dan log. Tampilan ini berisi metadata tentang tugas, set data, tabel, dan entity BigQuery lainnya. Misalnya, Anda bisa mendapatkan metadata real-time tentang tugas BigQuery mana yang dijalankan selama waktu tertentu. Kemudian, Anda dapat mengelompokkan atau memfilter hasil berdasarkan project, pengguna, tabel yang dirujuk, dan dimensi lainnya.

Tampilan INFORMATION_SCHEMA memberi Anda informasi untuk melakukan analisis yang lebih mendetail tentang workload BigQuery, seperti berikut:

  • Berapa rata-rata penggunaan slot untuk semua kueri selama tujuh hari terakhir untuk project tertentu?
  • Error streaming apa yang terjadi dalam 30 menit terakhir, yang dikelompokkan berdasarkan kode error?

Log audit BigQuery berisi entri log untuk panggilan API, tetapi tidak menjelaskan dampak panggilan API. Sekumpulan panggilan API membuat tugas (seperti kueri dan pemuatan) yang informasinya diambil oleh tampilan INFORMATION_SCHEMA. Misalnya, Anda dapat menemukan informasi tentang waktu dan slot yang digunakan oleh kueri tertentu dalam tampilan INFORMATION_SCHEMA, tetapi tidak di log audit.

Untuk mendapatkan insight tentang performa workload BigQuery secara khusus, lihat metadata tugas, metadata streaming, dan metadata pemesanan.

Untuk mengetahui informasi selengkapnya tentang jenis log audit yang ditulis layanan Google Cloud, lihat Jenis log audit.

Format log audit

Layanan Google Cloud menulis log audit dalam format JSON terstruktur. Jenis data dasar untuk entri log Google Cloud adalah struktur LogEntry. Struktur ini berisi nama log, resource yang menghasilkan entri log, stempel waktu (UTC), dan informasi dasar lainnya.

Log mencakup detail peristiwa yang dicatat ke dalam log di subkolom yang disebut kolom payload. Untuk log audit, kolom payload diberi nama protoPayload. Jenis kolom ini (protoPayload.@type) ditetapkan ke type.googleapis.com/google.cloud.audit.AuditLog, yang menunjukkan bahwa kolom menggunakan struktur log AuditLog.

Untuk operasi pada set data, tabel, dan tugas, BigQuery menulis log audit dalam dua format yang berbeda, meskipun kedua format tersebut menggunakan jenis dasar AuditLog yang sama.

Format yang lebih lama mencakup kolom dan nilai berikut:

  • Nilai untuk kolom resource.type adalah bigquery_resource.
  • BigQuery menulis detail tentang operasi di kolom protoPayload.serviceData. Nilai kolom ini menggunakan struktur log AuditData.

Format yang lebih baru mencakup kolom dan nilai berikut:

  • Nilai untuk kolom resource.type adalah bigquery_project atau bigquery_dataset. Resource bigquery_project memiliki entri log tentang tugas, sedangkan resource bigquery_dataset memiliki entri log tentang penyimpanan.
  • BigQuery menulis detail tentang operasi di kolom protoPayload.metadata. Nilai kolom ini menggunakan struktur BigQueryAuditMetadata.

Sebaiknya gunakan log dalam format yang lebih baru. Untuk informasi selengkapnya, lihat Panduan migrasi log audit.

Berikut adalah contoh singkat entri log yang menunjukkan operasi yang gagal:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 5,
      "message": "Not found: Dataset myproject:mydataset was not found in location US"
    },
    "authenticationInfo": { ... },
    "requestMetadata":  { ... },
    "serviceName": "bigquery.googleapis.com",
    "methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
    "metadata": {
  },
  "resource": {
    "type": "bigquery_project",
    "labels": { .. },
  },
  "severity": "ERROR",
  "logName": "projects/myproject/logs/cloudaudit.googleapis.com%2Fdata_access",
  ...
}

Untuk operasi pada pemesanan BigQuery, kolom protoPayload menggunakan struktur AuditLog, serta kolom protoPayload.request dan protoPayload.response berisi informasi selengkapnya. Anda dapat menemukan definisi kolom di BigQuery Reservation API. Untuk informasi selengkapnya, lihat Memantau reservasi BigQuery.

Untuk mendapatkan pemahaman yang lebih mendalam tentang format log audit, lihat Memahami log audit.

Batasan

Pesan log memiliki batas ukuran 100.000 byte. Untuk informasi selengkapnya, lihat Entri log yang terpotong.

Visibilitas dan kontrol akses

Log audit BigQuery dapat menyertakan informasi yang mungkin dianggap sensitif oleh pengguna, seperti teks SQL, definisi skema, dan ID untuk resource seperti tabel dan set data. Untuk mengetahui informasi tentang cara mengelola akses ke informasi ini, lihat dokumentasi kontrol akses Cloud Logging.

Langkah berikutnya

  • Untuk mempelajari cara menggunakan Cloud Logging untuk mengaudit aktivitas yang terkait dengan tag kebijakan, lihat Tag kebijakan audit.
  • Guna mempelajari cara menggunakan BigQuery untuk menganalisis aktivitas yang dicatat, lihat Ringkasan log audit BigQuery.