CREATE DATABASE AUDIT SPECIFICATION(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
SQL Server Audit 기능을 사용하여 데이터베이스 감사 사양 개체를 만듭니다. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.
구문
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 ]
}
인수
audit_specification_name
감사 사양의 이름입니다.
audit_name
이 사양이 적용되는 감사의 이름입니다.
audit_action_specification
감사에 기록해야 하는 보안 주체의 보안 개체에 대한 작업 사양입니다.
작업
하나 이상의 데이터베이스 수준 감사 가능 작업의 이름입니다. 감사 동작의 목록에 대해서는 SQL Server 감사 동작 그룹 및 동작을 참조합니다.
audit_action_group_name
하나 이상의 데이터베이스 수준 감사 가능 작업 그룹의 이름입니다. 감사 동작 그룹의 목록에 대해서는 SQL Server 감사 동작 그룹 및 동작을 참조합니다.
class
보안 개체의 클래스 이름(해당하는 경우)입니다.
securable
감사 작업 또는 감사 작업 그룹을 적용할 데이터베이스의 테이블, 뷰 또는 기타 보안 개체입니다. 자세한 내용은 Securables을 참조하세요.
principal
감사 작업 또는 감사 작업 그룹을 적용할 데이터베이스 보안 주체의 이름입니다. 모든 데이터베이스 보안 주체를 감사하려면 공용 데이터베이스 주체를 사용합니다. 자세한 내용은 보안 주체(데이터베이스 엔진)를 참조하세요.
WITH ( STATE = { ON | OFF } )
감사에서 이 감사 사양에 대한 레코드를 수집하거나 수집하지 못하도록 설정합니다.
설명
데이터베이스 감사 사양은 지정된 데이터베이스에 있는 비보안 개체입니다. 데이터베이스 감사 사양을 처음 만들 때는 사용할 수 없는 상태입니다.
사용 권한
ALTER ANY DATABASE AUDIT
권한이 있는 사용자는 데이터베이스 감사 사양을 만들어 모든 감사에 바인딩할 수 있습니다.
데이터베이스 감사 사양을 만든 후 권한이 있는 CONTROL SERVER
사용자 또는 sysadmin
계정을 볼 수 있습니다.
예제
이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022
또는 AdventureWorksDW2022
샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects) 홈 페이지에서 다운로드할 수 있습니다.
A. 데이터베이스 감사 주체에 대해 테이블에서 SELECT 및 INSERT 감사
다음 예제에서는 호출 Payroll_Security_Audit
된 서버 감사를 만든 다음 테이블에 대해 공용 데이터베이스 역할의 멤버가 감사 SELECT
및 INSERT
문을 호출 Payroll_Security_Audit
하는 데이터베이스 감사 사양을 HumanResources.EmployeePayHistory
만듭니다. 모든 사용자는 항상 공용 역할의 멤버이기 때문에 모든 사용자가 감사됩니다.
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. 특정 데이터베이스 역할에 대한 스키마의 모든 개체에 대한 데이터 수정 감사
다음 예제에서는 호출 DataModification_Security_Audit
된 서버 감사를 만든 다음, 스키마의 모든 개체에 대해 새 데이터베이스 역할SalesUK
의 사용자가 감사UPDATE
INSERT
하고 DELETE
문을 감사하는 데이터베이스 Audit_Data_Modification_On_All_Sales_Tables
감사 사양을 Sales
만듭니다.
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
관련 작업
서버 감사 사양:
- CREATE SERVER AUDIT SPECIFICATION(Transact-SQL)
- ALTER SERVER AUDIT SPECIFICATION(Transact-SQL)
- DROP SERVER AUDIT SPECIFICATION(Transact-SQL)
데이터베이스 감사 사양:
- CREATE DATABASE AUDIT SPECIFICATION(Transact-SQL)
- ALTER DATABASE AUDIT SPECIFICATION(Transact-SQL)
- DROP DATABASE AUDIT SPECIFICATION(Transact-SQL)
카탈로그 뷰 및 DMV:
- sys.server_audits(Transact-SQL)
- sys.server_file_audits(Transact-SQL)
- sys.server_audit_specifications(Transact-SQL)
- sys.server_audit_specification_details(Transact-SQL)
- sys.database_audit_specifications(Transact-SQL)
- sys.database_audit_specification_details(Transact-SQL)