Dela via


Referens för granskningsloggsystem table

Viktigt!

Det här systemet table finns i offentlig förhandsversion. Om du vill komma åt tablemåste schema aktiveras i din systemcatalog. Mer information finns i Aktivera systemscheman table.

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

Table sökväg: Det här systemet table 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 som 0.

Granskningsloggsystem tableschema

Granskningsloggsystemet table använder följande schema:

Column namn Datatyp beskrivning Exempel
version sträng Granskningslogg schema version 2.0
event_time timestamp Tidsstämpel för händelsen. Timezone information registreras i slutet av värdet med +00:00 som representerar UTC, timezone. 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 where begäran kommer från 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 where 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 nyckel values som innehåller alla begäranden parameters. Beror på typ av begäran [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response Struct Struct för svarsretur values {"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 Granskningsgruppens beräkningsaktivitet. {run_by: example@email.com;
run_as: example@email.com;

Exempelfrågor

Följande avsnitt innehåller EXEMPEL på SQL-frågor som du kan använda för att få insikter om granskningsloggsystemet table.

Kommentar

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 har åtkomst till den här table?

Den här frågan använder information_schema för att avgöra vilka användare som har behörighet för en table. Ange values som schema namn och table namn parameters.

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_name
UNION
SELECT
  DISTINCT(grantee)
FROM
  system.information_schema.schema_privileges
WHERE
  schema_name = :schema_name

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

För att den här frågan ska fungera anger du table sökvägsinformation i frågan parameters.

Kommentar

Fullständiga namn registreras inte i loggen för DML-åtgärder. Ta med schema och enkelt namn 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 = :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

Vilken tables 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 senast kör notebook-kommandona

Den här frågan returnerar de senast körda notebook-kommandona och 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

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