Bagikan melalui


Referensi tabel sistem log audit

Penting

Fitur ini ada di Pratinjau Publik.

Artikel ini menguraikan skema tabel log audit dan memberi Anda contoh kueri yang dapat Anda gunakan dengan tabel sistem log audit untuk menjawab pertanyaan penggunaan akun umum. Untuk informasi tentang peristiwa log audit, lihat Referensi log diagnostik.

Tabel sistem log audit terletak di system.access.audit.

Pertimbangan log audit

  • Sebagian besar log audit hanya tersedia di wilayah ruang kerja.
  • Hanya log tingkat akun Unity Catalog yang tersedia di semua wilayah.
  • Log audit tingkat akun mencatat workspace_id sebagai 0.

Mengaudit skema tabel sistem log

Tabel sistem log audit menggunakan skema berikut:

Nama kolom Jenis data Deskripsi Contoh
version string Versi skema log audit 2.0
event_time rentang waktu Tanda Waktu 2023-01-01T01:01:01.123
event_date date Tanggal kalender tindakan berlangsung 2023-01-01
workspace_id long ID ruang kerja 1234567890123456
source_ip_address string Alamat IP tempat permintaan berasal 10.30.0.242
user_agent string Asal permintaan Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id string ID sesi tempat permintaan berasal 123456789
user_identity string Identitas pengguna yang memulai permintaan {"email": "user@domain.com",
"subjectName": null}
service_name string Permintaan memulai nama layanan unityCatalog
action_name string Kategori peristiwa yang diambil dalam log audit getTable
request_id string ID permintaan ServiceMain-4529754264
request_params peta Peta nilai kunci yang berisi semua parameter permintaan. Bergantung pada jenis permintaan [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response struktur Struktur nilai pengembalian respons {"statusCode": 200, "errorMessage": null,
"result": null}
audit_level string Peristiwa tingkat ruang kerja atau akun ACCOUNT_LEVEL
account_id string ID akun 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id string ID peristiwa 34ac703c772f3549dcc8671f654950f0

Contoh kueri

Bagian berikut menyertakan kueri sampel yang bisa Anda gunakan untuk mendapatkan wawasan tentang tabel sistem log audit Anda. Agar kueri ini berfungsi, ganti nilai dalam tanda kurung {{}} kurawal dengan parameter Anda sendiri.

Catatan

Beberapa contoh ini termasuk peristiwa log audit verbose, yang tidak diaktifkan secara default. Untuk mengaktifkan log audit verbose di ruang kerja, lihat Mengaktifkan log audit verbose.

Artikel ini menyertakan contoh kueri berikut:

Siapa dapat mengakses tabel ini?

Kueri ini menggunakan information_schema untuk mengetahui pengguna mana yang memiliki izin pada tabel.

SELECT DISTINCT(grantee) AS `ACCESSIBLE BY`
FROM system.information_schema.table_privileges
WHERE table_schema = '{{schema_name}}' AND table_name = '{{table_name}}'
  UNION
    SELECT table_owner
    FROM system.information_schema.tables
    WHERE table_schema = '{{schema_name}}' AND table_name = '{{table}}'
  UNION
    SELECT DISTINCT(grantee)
    FROM system.information_schema.schema_privileges
    WHERE schema_name = '{{schema_name}}'

Pengguna mana yang mengakses tabel dalam hari terakhir?

Catatan

Nama lengkap tidak diambil dalam log untuk operasi DML. Sertakan skema dan nama sederhana untuk mengambil semua.

SELECT
  user_identity.email as `User`,
  IFNULL(request_params.full_name_arg,
    request_params.name)
    AS `Table`,
    action_name AS `Type of Access`,
    event_time AS `Time of Access`
FROM system.access.audit
WHERE (request_params.full_name_arg = '{{catalog.schema.table}}'
  OR (request_params.name = '{{table_name}}'
  AND request_params.schema_name = '{{schema_name}}'))
  AND action_name
    IN ('createTable','getTable','deleteTable')
  AND event_date > now() - interval '1 day'
ORDER BY event_date DESC

Tabel mana yang diakses pengguna?

Catatan

Untuk memfilter menurut rentang tanggal, batalkan komentar klausa tanggal di bagian bawah kueri.

SELECT
        action_name as `EVENT`,
        event_time as `WHEN`,
        IFNULL(request_params.full_name_arg, 'Non-specific') AS `TABLE ACCESSED`,
        IFNULL(request_params.commandText,'GET table') AS `QUERY TEXT`
FROM system.access.audit
WHERE user_identity.email = '{{User}}'
        AND action_name IN ('createTable',
'commandSubmit','getTable','deleteTable')
        -- AND datediff(now(), event_date) < 1
        -- ORDER BY event_date DESC

Contoh hasil:

EVENT WHEN TABLE ACCESSED QUERY TEXT
getTable 2023-05-31 system.access.audit GET table
getTable 2023-05-31 system.access.table_lineage GET table
commandSubmit 2023-05-31 Non-specific show functions;
commandSubmit 2023-05-31 Non-specific SELECT

request_params

FROM

system.access.audit

WHERE

service_name = "notebook"

AND action_name = "moveFolder"

LIMIT

5

Lihat perubahan izin untuk semua objek yang dapat diamankan

Kueri ini akan mengembalikan peristiwa untuk setiap perubahan izin yang telah terjadi di akun Anda. Kueri akan mengembalikan pengguna yang membuat perubahan, jenis dan nama objek yang dapat diamankan, dan perubahan spesifik yang dibuat.

SELECT event_time, user_identity.email, request_params.securable_type, request_params.securable_full_name, request_params.changes
FROM system.access.audit
WHERE service_name = 'unityCatalog'
  AND action_name = 'updatePermissions'
ORDER BY 1 DESC

Menampilkan perintah buku catatan yang terakhir dijalankan

Kueri ini mengembalikan perintah notebook yang terakhir dijalankan bersama dengan pengguna yang menjalankan perintah.

Catatan

Tindakan runCommand ini hanya dipancarkan ketika log audit verbose diaktifkan. Untuk mengaktifkan log audit verbose, lihat Mengaktifkan log audit verbose.

SELECT event_time, user_identity.email, request_params.commandText
FROM system.access.audit
WHERE action_name = `runCommand`
ORDER BY event_time DESC
LIMIT 100