Freigeben über


Referenz zur Systemtabelle des Überwachungsprotokolls

Wichtig

Dieses Feature befindet sich in der Public Preview.

Dieser Artikel beschreibt das Schema der Überwachungsprotokolltabelle und enthält Beispielabfragen, die Sie mit der Überwachungsprotokollsystemtabelle verwenden können, um allgemeine Fragen zur Kontonutzung zu beantworten. Informationen zu Überwachungsprotokollereignissen finden Sie unter Referenz zu Diagnoseprotokollen.

Die Überwachungsprotokollsystemtabelle befindet sich unter system.access.audit.

Überlegungen zu Überwachungsprotokollen

  • Die meisten Überwachungsprotokolle sind nur in der Region des Arbeitsbereichs verfügbar.
  • Nur Unity Catalog-Protokolle auf Kontoebene sind in allen Regionen verfügbar.
  • Überwachungsprotokolle auf Kontoebene erfassen workspace_id als 0.

Schema der Überwachungsprotokollsystemtabelle

Die Überwachungsprotokollsystemtabelle verwendet das folgende Schema:

Spaltenname Datentyp Beschreibung Beispiel
version Zeichenfolge Version des Überwachungsprotokollschemas 2.0
event_time timestamp Zeitstempel 2023-01-01T01:01:01.123
event_date date Kalenderdatum der Aktion 2023-01-01
workspace_id long ID des Arbeitsbereichs 1234567890123456
source_ip_address Zeichenfolge IP-Adresse, von der die Anforderung stammt 10.30.0.242
user_agent Zeichenfolge Ursprung der Anforderung Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id Zeichenfolge ID der Sitzung, aus der die Anforderung stammt 123456789
user_identity Zeichenfolge Identität des Benutzers, der die Anforderung initiiert {"email": "user@domain.com",
"subjectName": null}
service_name Zeichenfolge Name des Dienstes, der die Anforderung initiiert unityCatalog
action_name Zeichenfolge Kategorie des im Überwachungsprotokoll erfassten Ereignisses getTable
request_id Zeichenfolge ID der Anforderung ServiceMain-4529754264
request_params map Zuordnung der Schlüsselwerte, die alle Anforderungsparameter enthalten. Abhängig vom Anforderungstyp [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response struct Struktur der Antwortrückgabewerte {"statusCode": 200, "errorMessage": null,
"result": null}
audit_level Zeichenfolge Ereignis auf Arbeitsbereichs- oder Kontoebene ACCOUNT_LEVEL
account_id Zeichenfolge ID des Kontos 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id Zeichenfolge ID des Ereignisses 34ac703c772f3549dcc8671f654950f0

Beispielabfragen

Die folgenden Abschnitte enthalten Beispielabfragen, die Sie verwenden können, um Erkenntnisse zu Ihrer Überwachungsprotokollsystemtabelle zu gewinnen. Damit diese Abfragen funktionieren, ersetzen Sie die Werte in geschweiften Klammern {{}} durch Ihre eigenen Parameter.

Hinweis

Einige dieser Beispiele umfassen ausführliche Überwachungsprotokollereignisse, die standardmäßig nicht aktiviert sind. Informationen zum Aktivieren ausführlicher Überwachungsprotokolle in einem Arbeitsbereich finden Sie unter Aktivieren ausführlicher Überwachungsprotokolle.

Dieser Artikel enthält die folgenden Beispielabfragen:

Wer kann auf diese Tabelle zugreifen?

Diese Abfrage verwendet die information_schema, um herauszufinden, welche Benutzerinnen und Benutzer über Berechtigungen für eine Tabelle verfügen.

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

Welche Benutzer*innen haben innerhalb des letzten Tages auf eine Tabelle zugegriffen?

Hinweis

Vollständige Namen werden nicht im Protokoll für DML-Vorgänge erfasst. Fügen Sie das Schema und den einfachen Namen ein, um alle zu erfassen.

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

Auf welche Tabellen hat ein*e Benutzer*in zugegriffen?

Hinweis

Um nach Datumsbereich zu filtern, heben Sie die Auskommentierung der date-Klausel am Ende der Abfrage auf.

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

Beispielergebnis

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

Anzeigen von Berechtigungsänderungen für alle sicherungsfähigen Objekte

Diese Abfrage gibt ein Ereignis für jede Berechtigungsänderung in Ihrem Konto zurück. Die Abfrage gibt den Benutzer, der die Änderung vorgenommen hat, den sicherungsfähigen Objekttyp und -namen sowie die spezifischen vorgenommenen Änderungen zurück.

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

Anzeigen der zuletzt ausgeführten Notebookbefehle

Diese Abfrage gibt die zuletzt ausgeführten Notebookbefehle zusammen mit dem Benutzer zurück, der den Befehl ausgeführt hat.

Hinweis

Die runCommand-Aktion wird nur ausgegeben, wenn ausführliche Überwachungsprotokolle aktiviert sind. Informationen zum Aktivieren ausführlicher Überwachungsprotokolle finden Sie unter Aktivieren ausführlicher Überwachungsprotokolle.

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