적용 대상:Azure SQL Managed Instance
Azure SQL Managed Instance 감사는 데이터베이스 이벤트를 추적하고 Azure Storage 계정의 감사 로그에 기록합니다.
감사를 사용하면 다음과 같은 이점도 있습니다.
- 규정 준수를 유지 관리하고, 데이터베이스 활동을 이해하고, 비즈니스 문제나 보안 침해로 의심되는 사안을 나타낼 수 있는 불일치 및 이상을 파악하는 데 도움이 됩니다.
- 감사를 사용해도 규정 준수가 보장되는 것은 아니지만 규정 준수 표준을 쉽게 준수할 수 있습니다. 자세한 내용은 Microsoft Azure 보안 센터를 참조하세요. 여기서 최신 SQL Managed Instance 규정 준수 인증서 목록을 찾을 수 있습니다.
중요
Azure SQL Managed Instance의 감사는 가용성 및 성능에 최적화되어 있습니다. 활동량이 많거나 네트워크 부하가 높은 경우 Azure SQL Managed Instance는 작업을 진행할 수 있으며 감사된 일부 이벤트를 기록하지 않을 수 있습니다.
Azure Storage에 인스턴스에 대한 감사 설정
다음 섹션에서는 SQL 관리형 인스턴스에 대한 감사 구성에 대해 설명합니다.
Azure Portal로 이동합니다.
감사 로그가 저장되는 Azure Storage 컨테이너를 만듭니다.
감사 로그를 저장할 Azure Storage 계정으로 이동합니다.
- 지역 간 읽기/쓰기를 방지할 수 있도록 SQL 관리형 인스턴스와 동일한 지역에 있는 스토리지 계정을 사용합니다.
- 스토리지 계정이 Virtual Network 또는 방화벽으로 보호되는 경우 가상 네트워크의 액세스 허가를 참조하세요.
- 보존 기간을 0(무제한 보존)에서 다른 값으로 변경하는 경우 보존 값이 변경된 후에 작성된 로그에만 보존이 적용됩니다. 보존이 무제한 으로 설정된 기간 동안 기록된 로그는 보존을 사용하도록 설정한 후에도 유지됩니다.
스토리지 계정에서 개요로 이동하고 Blob을 선택합니다.
최상위 메뉴에서 + 컨테이너를 선택하여 새 컨테이너를 만듭니다.
컨테이너 이름을 지정하고 공용 액세스 수준을 프라이빗으로 설정한 다음, 확인을 선택합니다.
중요
서버 또는 데이터베이스 수준 감사 이벤트에 대해 변경이 불가능한 로그 저장소를 구성하려는 고객은 Azure Storage에서 제공하는 지침을 따라야 합니다. 변경할 수 없는 Blob Storage를 구성할 때 추가 추가 허용을 선택해야 합니다.
감사 로그용 컨테이너를 만든 후 이 컨테이너를 감사 로그의 대상으로 구성하려면 T-SQL을 사용하거나 SSMS(SQL Server Management Studio) UI를 사용할 수 있습니다.
T-SQL을 사용하여 감사 로그에 대한 Blob Storage 구성:
컨테이너 목록에서 새로 만든 컨테이너를 선택한 다음, 컨테이너 속성을 선택합니다.
복사 아이콘을 선택하여 컨테이너 URL을 복사하고 나중에 사용할 수 있도록 메모장 등에 URL을 저장합니다. 컨테이너 URL 형식은
https://<StorageName>.blob.core.windows.net/<ContainerName>이어야 합니다.
스토리지 계정에 대한 SQL Managed Instance 감사 액세스 권한을 부여하는 Azure Storage SAS 토큰 을 생성합니다.
이전 단계에서 컨테이너를 만든 Azure Storage 계정으로 이동합니다.
스토리지 설정 메뉴에서 공유 액세스 서명을 선택합니다.
다음과 같이 SAS를 구성합니다.
허용된 서비스: Blob
시작 날짜: 표준 시간대 관련 문제를 방지하기 위해 어제 날짜를 사용합니다.
종료 날짜: 이 SAS 토큰이 만료되는 날짜를 선택합니다.
참고
감사 실패를 방지하려면 만료 시 토큰을 갱신합니다.
SAS 생성을 선택합니다.
SAS 토큰은 아래쪽에 표시됩니다. 복사 아이콘을 선택하여 토큰을 복사하고 나중에 사용할 수 있도록 메모장 등에 토큰을 저장합니다.
중요
토큰 시작 부분에서 물음표(
?) 문자를 제거합니다.
SQL Server Management Studio 또는 지원되는 다른 도구를 통해 SQL 관리형 인스턴스에 연결합니다.
다음 T-SQL 문을 실행하여 이전 단계에서 만든 컨테이너 URL 및 SAS 토큰으로 새 자격 증명을 만듭니다.
CREATE CREDENTIAL [<container_url>] WITH IDENTITY='SHARED ACCESS SIGNATURE', SECRET = '<SAS KEY>' GO다음 T-SQL 문을 실행하여 새 서버 감사를 만듭니다(고유한 감사 이름을 선택하고 이전 단계에서 만든 컨테이너 URL을 사용). 지정하지 않으면
RETENTION_DAYS기본값은 0(무제한 보존)입니다.CREATE SERVER AUDIT [<your_audit_name>] TO URL (PATH ='<container_url>', RETENTION_DAYS = <integer>); GO서버 감사 사양 또는 데이터베이스 감사 사양을 만들어 계속 진행합니다.
SQL Server Management Studio 18 이상 버전을 사용하여 감사 로그에 대한 Blob Storage를 구성합니다.
SQL Server Management Studio UI를 사용하여 SQL 관리형 인스턴스에 연결합니다.
개체 탐색기의 루트 메모를 확장합니다.
보안 노드를 확장하여 마우스 오른쪽 단추로 감사 노드를 클릭하고 새 감사를 선택합니다.
감사 대상에서 URL이 선택되어 있는지 확인하고 찾아보기를 선택합니다.
(선택 사항) Azure 계정에 로그인합니다.
드롭다운에서 구독, 스토리지 계정 및 Blob 컨테이너를 선택하거나 만들기를 선택하여 고유한 컨테이너를 만듭니다. 완료되면 확인을 선택합니다.
감사 만들기 대화 상자에서 확인을 선택합니다.
참고
SQL Server Management Studio UI를 사용하여 감사를 만들 때 SAS 키가 있는 컨테이너에 대한 자격 증명이 자동으로 생성됩니다.
Blob 컨테이너를 감사 로그의 대상으로 구성한 후 SQL Server와 마찬가지로 서버 감사 사양 또는 데이터베이스 감사 사양을 만들고 사용하도록 설정합니다.
다음 T-SQL 문을 사용하여 서버 감사를 사용하도록 설정합니다.
ALTER SERVER AUDIT [<your_audit_name>]
WITH (STATE = ON);
GO
추가 정보는 다음을 참조하세요.
Microsoft 지원 작업에 대한 감사
SQL Managed Instance에 대한 Microsoft 지원 작업의 감사를 통해 지원 요청 중에 서버에 액세스해야 하는 경우 Microsoft 지원 엔지니어의 작업을 감사할 수 있습니다. 감사와 함께 이 기능을 사용하여 직원에게 더 많은 투명성을 제공하고 변칙 검색, 추세 시각화, 데이터 손실 방지를 지원합니다.
Microsoft 지원 작업에 대한 감사를 사용하도록 설정하려면 SQL 인스턴스 관리의 보안>에서 감사 만들기로 이동하고 Microsoft 지원 작업을 선택합니다.
참고
Microsoft 작업을 감사하려면 별도의 서버 감사를 만들어야 합니다. 기존 감사에 대해 이 확인란을 사용하도록 설정하면 감사를 덮어쓰고 지원 작업만 기록합니다.
서버 감사를 Event Hubs 또는 Azure Monitor 로그로 설정
SQL 관리형 인스턴스의 감사 로그를 Azure Event Hubs 또는 Azure Monitor 로그로 보낼 수 있습니다. 이 섹션에서는 이 구성을 만드는 방법을 설명합니다.
Azure Portal에서 SQL 관리되는 인스턴스로 이동합니다.
진단 설정을 선택합니다.
진단 켜기를 선택합니다. 진단을 이미 사용하도록 설정한 경우 +진단 설정 추가 를 대신 사용할 수 있습니다.
로그 목록에서 SQLSecurityAuditEvents를 선택합니다.
Microsoft 지원 작업을 구성하는 경우 로그 목록에서 DevOps 작업 감사 로그 를 선택합니다.
감사 이벤트의 대상으로 Event Hubs 또는 Azure Monitor를 선택하거나 둘 다 선택합니다. 각 대상에 대해 필수 매개 변수(예: Log Analytics 작업 영역)를 구성합니다.
저장을 선택합니다.
SSMS(SQL Server Management Studio) 또는 지원되는 다른 클라이언트를 사용하여 SQL 관리형 인스턴스에 연결합니다.
다음 T-SQL 문을 실행하여 서버 감사를 만듭니다.
CREATE SERVER AUDIT [<your_audit_name>] TO EXTERNAL_MONITOR; GOSQL Server와 마찬가지로 서버 감사 사양 또는 데이터베이스 감사 사양을 만들고 사용하도록 설정합니다.
다음과 같이 8단계에서 만든 서버 감사를 사용하도록 설정합니다.
ALTER SERVER AUDIT [<your_audit_name>] WITH (STATE = ON); GO
T-SQL을 사용하여 감사 설정
-- Create audit without OPERATOR_AUDIT - Will audit standard SQL Audit events
USE [master];
GO
CREATE SERVER AUDIT testingauditnodevops TO EXTERNAL_MONITOR;
GO
CREATE SERVER AUDIT SPECIFICATION testingaudit_Specification_nodevops
FOR SERVER AUDIT testingauditnodevops ADD (SUCCESSFUL_LOGIN_GROUP),
ADD (BATCH_COMPLETED_GROUP),
ADD (FAILED_LOGIN_GROUP)
WITH (STATE = ON);
GO
ALTER SERVER AUDIT testingauditnodevops
WITH (STATE = ON);
GO
-- Create separate audit without OPERATOR_AUDIT ON - Will audit Microsoft Support Operations
USE [master]
CREATE SERVER AUDIT testingauditdevops TO EXTERNAL_MONITOR
WITH (OPERATOR_AUDIT = ON);
GO
CREATE SERVER AUDIT SPECIFICATION testingaudit_Specification_devops
FOR SERVER AUDIT testingauditdevops ADD (SUCCESSFUL_LOGIN_GROUP),
ADD (BATCH_COMPLETED_GROUP),
ADD (FAILED_LOGIN_GROUP)
WITH (STATE = ON);
GO
ALTER SERVER AUDIT testingauditdevops
WITH (STATE = ON);
GO
감사 로그 사용
Azure Storage에 저장된 로그 사용
여러 방법으로 Blob 감사 로그를 볼 수 있습니다.
T-SQL(시스템 함수 sys.fn_get_audit_file)을 사용하여 감사 로그 데이터를 테이블 형식으로 반환할 수 있습니다.
Azure Storage Explorer 등의 도구를 사용하여 감사 로그를 살펴볼 수 있습니다. Azure Storage에서 감사 로그는 감사 로그를 저장하도록 정의된 컨테이너 내부에 Blob 파일 컬렉션으로 저장됩니다. 스토리지 폴더의 계층 구조, 명명 규칙 및 로그 형식에 대한 자세한 내용은 Blob 감사 로그 형식 참조를 참조하세요.
감사 로그 사용 방법의 전체 목록은 Azure SQL Database 감사 시작하기를 참조하세요.
Event Hubs에 저장된 로그 사용
Event Hubs에서 감사 로그 데이터를 사용하려면 이벤트를 사용하고 대상에 기록하도록 스트림을 설정해야 합니다. 자세한 내용은 Azure Event Hubs 설명서를 참조하세요.
Azure Monitor 로그에 저장된 로그 사용 및 분석
감사 로그가 Azure Monitor 로그에 기록되면 Log Analytics 작업 영역에서 사용할 수 있으며, 여기서 감사 데이터에 대한 고급 검색을 실행할 수 있습니다. 시작점으로 Log Analytics 작업 영역으로 이동합니다.
일반 섹션 아래에서 로그를 선택하고 기본 쿼리(예: search "SQLSecurityAuditEvents")를 입력하여 감사 로그를 봅니다.
Azure Monitor 로그는 통합 검색 및 사용자 지정 대시보드를 사용하여 모든 워크로드 및 서버에서 수백만 개의 레코드를 쉽게 분석할 수 있는 실시간 운영 인사이트를 제공합니다. Azure Monitor 로그 검색 언어 및 명령에 대한 자세한 내용은 Azure Monitor 로그 검색 참조를 참조하세요.
Azure SQL Managed Instance 내 데이터베이스와 SQL Server 내 데이터베이스 간의 감사 차이점
Azure SQL Managed Instance 내 데이터베이스와 SQL Server 내 데이터베이스에서 감사 간의 주요 차이점은 다음과 같습니다.
- Azure SQL Managed Instance에서는 감사가 서버 수준에서 작동하며 Azure Blob Storage에
.xel로그 파일을 저장합니다. - SQL Server에서는 감사가 서버 수준에서 작동하지만, 이벤트를 파일 시스템과 Windows 이벤트 로그에 저장합니다.
관리되는 인스턴스의 XEvent 감사는 Azure Blob Storage 대상을 지원합니다. 파일 및 Windows 로그는 지원되지 않습니다.
Azure Blob Storage에 대한 감사에서 CREATE AUDIT 구문의 주요 차이점은 다음과 같습니다.
- 새 구문
TO URL을 제공하고.xel파일이 배치되는 Azure Blob Storage 컨테이너의 URL을 지정할 수 있습니다. - Event Hubs 및 Azure Monitor 로그 대상을 사용하도록 설정할 수 있는 새 구문
TO EXTERNAL MONITOR를 제공합니다. - Azure SQL Managed Instance는 Windows 파일 공유에 액세스할 수 없으므로
TO FILE구문은 지원되지 않습니다. - 종료 옵션은 지원되지 않습니다.
-
queue_delay0은 지원되지 않습니다.