Partager via


CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Crée un objet de spécification d’audit de base de données à l’aide de la fonctionnalité SQL Server Audit. Pour plus d’informations, consultez Audit SQL Server (moteur de base de données).

Conventions de la syntaxe Transact-SQL

Syntaxe

CREATE DATABASE AUDIT SPECIFICATION audit_specification_name
{
    FOR SERVER AUDIT audit_name
        [ ADD (
            { <audit_action_specification> | audit_action_group_name }
            [ , ...n ] )
        ]
        [ WITH ( STATE = { ON | OFF } ) ]
}
[ ; ]
<audit_action_specification>::=
{
    action [ , ...n ] ON [class::]securable BY principal [ , ...n ]
}

Arguments

audit_specification_name

Nom de la spécification de l'audit.

audit_name

Nom de l'audit auquel cette spécification est appliquée.

audit_action_specification

Spécification des actions sur les éléments sécurisables par les principaux qui doivent être enregistrés dans l’audit.

action

Nom d’une ou plusieurs actions auditables au niveau de la base de données. Pour obtenir la liste des actions d’audit, consultez Actions et groupes d’actions SQL Server Audit.

audit_action_group_name

Nom d’un ou plusieurs groupes d’actions auditables au niveau de la base de données. Pour obtenir la liste des groupes d’actions d’audit, consultez Actions et groupes d’actions SQL Server Audit.

class

Nom de classe (le cas échéant) sur l’élément sécurisable.

securable

Table, vue ou autre objet sécurisable dans la base de données sur laquelle appliquer l’action d’audit ou le groupe d’actions d’audit. Pour plus d'informations, consultez Securables.

principal

Nom du principal de base de données sur lequel appliquer l’action d’audit ou le groupe d’actions d’audit. Pour auditer tous les principaux de base de données, utilisez le principal de base de données public . Pour plus d’informations, consultez Principaux (moteur de base de données).

WITH ( STATE = { ON | OFF } )

Active ou désactive la collecte d'enregistrements d'audit pour cette spécification d'audit.

Notes

Les spécifications d'audit de base de données sont des objets non sécurisables qui résident dans une base de données spécifiée. Lorsqu’une spécification d’audit de base de données est créée, elle se trouve dans un état désactivé.

autorisations

Les utilisateurs dotés de l’autorisation ALTER ANY DATABASE AUDIT peuvent créer des spécifications d’audit de base de données et les lier à n’importe quel audit.

Une fois qu’une spécification d’audit de base de données est créée, les utilisateurs disposant de l’autorisation CONTROL SERVER ou du sysadmin compte peuvent l’afficher.

Exemples

Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022 ou AdventureWorksDW2022 fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.

R : Auditer SELECT et INSERT dans une table pour n’importe quel principal de base de données

L’exemple suivant crée un audit de serveur appelé Payroll_Security_Audit , puis une spécification d’audit de base de données appelée Payroll_Security_Audit audite SELECT et INSERT instructions par n’importe quel membre du rôle de base de données publique , pour la HumanResources.EmployeePayHistory table. Chaque utilisateur est audité, car chaque utilisateur est toujours membre du rôle public .

USE master;
GO

-- Create the server audit.
CREATE SERVER AUDIT Payroll_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO

-- Enable the server audit.
ALTER SERVER AUDIT Payroll_Security_Audit
WITH (STATE = ON);
GO

-- Move to the target database.
USE AdventureWorks2022;
GO

-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Pay_Tables
FOR SERVER AUDIT Payroll_Security_Audit ADD (
    SELECT, INSERT ON HumanResources.EmployeePayHistory BY PUBLIC
)
WITH (STATE = ON);
GO

B. Auditer toute modification de données sur tous les objets d’un schéma pour un rôle de base de données spécifique

L’exemple suivant crée un audit de serveur appelé DataModification_Security_Audit , puis une spécification d’audit de base de données appelée Audit_Data_Modification_On_All_Sales_Tables audits INSERT, UPDATEet DELETE instructions par les utilisateurs dans un nouveau rôle SalesUKde base de données , pour tous les objets du Sales schéma.

USE master;
GO

-- Create the server audit.
-- Change the path to a path that the SQLServer Service has access to.
CREATE SERVER AUDIT DataModification_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO

-- Enable the server audit.
ALTER SERVER AUDIT DataModification_Security_Audit
WITH (STATE = ON);
GO

-- Move to the target database.
USE AdventureWorks2022;
GO

CREATE ROLE SalesUK
GO

-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Data_Modification_On_All_Sales_Tables
FOR SERVER AUDIT DataModification_Security_Audit ADD (
    INSERT, UPDATE, DELETE ON SCHEMA::Sales BY SalesUK
)
WITH (STATE = ON);
GO

Spécifications d’audit du serveur :

Spécifications d’audit de base de données :

Vues de catalogue et vues de gestion dynamique :