Partager via


Informations de référence sur le système de journal d’audit table

Important

Ce système table est en Préversion publique. Pour accéder au table, le schema doit être activé dans votre systemcatalog. Pour plus d’informations, consultez Activer les schémas de table système.

Cet article décrit l'tableschema du journal d’audit et comporte des exemples de requêtes que vous pouvez utiliser avec le système de journal d’audit table pour répondre aux questions courantes sur l’utilisation du compte. Pour en savoir plus sur les événements du journal d'audit, référez-vous à la section Informations de référence sur le journal de diagnostic.

Table chemin: ce système table se trouve à system.access.audit.

Considérations relatives au journal d'audit

  • La plupart des journaux d'audit sont disponibles uniquement dans la région de l'espace de travail.
  • Enregistrement des journaux d'audit au niveau du compte workspace_id comme 0.

tableschema système de journal d’audit

La table système du journal d’audit utilise le schema suivant :

Column nom Type de données Description Exemple :
version string Journal d’audit, version schema 2.0
event_time timestamp Timestamp de l’événement. Les informations sur le Timezone sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC timezone. 2023-01-01T01:01:01.123+00:00
event_date date Date du calendrier à laquelle l'action a eu lieu 2023-01-01
workspace_id long ID de l'espace de travail 1234567890123456
source_ip_address string La requête provient de l'adresse IP where. 10.30.0.242
user_agent string Origine de la requête Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id string ID de la session where d'où la demande provient 123456789
user_identity string Identité de l'utilisateur à l'origine de la requête {"email": "user@domain.com",
"subjectName": null}
service_name string Nom du service à l'origine de la requête unityCatalog
action_name string Catégorie de l'événement capturé dans le journal d'audit getTable
request_id string ID de la requête ServiceMain-4529754264
request_params map Carte des clés values contenant toutes les requêtes parameters. Dépend du type de requête [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response struct Structure de retour de réponse values {"statusCode": 200, "errorMessage": null,
"result": null}
audit_level string Événement au niveau de l'espace de travail ou du compte ACCOUNT_LEVEL
account_id string ID du compte 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id string ID de l’événement 34ac703c772f3549dcc8671f654950f0
identity_metadata struct Identités impliquées dans l’action, notamment run_by et run_as. Consultez Audit de l’activité de calcul dédiée à un groupe. {run_by: example@email.com;
run_as: example@email.com;

Exemples de requêtes

Les sections suivantes incluent des exemples de requêtes SQL que vous pouvez utiliser pour obtenir des insights sur vos journaux d’audit système table.

Remarque

Certains exemples incluent des événements de journal d’audit détaillés, qui ne sont pas activés par défaut. Pour activer les journaux d'audit détaillés dans un espace de travail, référez-vous à la section Activer les journaux d'audit détaillés.

Vous trouverez dans cet article des requêtes telles que :

Qui peut accéder à ce table ?

Cette requête utilise le information_schema pour déterminer quels utilisateurs ont des autorisations sur un table. Entrez values comme nom schema et table le nom 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

Quels utilisateurs ont accédé à un table au cours des sept derniers jours ?

Pour que cette requête fonctionne, entrez les informations de chemin d’accès table dans la requête parameters.

Remarque

Les noms complets ne sont pas capturés dans le journal pour les opérations DML. Incluez le schema et le nom simple pour capturer tout.

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

Quel est le tables auquel un utilisateur a accédé récemment ?

Pour que cette requête fonctionne, entrez l’e-mail de l’utilisateur dans le paramètre :User et un nombre dans le paramètre :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

Résultat de l’exemple

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

Afficher les modifications d'autorisations pour tous les objets sécurisables

Cette requête renvoie un événement pour chaque modification d’autorisation survenue dans votre compte. La requête renvoie l'utilisateur qui a effectué la modification, le type et le nom de l'objet sécurisable, ainsi que les modifications spécifiques qui ont été apportées.

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

Afficher les commandes de notebook les plus récentes exécutées

Cette requête retourne les commandes de notebook les plus récentes et l’utilisateur qui a exécuté la commande.

Remarque

L'action runCommand n'est émise que lorsque les journaux d'audit détaillés sont activés. Pour activer les journaux d'audit détaillés, référez-vous à la section Activer les journaux d'audit détaillés.

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

Quels utilisateurs se sont connectés à une application Databricks ?

Cette requête retourne un événement pour chaque connexion à une instance d’application Databricks.

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

Remplacez {{application-ID}} par la valeur d’ID d’application pour le principal de service affecté à une application Databricks spécifique. Cette valeur se trouve dans les paramètres d’administration de l’espace de travail Databricks hébergeant l’application.

Quelles applications Databricks ont été mises à jour pour modifier la façon dont l’application est partagée avec d’autres utilisateurs ou groupes ?

Cette requête retourne des événements pour les mises à jour d’autorisation pour modifier l’accès aux applications Databricks, y compris le type d’autorisation, l’utilisateur ou le groupe auquel la nouvelle autorisation est affectée et l’utilisateur qui a envoyé la modification.

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