Tabellreferens för granskningsloggsystem
Viktigt!
Den här systemtabellen finns i offentlig förhandsversion. För att få åtkomst till tabellen måste schemat vara aktiverat i din system
katalog. Mer information finns i Aktivera systemtabellscheman.
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 kontoaktivitet. Information om granskningslogghändelser finns i Diagnostikloggreferens.
Tabellsökväg: Den här systemtabellen finns på system.access.audit
.
Överväganden för granskningsloggar
- De flesta granskningsloggar är endast tillgängliga i arbetsytans region.
- Granskningsloggar på kontonivå registreras
workspace_id
som0
.
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 |
tidsstämpel | Tidsstämpel för händelsen. Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC-tidszon. |
2023-01-01T01:01:01.123+00:00 |
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 | Upprättande 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 |
karta | 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 |
struktur | Struktur 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 |
identity_metadata |
Struct | Identiteter som ingår i åtgärden, inklusive run_by och run_as . Se Granskningsgrupp dedikerad till beräkningsaktivitet. |
{run_by: example@email.com; run_as: example@email.com; |
Exempelfrågor
Följande avsnitt innehåller SQL-exempelfrågor som du kan använda för att få insikter om systemtabellen för granskningsloggar.
Anteckning
Några 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?
- Vilka användare har använt en tabell under den senaste sju dagen?
- Vilka tabeller har en användare nyligen fått åtkomst till?
- Visa behörighetsändringar för alla skyddsbara objekt
- Visa de senaste körda notebook-kommandona
- Vilka användare har loggat in på en Databricks-app?
- Vilka Databricks-appar har uppdaterats för att ändra hur appen delas med andra användare eller grupper?
Vem kan komma åt den här tabellen?
Den här frågan använder information_schema
för att avgöra vilka användare som har behörighet för en tabell. Ange värden för parametrarna katalog, schema och tabellnamn.
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
Vilka användare har använt en tabell under den senaste sju dagen?
För att den här frågan ska fungera anger du tabellsökvägsinformationen i frågeparametrarna.
Anteckning
Fullständiga namn registreras inte i loggen för DML-åtgärder. Inkludera schemat och det enkla namnet för att omfatta samtliga.
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
Vilka tabeller har en användare nyligen fått åtkomst till?
För att den här frågan ska fungera anger du användarens e-post i parametern :User
och ett tal i parametern :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
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 senaste körda notebook-kommandona
Den här frågan returnerar de senast körda notebook-kommandona och användaren som körde kommandot.
Anteckning
Å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
Vilka användare har loggat in på en Databricks-app?
Den här frågan returnerar en händelse för varje inloggning till en Databricks-appinstans.
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
Ersätt {{application-ID}}
med program-ID-värdet för tjänstens huvudnamn som tilldelats till en specifik Databricks-app. Det här värdet finns i administratörsinställningarna för Databricks-arbetsytan som är värd för appen.
Vilka Databricks-appar har uppdaterats för att ändra hur appen delas med andra användare eller grupper?
Den här frågan returnerar händelser för behörighetsuppdateringar för att ändra åtkomsten till Databricks-appar, inklusive behörighetstypen, den användare eller grupp som den nya behörigheten har tilldelats till och användaren som skickade ändringen.
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