SQL Server 감사 시작(Part.2: 데이터베이스 감사)

12014 단어 SQLSQL Serveraudittech

이 보도에 관하여


이 글은 Azure SQL & Synapse Analytics Advent Calendar 2020 22일째 되는 글이다.
SQL Server 2012부터 SQL Server의 감사 기능으로 새롭게 출시SQL Server Audit되었습니다.
이번에는 SQL Server Audit의データベースレベルの監査에 대해 설명합니다.
  • 이전 문서: SQL Server 감사 시작(Part.1: 서버 감사)
  • 컨디션


    이번 검증은 다음과 같은 환경에서 실시되었다.OS 등과 관련된 내용은 적절하게 교체하십시오.

  • OS: macOS BigSur 버전 11.1

  • Docker for Mac: v20.10.0

  • SQL Server: 버전 15.0443.16
  • 샘플 DB 준비


    데이터베이스 감사 시 샘플의 DB를 준비한다.
    이번에 Microsoft에서 공식적으로 제공하는 AdventureWorks 2019 샘플 데이터베이스를 제작합니다.
    제작 절차에 관해서는 아래의 문장을 참고하시오.
  • MacOS에서 SQL Server를 사용하여 C# 응용 프로그램 만들기
  • Add AdventureWorks to SQL Server 2019 RC1 (RHEL) on Docker
  • AdventureWorks 샘플 데이터베이스
  • SQL Server Audit에 대한 감사


    SQL Server Audit의 감사에는 모니터링 서버 수준 이벤트サーバー監査와 모니터링 데이터베이스 수준 이벤트データベース監査 두 가지 유형이 있습니다.
    감사 수준
    설명
    서버 수준
    관리 수정, 로그인 및 로그오프와 같은 서버 작업과 관련된 작업이 포함됩니다.
    데이터베이스 수준
    데이터 작업 언어(DML) 및 데이터 정의 언어(DDL) 작업과 관련된 작업을 포함합니다.
    SQL 추적 기반 감사는 향후 삭제되며 SQL Server에 주로 사용되는 감사는 권장되지 않습니다.
    확장 이벤트(xEvent) 또는 SQL Server Audit로 이동해야 합니다.

    데이터베이스 수준 감사


    데이터베이스 수준의 감사를 시작하려면 다음과 같은 세 가지가 필요합니다.
  • 서버 감사 대상의 창설
  • 데이터베이스 감사 규범 대상의 창설
  • 데이터베이스 감사 시작
  • 서버 감사 객체 만들기


    서버 감사 객체 작성에 대해서는 저번 보도를 참조하십시오.
    이번에는 지난번 보도된 내용으로 계속해서SampleServerAudit라는 이름의 서버 감사 대상을 만들었다.

    데이터베이스 승인 사양 객체 작성


    Transact-SQL에서 작성된 서버 감사 대상과 관련된 데이터베이스 감사 규격 대상을 만듭니다.CREATE DATABASE AUDIT SPECIFICATION 조회를 사용하여 새로운 데이터베이스 감사 규범 대상을 만듭니다.
    질의에 대한 구문은 CREATE DATABASE AUDIT SPECIFICATION를 참조하십시오.
    이번에는 사전에 제작된 SampleServer Audit 서버 감사 대상과 연계해 데이터베이스 감사 대상을 제작SampleDatabaseAuditSpec하고 감사 동작 및 감사 동작팀을 설치한다.
    데이터베이스 레벨의 감사 작업 그룹에 대해서는 데이터베이스 수준의 감사 작업 그룹를 참조하십시오.
    데이터베이스 레벨의 감사 작업에 대해서는 데이터베이스 수준의 감사 작업를 참조하십시오.
    데이터베이스 감사 규범은 안전하게 보호할 수 없는 대상이며 TempDB 시스템 데이터베이스를 제외하고 데이터베이스 감사 규범은 창설 시 연결된 모든 데이터베이스에 저장된다.데이터베이스 감사의 규격은 제작 시 무효 상태입니다.
    사용자 데이터베이스에서 데이터베이스 감사 규범을 만들거나 수정하면 시스템 보기와 같은 서버 역할 대상의 감사 조작이 포함되지 않습니다.서버 역할 영역 대상이 있으면 데이터베이스 감사 규범을 만들지만 서버 역할 영역 대상을 포함하지 않고 오류를 반환하지 않습니다.
    서버 범위 대상을 검사하려면 마스터 데이터베이스에 데이터베이스 감사 규범을 설정하십시오.
    USE AdventureWorks2019;
    GO
    CREATE DATABASE AUDIT SPECIFICATION SampleDatabaseAuditSpec
    FOR SERVER AUDIT SampleServerAudit
        ADD (SELECT, UPDATE, INSERT, DELETE, EXECUTE ON Schema::Sales BY dbo),
        ADD (BATCH_STARTED_GROUP),
        ADD (DATABASE_PERMISSION_CHANGE_GROUP),
        ADD (SCHEMA_OBJECT_CHANGE_GROUP),
        ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP)
    WITH (STATE = ON)
    GO
    
    이번ADD의 부분에 다음과 같은 감찰행동팀을 설정하였다.
    작업 그룹 이름
    설명
    SELECT
    이 예외는 SELECT를 실행할 때마다 발생합니다.
    UPDATE
    UPDATE가 실행될 때마다 발생합니다.
    INSERT
    INSERT가 실행될 때마다 발생합니다.
    DELETE
    이 예외는 DELETE를 실행할 때마다 발생합니다.
    EXECUTE
    이 예외는 EXECUTE를 실행할 때마다 발생합니다.
    ON Schema::Sales
    cclass:securable 형식으로 보안 자원의 분류 이름과 감사 동작이나 감사 동작 그룹에 적용되는 데이터베이스에 있는 표, 보기 또는 다른 보안 대상을 지정할 수 있습니다.이 예에서는 Sales 전체 모드를 선택했습니다.
    BY dbo
    BY principal 형식으로 감사 동작이나 감사 동작 그룹에 적용할 데이터베이스 머리글자의 이름을 지정할 수 있습니다.이 예에서 데이터베이스 템플릿은 dbo에 지정되어 있습니다.전체 데이터베이스 템플릿을 감사하려면 public를 사용합니다.
    BATCH_STARTED_GROUP
    이 이벤트는 일괄 처리 텍스트, 저장 프로세스, 사무 관리 작업을 시작할 때마다 발생합니다.이것은 실행하기 전에 발생하고 고객이 보낸 대량 또는 저장 과정의 전체 텍스트를 검사합니다.
    DATABASE_PERMISSION_CHANGE_GROUP
    SQL Server의 임의의 사용자가 문장 권한에 대해 GRANT, REVOKE 또는 DENY를 실행할 때마다 데이터베이스 권한에 대한 권한 수여와 같은 한정된 이벤트가 발생한다.
    SCHEMA_OBJECT_CHANGE_GROUP
    이 예외는 모드에서 CREATE, ALTER 또는 DROP 작업을 수행하는 동안 발생합니다.
    SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
    이 예외는 모드 객체에서 GRANT, DENY 또는 REVOKE를 실행하는 동안 발생합니다.sys.database_audit_specifications 보기와 sys.database_audit_specification_details 보기에서 창설된 데이터베이스 감사 규범 대상의 내용을 확인할 수 있습니다.
    뷰에 대한 자세한 내용은 각각 database_audit_specifications (Transact-sql)database_audit_specification_details (Transact-sql)를 확인하십시오.
    또한 WITH (STATE = ON)에서 생성된 데이터베이스 감사 규격 대상을 사용하지 않으면 감사 로그를 가져오는 대상이 되지 않습니다.감사 로그를 가져올 때는 반드시 사용 가능한지 확인하십시오.
    USE AdventureWorks2019;
    GO
    SELECT * FROM sys.database_audit_specifications;
    GO
    SELECT * FROM sys.database_audit_specification_details;
    GO
    
    sys.database_audit_specifications는 보기에 데이터베이스 감사규범 대상이 만들어졌는지, 데이터베이스 감사규범 대상이 유효한지 확인할 수 있다.sys.database_audit_specification_details 보기에서 창설된 데이터베이스 감사 규범 대상에 포함된 감사 동작과 감사 동작 그룹을 확인할 수 있습니다.

    데이터베이스 감사 시작


    서버 감사를 시작함으로써 데이터베이스 감사도 동시에 시작된다.
    조회ALTER SERVER AUDIT를 사용하여 작성된 서버 감사 객체를 활성화하거나 비활성화합니다.
    질의에 대한 구문은 ALTER SERVER AUDIT (Transact-SQL)를 참조하십시오.
    USE master;
    GO
    ALTER SERVER AUDIT SampleServerAudit
        WITH (STATE = ON);
    GO
    
    서버 감사의 시작에 대한 자세한 내용은 저번 보도를 참조하십시오.

    총결산


    이번에는 SQL Server 감사(SQL Server Audit) 중データベース監査에 대한 해설을 진행했다.
    데이터베이스 감시 동작과 감시 동작팀의 일람을 반드시 확인하고 어떤 정보를 데이터베이스 등급의 감사 로그로 얻을 수 있는지 확인하십시오.
    (가능하면 실제로 시도해 보세요.)

    참조 정보

  • AdventureWorks 샘플 데이터베이스
  • SQL Server Audit(데이터베이스 엔진)
  • SQL Server 모니터링 작업 그룹 및 작업
  • 서버 감사 및 서버 감사 사양 작성 방법
  • 서버 감사와 데이터베이스 감사의 규범을 만들다
  • CREATE SERVER AUDIT (Transact-SQL)
  • CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
  • database_audit_specifications (Transact-sql)
  • database_audit_specification_details (Transact-sql)
  • ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
  • sys.fn_get_audit_file (Transact-sql)
  • 좋은 웹페이지 즐겨찾기