Dela via


Tabellreferens för granskningsloggsystem

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Den här artikeln beskriver schemat för granskningsloggtabellen och innehåller exempelfrågor som du kan använda med systemtabellen för granskningsloggar för att besvara vanliga frågor om kontoanvändning. Information om granskningslogghändelser finns i Referens för diagnostiklogg.

Systemtabellen för granskningsloggar finns på system.access.audit.

Överväganden för granskningsloggar

  • De flesta granskningsloggar är endast tillgängliga i arbetsytans region.
  • Endast loggar på kontonivå i Unity Catalog är tillgängliga i alla regioner.
  • Granskningsloggar på kontonivå registreras workspace_id som 0.

Tabellschema för granskningsloggsystem

Systemtabellen för granskningsloggar använder följande schema:

Kolumnnamn Datatyp beskrivning Exempel
version sträng Schemaversion för granskningslogg 2.0
event_time timestamp Tidsstämpel 2023-01-01T01:01:01.123
event_date datum Kalenderdatum då åtgärden ägde rum 2023-01-01
workspace_id lång ID för arbetsytan 1234567890123456
source_ip_address sträng IP-adress där begäran har sitt ursprung 10.30.0.242
user_agent sträng Origination av begäran Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id sträng ID för sessionen där begäran kom från 123456789
user_identity sträng Identitet för användaren som initierar begäran {"email": "user@domain.com", "subjectName": null}
service_name sträng Tjänstnamn som initierar begäran unityCatalog
action_name sträng Kategori för händelsen som registrerats i granskningsloggen getTable
request_id sträng ID för begäran ServiceMain-4529754264
request_params map Karta över nyckelvärden som innehåller alla parametrar för begäran. Beror på typ av begäran [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response Struct Struct för svarsreturvärden {"statusCode": 200, "errorMessage": null, "result": null}
audit_level sträng Händelse på arbetsyta eller kontonivå ACCOUNT_LEVEL
account_id sträng ID för kontot 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id sträng ID för händelsen 34ac703c772f3549dcc8671f654950f0

Exempelfrågor

Följande avsnitt innehåller exempelfrågor som du kan använda för att få insikter i systemtabellen för granskningsloggar. För att dessa frågor ska fungera ersätter du värdena inom klammerparenteser {{}} med dina egna parametrar.

Kommentar

Några av dessa exempel är utförliga granskningslogghändelser som inte är aktiverade som standard. Information om hur du aktiverar utförliga granskningsloggar på en arbetsyta finns i Aktivera utförliga granskningsloggar.

Den här artikeln innehåller följande exempelfrågor:

Vem kan komma åt den här tabellen?

Den här frågan använder information_schema för att ta reda på vilka användare som har behörighet för en tabell.

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

Vilka användare har använt en tabell under den senaste dagen?

Kommentar

Fullständiga namn registreras inte i loggen för DML-åtgärder. Inkludera schemat och det enkla namnet för att samla in alla.

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

Vilka tabeller har en användare åtkomst till?

Kommentar

Om du vill filtrera efter datumintervall avkommenteras datumsatsen längst ned i frågan.

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

Exempelresultat

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

Visa behörighetsändringar för alla skyddsbara objekt

Den här frågan returnerar en händelse för varje behörighetsändring som har inträffat i ditt konto. Frågan returnerar den användare som gjorde ändringen, den skyddsbara objekttypen och namnet samt de specifika ändringar som gjordes.

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

Visa de senast kör notebook-kommandona

Den här frågan returnerar de senast körda notebook-kommandona tillsammans med användaren som körde kommandot.

Kommentar

Åtgärden runCommand genereras endast när utförliga granskningsloggar är aktiverade. Information om hur du aktiverar utförliga granskningsloggar finns i Aktivera utförliga granskningsloggar.

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