Condividi tramite


CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Crea un oggetto specifica controllo database usando la funzionalità SQL Server. Per altre informazioni, vedere SQL Server Audit (Motore di database).

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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 ]
}

Argomenti

audit_specification_name

Nome della specifica del controllo.

audit_name

Nome del controllo al quale viene applicata questa specifica.

audit_action_specification

Specifica delle azioni sulle entità a protezione diretta che devono essere registrate nel controllo.

azione

Nome di una o più azioni controllabili a livello di database. Per un elenco delle azioni di controllo, vedere Azioni e gruppi di azioni di SQL Server Audit.

audit_action_group_name

Nome di uno o più gruppi di azioni controllabili a livello di database. Per un elenco dei gruppi di azioni di controllo, vedere Azioni e gruppi di azioni di SQL Server Audit.

class

Nome della classe (se applicabile) nell'entità a protezione diretta.

securable

Tabella, vista o altro oggetto a protezione diretta nel database in cui applicare l'azione di controllo o il gruppo di azioni di controllo. Per altre informazioni, vedere Entità a protezione diretta.

principal

Nome dell'entità di database in cui applicare l'azione di controllo o il gruppo di azioni di controllo. Per controllare tutte le entità di database, usare l'entità di database pubblica . Per altre informazioni, vedere Entità (motore di database).

WITH ( STATE = { ON | OFF } )

Abilita o disabilita la raccolta di record mediante il controllo per questa specifica del controllo.

Osservazioni:

Le specifiche del controllo del database sono oggetti non a sicurezza diretta che risiedono in un database specifico. Al momento della creazione, una specifica di controllo database è in stato disabilitato.

Autorizzazioni

Gli utenti che dispongono dell'autorizzazione ALTER ANY DATABASE AUDIT possono creare specifiche del controllo del database e associarle a qualsiasi controllo.

Dopo aver creato una specifica di controllo del database, gli utenti con l'autorizzazione CONTROL SERVER o l'account sysadmin possono visualizzarlo.

Esempi

Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022 o AdventureWorksDW2022, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi.

R. Eseguire il controllo di SELECT e INSERT in una tabella per qualsiasi entità di database

Nell'esempio seguente viene creato un controllo del server denominato Payroll_Security_Audit e quindi una specifica di controllo del database denominata Payroll_Security_Audit che controlla SELECT e INSERT istruzioni da qualsiasi membro del ruolo del database pubblico per la HumanResources.EmployeePayHistory tabella. Ogni utente viene controllato, perché ogni utente è sempre membro del ruolo pubblico .

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. Controllare qualsiasi modifica dei dati in tutti gli oggetti in uno schema per un ruolo del database specifico

Nell'esempio seguente viene creato un controllo del server denominato DataModification_Security_Audit e quindi una specifica di controllo del database denominata Audit_Data_Modification_On_All_Sales_Tables che controlla INSERTle istruzioni , UPDATEe DELETE dagli utenti in un nuovo ruolo SalesUKdel database , per tutti gli oggetti nello Sales schema.

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

Specifiche del controllo del server:

Specifiche di controllo del database:

Viste del catalogo e DMV: