Partager via


Enregistrements SQL Server Audit

S'applique à :SQL Server

La fonctionnalité SQL Server Audit vous permet d’effectuer l’audit d’événements et de groupes d’événements au niveau du serveur et au niveau de la base de données. Pour plus d’informations, consultez Audit SQL Server (moteur de base de données). Serveur SQL Server.

Les audits sont constitués de zéro ou plusieurs éléments d'action d'audit, enregistrés dans une cibled'audit. La cible d’audit peut être un fichier binaire, le journal des événements d’applications Windows ou le journal des événements de sécurité Windows. Les enregistrements envoyés à la cible peuvent contenir les éléments décrits dans le tableau suivant :

Nom de colonne Description Type Toujours disponible
event_time Date et heure à laquelle l’action auditable est déclenchée. datetime2 Oui
sequence_number Assure le suivi de la séquence d'enregistrements dans un enregistrement d'audit unique qui était trop grand pour la mémoire tampon d'écriture pour audits. int Oui
action_id ID de l’action

Conseil : pour utiliser action_id en tant que prédicat, cette chaîne de caractères doit être convertie en valeur numérique. Pour plus d’informations, consultez Filtrage de l’audit SQL Server sur le prédicat action_id/class_type.
varchar(4) Oui
succeeded Indique si l’action qui a déclenché l’événement a réussi. Pour tous les événements autres que les événements de connexion, cela indique uniquement si la vérification d’autorisation a réussi ou échoué, et non l’opération.
- 1 = Réussite
- 0 = Échec
bit Oui
permission_bitmask Dans certaines actions, il s’agit des autorisations accordées, refusées ou révoquées. varbinary(16) Non
is_column_permission Indicateur indiquant s’il s’agit d’une autorisation au niveau de la colonne. Retourne 0 lorsque le permission_bitmask = 0.
- 1 = Vrai
- 0 = Faux
bit Non
session_id ID de la session au cours de laquelle l'événement s'est produit. smallint Oui
server_principal_id ID du contexte de connexion dans lequel l'action est effectuée. int Oui
database_principal_id ID du contexte de l'utilisateur de base de données dans lequel l'action est effectuée. Retourne 0 si cela ne s’applique pas. Par exemple, une opération de serveur. int Non
target_server_principal_id Principal du serveur sur lequel l’opération GRANT/DENY/REVOKE est effectuée. Retourne 0 s’il n’est pas applicable. int Oui
target_database_principal_id Le principal de base de données sur lequel l’opération GRANT/DENY/REVOKE est effectuée. Retourne 0 s’il n’est pas applicable. int Non
object_id ID de l’entité sur laquelle l’audit s’est produit. Cela inclut les éléments suivants :
Des objets de serveur
databases
Objets de base de données
Des objets de schéma
Retourne 0 si l’entité est le serveur lui-même ou si l’audit n’est pas effectué au niveau d’un objet. Par exemple, l’authentification.
int Non
class_type Type d’entité auditable sur laquelle l’audit se produit. varchar(2) Oui
session_server_principal_name Principal du serveur pour la session. sysname Oui
server_principal_name Connexion actuelle. sysname Oui
server_principal_sid SID de la connexion actuelle. varbinary(85) Oui
database_principal_name Utilisateur actuel. sysname Non
target_server_principal_name Connexion cible de l'action. Retourne LA valeur NULL si elle n’est pas applicable. sysname Non
target_server_principal_sid SID de la connexion cible. Retourne LA valeur NULL si elle n’est pas applicable. varbinary(85) Non
target_database_principal_name Utilisateur cible de l'action. Retourne LA valeur NULL si elle n’est pas applicable. sysname Non
server_instance_name Nom de l'instance de serveur où l'audit s'est produit. Le format de serveur\instance standard est utilisé. sysname Oui
database_name Contexte de base de données dans lequel l'action s'est produite. Nullable. Retourne NULL pour les audits qui se produisent au niveau du serveur. sysname Non
schema_name Contexte du schéma dans lequel l’action s’est produite. sysname Non
object_name Nom de l’entité sur laquelle l’audit s’est produit. Cela inclut les éléments suivants :
Des objets de serveur
databases
Objets de base de données
Des objets de schéma
Nullable. Retourne NULL si l’entité est le serveur lui-même ou si l’audit n’est pas effectué au niveau de l’objet. Par exemple, l’authentification.
sysname Non
instruction Instruction TSQL s’il existe. Retourne LA valeur NULL si elle n’est pas applicable. nvarchar(4000) Non
additional_information Les informations uniques qui s’appliquent uniquement à un seul événement sont retournées en tant que XML. Quelques actions auditables contiennent ce type d’informations.

Un niveau de pile TSQL s’affiche au format XML pour les actions associées à la pile TSQL. Le format XML sera :
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
Le cadre nest_level indique le niveau d’imbrication actuel du cadre. Le nom du module est représenté au format trois parties (database_name, schema_name et object_name). Le nom du module sera analysé pour échapper des caractères xml non valides tels que '\<', '>', '/', '_x'. Ils seront échappés comme _xHHHH\_. Le HHHH signifie le code UCS-2 hexadécimal à quatre chiffres pour le caractère
Nullable. Retourne NULL lorsqu’aucune information supplémentaire n’est signalée par l’événement.
nvarchar(4000) Non
file_name Chemin d’accès et nom du fichier journal d’audit à partir duquel l’enregistrement provient. varchar(260) Oui
audit_file_offset S’applique à : SQL Server uniquement

Décalage de mémoire tampon dans le fichier qui contient l’enregistrement d’audit.
bigint Non
user_defined_event_id S’applique à : SQL Server 2012 (11.x) et versions ultérieures, Azure SQL Database et SQL Managed Instance

ID d’événement défini par l’utilisateur passé en tant qu’argument à sp_audit_writeNULL pour les événements système (valeur par défaut) et différent de zéro pour l’événement défini par l’utilisateur. Pour plus d’informations, consultez sp_audit_write (Transact-SQL).
smallint Non
user_defined_information S’applique à : SQL Server 2012 (11.x) et versions ultérieures, Azure SQL Database et SQL Managed Instance

Utilisé pour enregistrer toutes les informations supplémentaires que l’utilisateur souhaite enregistrer dans le journal d’audit à l’aide de la sp_audit_write procédure stockée.
nvarchar(4000) Non
audit_schema_version Toujours 1 int Oui
sequence_group_id S’applique à : SQL Server uniquement

Identificateur unique
varbinary(85) Non
transaction_id S’applique à : SQL Server uniquement (à partir de 2016)

Identificateur unique pour identifier plusieurs événements d’audit dans une transaction
bigint Non
client_ip S’applique à : Azure SQL Database + SQL Server (à compter de 2017)

Adresse IP source de l’application cliente
nvarchar(128) Non
application_name S’applique à : Azure SQL Database + SQL Server (à compter de 2017)

Nom de l’application cliente qui a exécuté l’instruction qui a provoqué l’événement d’audit
nvarchar(128) Non
duration_milliseconds S’applique à : Azure SQL Database et SQL Managed Instance

Durée d’exécution des requêtes en millisecondes
bigint Non
response_rows S’applique à : Azure SQL Database et SQL Managed Instance

Nombre de lignes retournées dans le jeu de résultats.
bigint Non
affected_rows S’applique uniquement à : Azure SQL Database

Nombre de lignes affectées par l’instruction exécutée.
bigint Non
connection_id S’applique à : Azure SQL Database et SQL Managed Instance

ID de la connexion dans le serveur
GUID Non
data_sensitivity_information S’applique uniquement à : Azure SQL Database

Types d’informations et étiquettes de confidentialité retournés par la requête auditée, en fonction des colonnes classées dans la base de données. En savoir plus sur la découverte et la classification des données Azure SQL Database
nvarchar(4000) Non
host_name Nom d’hôte de la connexion cliente nvarchar(128) Non
session_context Informations de contexte de session pour la connexion nvarchar(4000) Non
client_tls_version S’applique à : SQL Server 2022 et versions ultérieures

Numéro de version TLS utilisé par la connexion cliente
int Non
client_tls_version_name S’applique à : SQL Server 2022 et versions ultérieures

Nom de version TLS utilisé par la connexion cliente
nvarchar(128) Non
database_transaction_id Identificateur de transaction de base de données bigint Non
ledger_start_sequence_number S’applique à : SQL Server 2022 et versions ultérieures

Numéro de séquence de début du registre pour les opérations de registre
bigint Non
external_policy_permissions_checked Autorisations de stratégie externe qui ont été vérifiées pendant l’opération nvarchar(4000) Non

Notes

Certaines actions ne remplissent pas la valeur d’une colonne, car elle peut ne pas être appliquée à l’action.

SQL Server Audit stocke 4 000 caractères de données pour les champs de caractères dans un enregistrement d’audit. Lorsque les valeurs de additional_information et d’instruction retournées à partir d’une action auditable retournent plus de 4 000 caractères, la colonne sequence_number est utilisée pour écrire plusieurs enregistrements dans le rapport d’audit pour enregistrer ces données. Pour ce faire, procédez comme suit :

  • La colonne d’instruction est divisée en 4 000 caractères.

  • SQL Server Audit écrit sur la première ligne de l'enregistrement d'audit les données partielles. Tous les autres champs sont dupliqués sur chaque ligne.

  • La valeur sequence_number est incrémentée.

  • Ce processus est répété jusqu'à ce que toutes les données soient enregistrées.

Vous pouvez connecter les données en lisant les lignes de manière séquentielle à l’aide de la valeur sequence_number , ainsi que les event_Time, les action_id et les colonnes session_id pour identifier l’action.