Bagikan melalui


Referensi tabel sistem log audit

Penting

Tabel sistem ini berada dalam Pratinjau Umum. Untuk mengakses tabel, skema harus diaktifkan di katalog system Anda. Untuk informasi selengkapnya, lihat Mengaktifkan skema tabel sistem.

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

Jalur tabel: Tabel sistem ini terletak di system.access.audit.

Pertimbangan log audit

  • Sebagian besar log audit hanya tersedia di wilayah ruang kerja.
  • Log audit pada tingkat akun mencatat workspace_id sebagai 0.

Skema tabel sistem log audit

Tabel sistem log audit menggunakan skema berikut:

Nama kolom Jenis data Deskripsi Contoh
version string Versi skema log audit 2.0
event_time penanda waktu Tanda waktu peristiwa. Informasi zona waktu dicatat di akhir nilai dengan +00:00 mewakili zona waktu UTC. 2023-01-01T01:01:01.123+00:00
event_date tanggal Tanggal kalender tindakan berlangsung 2023-01-01
workspace_id panjang 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 Nama layanan memulai permintaan unityCatalog
action_name string Kategori peristiwa yang diambil dalam log audit getTable
request_id rangkaian teks 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
identity_metadata struktur Identitas yang terlibat dalam tindakan, termasuk run_by dan run_as. Lihat aktivitas komputasi khusus grup audit . {run_by: example@email.com;
run_as: example@email.com;

Contoh kueri

Bagian berikut menyertakan sampel kueri SQL yang dapat Anda gunakan untuk mendapatkan wawasan tentang tabel sistem log audit Anda.

Catatan

Beberapa contoh termasuk elemen log audit terperinci, yang tidak diaktifkan dengan pengaturan awal. Untuk mengaktifkan log audit verbose di ruang kerja, lihat Mengaktifkan log audit verbose.

Artikel ini menyertakan contoh kueri berikut:

Siapa yang bisa mengakses tabel ini?

Kueri ini menggunakan information_schema untuk menentukan pengguna mana yang memiliki izin pada tabel. Masukkan nilai untuk parameter katalog, skema, dan nama tabel.

SELECT DISTINCT(grantee), privilege_type, 'catalog' AS level
FROM system.information_schema.catalog_privileges
WHERE
  catalog_name = :catalog_name
UNION
SELECT DISTINCT(grantee), privilege_type, 'schema' AS level
FROM system.information_schema.schema_privileges
WHERE
  catalog_name = :catalog_name AND schema_name = :schema_name
UNION
SELECT DISTINCT(grantee) AS `accessible by`, privilege_type, 'table' AS level
FROM
  system.information_schema.table_privileges
WHERE
  table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name
UNION
SELECT table_owner, 'ALL_PRIVILEGES' AS privilege_type, 'owner' AS level
FROM system.information_schema.tables
WHERE
  table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name

Pengguna mana yang mengakses tabel dalam tujuh hari terakhir?

Agar kueri ini berfungsi, masukkan informasi jalur tabel dalam parameter kueri.

Catatan

Nama lengkap tidak dicatat dalam log untuk operasi DML. Sertakan skema dan nama sederhana untuk menangkap semuanya.

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 = :table_full_name
    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 7 day
ORDER BY
  event_date DESC

Tabel mana yang baru-baru ini diakses pengguna?

Agar kueri ini berfungsi, masukkan email pengguna di parameter :User dan angka dalam parameter :days_ago.

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) < :days_ago
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 dan pengguna yang menjalankan perintah.

Catatan

Tindakan runCommand ini hanya dikeluarkan ketika log audit rinci diaktifkan. Untuk mengaktifkan log audit mendetail, lihat Mengaktifkan log audit mendetail.

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

Pengguna mana yang telah masuk ke aplikasi Databricks?

Kueri ini mengembalikan satu peristiwa setiap kali terjadi login ke instans aplikasi Databricks.

SELECT
  event_date,
  workspace_id,
  request_params.request_object_id as app,
  user_identity.email as user_email,
  user_identity.subject_name as username
FROM
  system.access.audit
WHERE
  action_name IN ("workspaceInHouseOAuthClientAuthentication", "mintOAuthToken", "mintOAuthAuthorizationCode")
AND
  request_params["client_id"] LIKE "{{application-ID}}"
GROUP BY
  event_date,
  workspace_id,
  app,
  user_email,
  username

Ganti {{application-ID}} dengan nilai ID Aplikasi untuk principal layanan yang ditetapkan ke aplikasi Databricks tertentu. Nilai ini dapat ditemukan di pengaturan admin untuk ruang kerja Databricks yang menghosting aplikasi.

Aplikasi Databricks mana yang telah diperbarui untuk mengubah cara aplikasi dibagikan dengan pengguna atau grup lain?

Kueri ini mengembalikan peristiwa untuk pembaruan izin untuk mengubah akses ke aplikasi Databricks, termasuk jenis izin, pengguna atau grup tempat izin baru ditetapkan, dan pengguna yang mengirimkan perubahan.

SELECT
  event_date,
  workspace_id,
  request_params['request_object_id'] as app,
  user_identity['email'] as sharing_user,
  acl_entry['group_name'],
  acl_entry['user_name'],
  acl_entry['permission_level']
FROM
  system.access.audit t
LATERAL VIEW
  explode(from_json(request_params['access_control_list'], 'array<struct<user_name:string,permission_level:string,group_name:string>>')) acl_entry AS acl_entry
WHERE
  action_name = 'changeAppsAcl'
AND
  request_params['request_object_type'] = 'apps'
ORDER BY
  event_date DESC