Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette table système est en Préversion publique.
Cet article décrit le schéma de la table du journal d’audit et comporte des exemples de requêtes que vous pouvez utiliser avec la table système du journal d’audit pour répondre aux questions courantes sur l’activité de 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.
Chemin de table: cette table système 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_idcomme0.
Schéma de table système du journal d’audit
La table système du journal d’audit utilise le schéma suivant :
| Nom de la colonne | Type de données | Descriptif | Exemple : |
|---|---|---|---|
account_id |
chaîne | ID du compte | 23e22ba4-87b9-4cc2-9770-d10b894bxx |
workspace_id |
chaîne | ID de l'espace de travail | 1234567890123456 |
version |
chaîne | Version du schéma de journal d'audit | 2.0 |
event_time |
horodatage | Timestamp de l’événement. Les informations de fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. |
2023-01-01T01:01:01.123+00:00 |
event_date |
date | Date du calendrier à laquelle l'action a eu lieu | 2023-01-01 |
source_ip_address |
chaîne | Adresse IP à laquelle la requête provient | 10.30.0.242 |
user_agent |
chaîne | Origine de la requête | Apache-HttpClient/4.5.13 (Java/1.8.0_345) |
session_id |
chaîne | ID de la session à partir de laquelle la demande provient | 123456789 |
user_identity |
Struct | Identité de l'utilisateur à l'origine de la requête | {"email": "user@domain.com","subjectName": null} |
service_name |
chaîne | Nom du service à l'origine de la requête | unityCatalog |
action_name |
chaîne | Catégorie de l'événement capturé dans le journal d'audit | getTable |
request_id |
chaîne | ID de la requête | ServiceMain-4529754264 |
request_params |
carte | Carte de paires clé-valeur contenant tous les paramètres de requête. Dépend du type de requête | [["full_name_arg", "user.chat.messages"],["workspace_id", "123456789"],["metastore_id", "123456789"]] |
response |
Struct | Struct des valeurs de retour de la réponse | {"statusCode": 200, "errorMessage": null,"result": null} |
audit_level |
chaîne | Événement au niveau de l'espace de travail ou du compte | ACCOUNT_LEVEL |
event_id |
chaîne | ID de l’événement | 34ac703c772f3549dcc8671f654950f0 |
identity_metadata |
Struct | Identités impliquées dans l’action, notamment run_by et run_as. Consultez l’activité de calcul dédiée au groupe d’audit. |
{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 votre table système des journaux d’audit.
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 à cette table ?
- Quels utilisateurs ont accédé à une table au cours des sept derniers jours ?
- À quelles tables un utilisateur a-t-il accédé récemment ?
- Afficher les modifications d'autorisations pour tous les objets sécurisables
- Afficher les commandes de notebook les plus récentes exécutées
- Quels utilisateurs se sont connectés à une application Databricks ?
- Quelles applications Databricks ont été mises à jour pour modifier la façon dont l’application est partagée avec d’autres utilisateurs ou groupes ?
- Quelles sont les applications Databricks les plus récemment créées ?
- Quelles sont les actions les plus récentes d’un utilisateur Databricks Apps ?
Qui peut accéder à cette table ?
Cette requête utilise le information_schema pour déterminer quels utilisateurs ont des autorisations sur une table. Entrez des valeurs pour les paramètres catalogue, schéma et nom de table.
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
Quels utilisateurs ont accédé à une table au cours des sept derniers jours ?
Pour que cette requête fonctionne, entrez les informations de chemin d’accès de la table dans les paramètres de requête.
Remarque
Les noms complets ne sont pas capturés dans le journal pour les opérations DML. Incluez le schéma 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
Auxquelles tables un utilisateur a accédé récemment ?
Pour que cette requête fonctionne, entrez l’e-mail de l’utilisateur dans le :User paramètre et un nombre dans le :days_ago paramètre.
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 |
SELECTrequest_paramsFROMsystem.access.auditWHEREservice_name = "notebook"AND action_name = "moveFolder"LIMIT5 |
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,
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"] = "<oauth2-app-client-id>"
GROUP BY
event_date,
workspace_id,
user_email,
username
Remplacez <oauth2-app-client-id> par la valeur d’ID client de l’application OAuth2 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 ou l’onglet Autorisation lorsque vous affichez les détails d’une 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
Quelles sont les applications Databricks les plus récemment créées ?
Cette requête retourne des événements de création d’application, notamment le nom, le créateur et la date de création de l’application, triés par horodatage de l’événement de création.
SELECT
event_time,
user_identity.email AS email,
action_name,
get_json_object(request_params.app, '$.name') AS app_name
FROM
system.access.audit
WHERE
action_name == "createApp"
ORDER BY
event_time DESC
Quelles sont les actions les plus récentes d’un utilisateur Databricks Apps ?
Cette requête retourne les actions récentes par un utilisateur de Databricks Apps, triées par horodatage de l’événement.
SELECT
event_time,
user_identity.email AS email,
service_name,
action_name
FROM
system.access.audit
WHERE
service_name = 'apps'
AND
user_identity.email = '<user-email>'
ORDER BY
event_time DESC