SQL Server 데이터베이스 감사

이 페이지에서는 SQL Server 감사 기능을 사용하는 Cloud SQL에서의 데이터베이스 감사에 대해 설명합니다.

개요

Cloud SQL에서 SQL Server 감사 기능에는 다음이 포함됩니다.

  • 서버 감사 사양 만들기
  • 서버 수준 및 데이터베이스 수준 이벤트 추적 및 로깅

SQL Server 감사에 대한 자세한 내용은 SQL Server 감사(데이터베이스 엔진)를 참조하세요.

시작하기 전에

데이터베이스 감사를 사용 설정하기 전 이 섹션의 기본 요건을 검토하세요.

감사 파일용 Cloud Storage 버킷

감사 파일(감사 로그)은 Cloud Storage 버킷 위치에 업로드됩니다. 따라서 Google Cloud 계정이 소유하는 버킷을 만들어야 할 수 있습니다.

또는 다른 계정이 소유하는 버킷 위치를 사용할 수 있습니다. 감사를 사용 설정할 때 필요한 권한이 있으면 지정된 서비스 계정의 버킷 위치에 감사 파일을 업로드하기 위해 roles/storage.objectAdmin 역할이 자동으로 부여됩니다. 필요한 권한이 없으면 나중에 서비스 계정에 이를 부여해야 합니다.

감사 사용 설정에 적합한 사용자

감사를 사용 설정하고 감사 사양을 만들기 위해서는 기본 sqlserver 사용자를 사용할 수 있어야 합니다. SQL Server용 Cloud SQL 인스턴스를 만들 때 기본 sqlserver 사용자가 생성되었습니다.

감사 사용 설정

감사를 사용 설정할 때 Cloud Storage 위치가 필요합니다. 다음은 선택사항입니다.

  • 인스턴스의 로그 보관 기간
  • 업로드 간격(업로드 빈도)

Console

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 인스턴스 맞춤설정 섹션에서 플래그 및 매개변수를 클릭합니다.
  5. SQL Server 감사 사용 설정 옆의 체크박스를 선택합니다.
  6. 감사 파일이 업로드되는 위치로 Cloud Storage 버킷을 지정합니다.
  7. 고급 옵션을 클릭합니다.
  8. 선택적으로 로그 보관 기간 일 수를 1~7일로 지정합니다(기본값 7일).
  9. 선택적으로 로그(감사 파일) 업로드 빈도를 1~720분으로 지정합니다(기본값 10분).
  10. 저장을 클릭하여 변경사항을 적용합니다.

gcloud

다음 명령어는 감사를 사용 설정합니다.

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m

다음 표에서는 이 작업의 gcloud 매개변수를 요약해서 보여줍니다.

매개변수 설명 허용되는 값 기본값
--audit-bucket-path 필수. 감사 파일이 업로드되는 Cloud Storage 버킷 위치입니다. 감사가 사용 중지된 경우 비어 있습니다. 그렇지 않으면 gs://로 시작하는 버킷 경로입니다. 기본적으로 감사가 사용 중지되기 때문에 비어 있습니다.
--audit-retention-interval 선택사항. 디스크의 감사 로그 보관 일 수입니다. 1~7일. 일 단위만 허용됩니다. 7일.
--audit-upload-interval 선택사항. 감사 로그(감사 파일)를 업로드할 빈도입니다. 1~720분. 10분.

REST v1

REST API를 사용하여 인스턴스에 대해 감사를 사용 설정할 수 있습니다. 다음 요청 프로토타입에 표시된 것처럼 Cloud Storage 버킷, 감사 파일 보관 일 수, 감사 파일 업로드 빈도를 지정할 수 있습니다. 버킷 위치만 필요합니다. 자세한 내용은 SqlServerAuditConfig를 참조하세요.

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

REST v1beta4

REST API를 사용하여 인스턴스에 대해 감사를 사용 설정할 수 있습니다. 다음 요청 프로토타입에 표시된 것처럼 Cloud Storage 버킷, 감사 파일 보관 일 수, 감사 파일 업로드 빈도를 지정할 수 있습니다. 버킷 위치만 필요합니다. 자세한 내용은 SqlServerAuditConfig를 참조하세요.

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

감사 사용 중지

이 섹션에는 감사를 사용 중지하기 위한 옵션이 포함되어 있습니다. 감사를 사용 중지할 때는 아직 업로드되지 않은 파일을 포함하여 모든 감사 파일이 인스턴스에서 삭제됩니다. 또한 모든 서버 감사가 사용 중지되고 감사를 재개하려면 다시 사용 설정해야 합니다. Cloud Storage 버킷에 업로드된 감사 로그는 버킷의 보관 설정에 따라 유지될 수 있습니다.

감사를 사용 중지하기 위한 옵션은 다음과 같습니다.

Console

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 인스턴스 맞춤설정 섹션에서 플래그 및 매개변수를 클릭합니다.
  5. SQL Server 감사 사용 설정 옆의 체크박스를 선택 해제합니다.
  6. 저장을 클릭하여 변경사항을 적용합니다.

gcloud

--audit-bucket-path 매개변수의 값이 생략된 다음 명령어는 감사를 사용 중지합니다.

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=

REST v1

sqlServerAuditConfig 객체 필드가 생략된 다음은 감사를 사용 중지하기 위한 요청 프로토타입입니다.

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

REST v1beta4

sqlServerAuditConfig 객체 필드가 생략된 다음은 감사를 사용 중지하기 위한 요청 프로토타입입니다.

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

감사 파일의 자동 업로드

감사를 사용 중지한 후에는 생성된 감사 파일이 지정된 Cloud Storage 버킷에 자동으로 업로드됩니다.

또한 구성된 보관 기간(간격)이 만료될 때까지 생성된 감사 파일이 인스턴스에 저장됩니다. 이 기간이 지나면 업로드할 수 없는 파일이라도 감사 파일이 영구적으로 삭제됩니다.

서버 감사 만들기

감사를 사용 설정한 후 기본 sqlserver 사용자에게 서버 감사 만들기, 수정, 삭제 권한이 부여됩니다.

CREATE SERVER AUDIT 명령어를 사용하여 새 서버 감사를 정의합니다. 또한 SQL Server Management Studio(SSMS)의 사용자 인터페이스를 사용하여 서버 감사를 만들 수 있습니다.

다음 매개변수 범주가 모든 서버 감사에 적용됩니다.

매개변수 범주 허용되는 값
감사 로그 실패 시 계속 또는 실패
감사 대상 파일
경로 /var/opt/mssql/audit
최대 파일 크기 2~50MB
최대 롤오버 파일 구성되지 않아야 함
최대 파일 구성되지 않아야 함
디스크 공간 예약 사용 안함

감사 읽기

인스턴스에서 감사 읽기

서버 감사로 생성된 감사 파일에서 데이터를 검색하려면 저장 프로시져 msdb.dbo.gcloudsql_fn_get_audit_file을 사용할 수 있습니다. msdb.dbo.gcloudsql_fn_get_audit_file 저장 프로시져는 sys.fn_get_audit_file 함수와 동일한 매개변수를 수락합니다.

따라서 이 저장 프로시져 사용에 관한 자세한 내용은 sys.fn_get_audit_file을 참조하세요.

감사 데이터 검색을 위한 msdb.dbo.gcloudsql_fn_get_audit_file 프로시져 사용 예시는 다음과 같습니다.

SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'

버킷에서 감사 읽기

Cloud Storage 버킷에서 감사를 읽으려면 버킷에서 SQL Server 인스턴스로 파일을 다운로드할 수 있습니다. 이 SQL Server 인스턴스는 다음과 같을 수 있습니다.

  • Compute Engine Windows 인스턴스
  • Compute Engine Linux 인스턴스
  • SQL Server를 실행하는 다른 유형의 인스턴스

버킷의 감사 파일은 로컬 디스크와 같이 해당 인스턴스에 액세스할 수 있는 위치로 전송되어야 합니다. 그런 후 감사 파일의 정보를 반환하기 위해 serveradmin 고정된 서버 역할의 구성원을 사용하여 sys.fn_get_audit_file 함수를 실행합니다. 예를 들어 Windows 인스턴스에서 D:\Audit로 감사 파일을 전송한 경우 다음과 비슷한 명령어를 사용할 수 있습니다.

SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'

측정항목 모니터링

측정항목 탐색기를 통해 제공되는 Cloud SQL 측정항목의 일부로 감사 관련 작업을 모니터링할 수 있습니다.

  • database/sqlserver/audits_upload_count. 이 측정항목은 성공 및 실패 시도에 대한 감사 파일 업로드 시도 합계를 나타냅니다. 업로드가 성공했는지 모니터링하려면 이 측정항목을 확인합니다.
  • database/sqlserver/audits_size. 이 측정항목은 측정 시 인스턴스에 저장된 감사 파일에 사용되는 디스크 공간을 나타냅니다. 이 측정항목은 인스턴스의 총 감사 파일 크기(바이트)를 제공합니다.

권장사항

  • 리전 간 큰 파일을 전송하지 않도록 방지하려면 다음을 고려하세요.
    • 멀티 리전 Cloud Storage 버킷 만들기 또는
    • 인스턴스와 동일한 리전에서 대상 Cloud Storage 버킷 설정
  • SQL Server 감사 기능을 사용하기 전 자동 스토리지 증가 사용 설정을 고려합니다. 총 크기 및 보관 간격에 따라 감사 파일에 상당한 디스크 공간이 필요할 수 있습니다.
  • 감사를 사용 중지한 후 인스턴스가 감사 파일을 Cloud Storage 버킷에 업로드할 수 있는지 확인합니다. 감사를 설정한 요청자에게 Cloud Storage 버킷에 파일을 업로드하기 위해 필요한 권한이 없으면 권한이 자동으로 부여되지 않습니다.
  • 실패한 업로드 시도 및 과도한 디스크 사용에 대한 알림을 표시하려면 측정항목 기반 알림 정책을 설정합니다.
  • 너무 많은 감사 파일이 너무 오래 보관되지 않도록 방지하려면 Cloud Storage 버킷에 대해 데이터 보관 정책을 설정합니다.