Share via


稽核記錄系統數據表參考

重要

這項功能處於公開預覽狀態

本文概述稽核記錄數據表架構,並提供您可以搭配稽核記錄系統數據表使用的範例查詢,以回答常見的帳戶使用問題。 如需稽核記錄事件的相關信息,請參閱 診斷記錄參考

稽核記錄系統資料表位於 system.access.audit

稽核記錄考慮

  • 大部分的稽核記錄僅適用於工作區的區域。
  • 所有區域只能使用 Unity 目錄帳戶層級記錄。
  • 帳戶層級稽核記錄檔記錄 workspace_id0

稽核記錄系統數據表架構

稽核記錄系統數據表會使用下列架構:

資料行名稱 資料類型 描述 範例
version 字串 稽核記錄架構版本 2.0
event_time timestamp 時間戳記 2023-01-01T01:01:01.123
event_date date 動作發生的行事曆日期 2023-01-01
workspace_id long 工作區的標識碼 1234567890123456
source_ip_address 字串 要求來源的IP位址 10.30.0.242
user_agent 字串 要求的來源 Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id 字串 要求的來源會話標識碼 123456789
user_identity 字串 使用者起始要求的身分識別 {"email": "user@domain.com", "subjectName": null}
service_name 字串 服務名稱起始要求 unityCatalog
action_name 字串 稽核記錄中擷取的事件類別 getTable
request_id 字串 要求標識碼 ServiceMain-4529754264
request_params map 包含所有要求參數的索引鍵值對應。 視要求類型而定 [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response struct 回應傳回值的結構 {"statusCode": 200, "errorMessage": null, "result": null}
audit_level 字串 工作區或帳戶層級事件 ACCOUNT_LEVEL
account_id 字串 帳戶的標識碼 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id 字串 事件的標識碼 34ac703c772f3549dcc8671f654950f0

範例查詢

下列各節包含可用來深入瞭解稽核記錄系統數據表的範例查詢。 若要讓這些查詢運作,請將大括弧 {{}} 內的值取代為您自己的參數。

注意

其中一些範例包括預設未啟用的詳細資訊稽核記錄事件。 若要在工作區中啟用詳細資訊稽核記錄,請參閱 啟用詳細資訊稽核記錄

本文包含下列範例查詢:

神秘 可以存取此數據表嗎?

此查詢會使用 information_schema 來找出哪些使用者具有數據表的許可權。

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}}'

哪位用戶在最後一天存取了數據表?

注意

DML 作業的記錄檔中不會擷取完整名稱。 包含要擷取全部的架構和簡單名稱。

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

使用者存取哪些數據表?

注意

若要依日期範圍進行篩選,請取消批注查詢底部的 date 子句。

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

範例結果

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

檢視所有安全性實體對象的許可權變更

此查詢會針對您的帳戶中發生的每個許可權變更傳回事件。 查詢會傳回進行變更的使用者、安全性實體物件類型和名稱,以及所做的特定變更。

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

檢視最近執行的筆記本命令

此查詢會傳回最近執行的筆記本命令,以及執行命令的使用者。

注意

runCommand只有在啟用詳細資訊稽核記錄時,才會發出動作。 若要啟用詳細資訊稽核記錄,請參閱 啟用詳細資訊稽核記錄

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