Référence de table système du journal d’audit
Important
Cette fonctionnalité est disponible en préversion publique.
Cet article décrit le schéma de la table de journal d'audit et vous fournit 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'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.
La table système du journal d'audit se trouve à l'adresse 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.
- Seuls les journaux au niveau du compte Unity Catalog sont disponibles dans toutes les régions.
- Enregistrement des journaux d'audit au niveau du compte
workspace_id
comme0
.
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 | Description | Exemple : |
---|---|---|---|
version |
string | Version du schéma de journal d'audit | 2.0 |
event_time |
timestamp | Timestamp | 2023-01-01T01:01:01.123 |
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 | Adresse IP d'où provient la requête | 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 d'où provient la requête | 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 | Mappage des valeurs de clé 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 renvoyées de réponses | {"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 |
Exemples de requêtes
Les sections suivantes incluent des exemples de requêtes que vous pouvez utiliser pour obtenir des insights sur votre table système des journaux d’audit. Pour que ces requêtes fonctionnent, remplacez les valeurs entre crochets {{}}
par vos propres paramètres.
Remarque
Il peut s'agir, entre autres, 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 du dernier jour ?
- À quelles tables un utilisateur a-t-il accédé ?
- Afficher toutes les modifications des autorisations
- Afficher les commandes de notebook les plus récentes exécutées
Qui peut accéder à cette table ?
Cette requête utilise le information_schema
pour savoir quels utilisateurs ont des autorisations sur une table.
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}}'
Quels utilisateurs ont accédé à une table au cours du dernier jour ?
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 = '{{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
À quelles tables un utilisateur a-t-il accédé ?
Remarque
Pour filtrer par plage de dates, supprimez les marques de commentaire de la clause date en bas de la requête.
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
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 renvoie les commandes de notebook les plus récentes exécutées avec 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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour