적용 대상:✅Microsoft Fabric의 SQL 데이터베이스
패브릭의 SQL 데이터베이스에 대한 감사는 조직에서 데이터베이스 활동을 추적하고 기록할 수 있는 중요한 보안 및 규정 준수 기능입니다. 감사는 누가 어떤 데이터에 액세스했는지, 언제, 어떻게 액세스했는지와 같은 질문에 답변하는 데 도움을 줌으로써 규정 준수, 위협 탐지 및 포렌식 조사를 지원합니다.
SQL 감사란?
SQL 감사는 데이터베이스 활동과 관련된 이벤트를 캡처하고 저장하는 프로세스를 나타냅니다. 이러한 이벤트에는 데이터 액세스, 스키마 변경, 권한 수정 및 인증 시도가 포함됩니다.
Fabric에서 감사는 데이터베이스 수준에서 작동하며 다음을 지원합니다.
- 규정 준수 모니터링(예: HIPAA, SOX)
- 보안 조사
- 운영 인사이트
감사 대상
감사 로그는 OneLake의 읽기 전용 폴더에 기록되며 T-SQL 함수 또는 OneLake 탐색기를 사용하여 sys.fn_get_audit_file_v2 쿼리할 수 있습니다.
패브릭의 SQL 데이터베이스의 경우 감사 로그는 OneLake에 저장됩니다. https://onelake.blob.fabric.microsoft.com/{workspace_id}/{artifact_id}/Audit/sqldbauditlogs/
이러한 로그는 변경할 수 없으며 적절한 권한이 있는 사용자가 액세스할 수 있습니다. OneLake Explorer 또는 Azure Storage Explorer를 사용하여 로그를 다운로드할 수도 있습니다.
청구서 발행
현재 Fabric OneLake에 감사 로그를 작성해도 추가 요금이 발생하지 않으며 스토리지는 용량의 OneLake 스토리지 한도의 일부로 포함됩니다.
구성 옵션
기본적으로 모든 항목 감사 옵션은 일괄 처리 완료 및 성공 및 실패 인증을 비롯한 모든 이벤트를 캡처합니다.
보다 선택적이려면 권한 변경 및 로그인 시도, 데이터 읽기 및 쓰기 및/또는 스키마 변경과 같이 미리 구성된 감사 시나리오 중에서 선택합니다.
미리 구성된 각 시나리오는 특정 감사 작업 그룹(예: SCHEMA_OBJECT_ACCESS_GROUP) DATABASE_PRINCIPAL_CHANGE_GROUP에 매핑됩니다.
사용자 지정 이벤트에서 감사할 이벤트를 선택할 수도 있습니다. 개별 작업 그룹을 선택하여 요구에 맞게 감사를 조정할 수 있습니다. 이 옵션은 엄격한 내부 보안 정책을 가진 조직에 적합합니다.
일반 또는 알려진 액세스 쿼리를 필터링하려면 조건자(예: SELECT 문 제외)에 따라 감사 이벤트를 필터링하는 Transact-SQL(T-SQL)에 조건자 식을 제공할 수 있습니다 WHERE statement NOT LIKE '%select%'.
Permissions
패브릭 작업 영역 역할(권장)을 사용하여 감사를 관리하려면 패브릭 작업 영역 기여자 역할 이상의 권한이 있어야 합니다.
SQL 권한으로 감사를 관리하려면 다음을 수행합니다.
- 데이터베이스 감사를 구성하려면 ALTER ANY DATABASE AUDIT 권한이 있어야 합니다.
- T-SQL을 사용하여 감사 로그를 보려면 VIEW DATABASE SECURITY AUDIT 권한이 있어야 합니다.
보존
기본적으로 감사 데이터는 이 기간 이후에 로그를 자동으로 삭제하도록 사용자 지정 보존 기간을 구성하지 않는 한 무기한 보존됩니다.
패브릭은 현재 OneLake의 항목 폴더에 감사 로그를 저장하고 항목 수명 주기로 범위를 지정합니다. 항목을 삭제하면 Fabric도 해당 감사 로그를 삭제합니다. 항목의 수명 주기와 독립적으로 보존해야 하는 경우 AzCopy 또는 SSDT와 같은 도구를 사용하여 감사 로그를 별도의 스토리지 위치(예: 다른 Lakehouse 또는 Azure Storage 계정)로 이동합니다.
복원 후 설정 보존
복원 작업 후에는 감사 설정이 유지되지만 Fabric SQL Database에서 감사를 다시 사용하도록 설정해야 합니다. Fabric 포털에서 SQL 감사 관리를 열고 저장을 선택합니다.
패브릭 포털에서 SQL 데이터베이스에 대한 감사 구성
패브릭 SQL 데이터베이스에 대한 감사를 시작하려면 다음을 수행합니다.
- 패브릭 포털에서 SQL 데이터베이스로 이동하여 엽니다.
- 주 메뉴에서 보안 탭을 선택한 다음 , SQL 감사 관리를 선택합니다.
- SQL 감사 관리 창이 열립니다.
- SQL 감사 로그에 이벤트 저장 단추를 선택하여 감사를 사용하도록 설정합니다.
- 데이터베이스 이벤트 섹션에 기록할 이벤트를 구성합니다. 모든 이벤트를 캡처하려면 모든 이벤트 감사 (기본값)를 선택합니다.
- 필요에 따라 보존에서 보존 정책을 구성 합니다.
- 필요에 따라 조건자 식 필드에서 무시하도록 T-SQL 명령의 조건자 식을 구성합니다.
- 저장을 선택합니다.
감사 로그를 조회하다
감사 로그는 sys.fn_get_audit_file 및 sys.fn_get_audit_file_v2 T-SQL 함수를 사용하여 쿼리할 수 있습니다.
다음 스크립트에서는 작업 영역 ID 및 데이터베이스 ID를 제공해야 합니다. 두 가지 모두 Fabric 포털의 URL에서 찾을 수 있습니다. 예: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. URL의 첫 번째 고유 식별자 문자열은 Fabric 작업 공간 ID이고, 두 번째 고유 식별자 문자열은 SQL 데이터베이스 ID입니다.
-
<fabric_workspace_id>를 패브릭 작업 영역 ID로 바꾸세요. URL에서 작업 영역의 ID를 찾을 수 있습니다. 브라우저 창에서 뒤의 두/문자로 둘러싸인 고유한 문자열입니다. - 패브릭 데이터베이스 ID에서
<fabric sql database id>를 자신의 SQL 데이터베이스로 대체합니다. URL에서 데이터베이스 항목의 ID를 찾을 수 있습니다. 이 ID는 브라우저 창에서 두/문자 내/sqldatabases/의 고유한 문자열입니다.
다음은 그 예입니다.
SELECT * FROM sys.fn_get_audit_file_v2(
'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
DEFAULT, DEFAULT, DEFAULT, DEFAULT );
이 예제에서는 2025-11-17T08:40:40Z부터 2025-11-17T09:10:40Z까지의 감사 로그를 가져옵니다.
SELECT *
FROM sys.fn_get_audit_file_v2(
'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
DEFAULT,
DEFAULT,
'2025-11-17T08:40:40Z',
'2025-11-17T09:10:40Z')
자세한 내용은 sys.fn_get_audit_file 및 sys.fn_get_audit_file_v2 참조하세요.
REST API를 사용하여 감사 관리
패브릭 REST API를 사용하여 프로그래밍 방식으로 SQL 데이터베이스 감사 설정을 보고 구성할 수도 있습니다. REST API를 사용하면 PowerShell 스크립트를 사용하여 작업 영역의 모든 데이터베이스에서 지속적으로 감사를 관리할 수 있습니다.
자세한 내용은 REST API를 사용하여 SQL 데이터베이스 감사 관리를 참조하세요.
감사 로그에서 민감한 정보를 보호합니다
입력값을 SQL 문에 직접 연결해 동적 SQL을 구성하면, 그 값들은 문장 텍스트의 일부가 됩니다. 명세서를 감사할 경우, 감사 로그에 명세서 텍스트에 포함된 민감한 정보가 포함될 수 있습니다.
민감한 정보 노출 위험을 줄이기 위해 다음 방법을 따르세요:
민감한 값이 포함된 연산에는 동적 SQL을 피하세요
보안에 민감한 관리 작업의 경우, 민감한 값을 동적 SQL에 연결하여 문장을 구성하는 것을 피하세요. 가능하다면 네이티브 SQL 문이나 민감한 값이 문장 텍스트에 직접 삽입되지 않도록 하는 다른 방식을 사용하세요.
사용자가 접근할 수 있는 문자열로 구성된 동적 SQL 문장은 또한 애플리케이션이 SQL 인젝션 공격에 취약해집니다. SQL 인젝션은 악성 코드를 문자열에 삽입하여 이후 데이터베이스에 전달하여 파싱 및 실행하는 공격입니다. SQL 주입 취약점에 대해 T-SQL을 구성하는 모든 프로시저는 반드시 테스트해야 합니다. 왜냐하면 데이터베이스 엔진이 받는 모든 문법적으로 유효한 쿼리를 실행하기 때문입니다. 데이터 값에 매개변수를 사용하고, 쿼리 텍스트에 매개변수 값을 연결하지 마세요. 적절히 매개변수화된 값은 실행 가능한 SQL 문법이 아닌 데이터로 취급됩니다.
감사 로그 접근 제한
감사 로그 접근을 권한 있는 사용자와 관리자에게만 제한하세요. SQL 데이터베이스 엔진 내에서는 SQL 권한이 SQL 데이터베이스 엔진 내 감사 접근을 관리하며, 플랫폼과 감사 범위에 따라 달라질 수 있습니다. 최소 권한 원칙을 따르고 감사 정보를 관리하거나 검토하는 데 필요한 권한만 부여하세요. 서버 수준과 데이터베이스 수준 감사 권한 모델이 별도로 존재하며, Azure SQL Database는 서버 수준 권한의 가용성에서 SQL Server와 차별화됩니다. 감사 데이터 접근을 제한하면 기록된 감사 이벤트에 민감한 정보가 존재할 때 무단 공개 위험을 줄이는 데 도움이 됩니다.
SQL 데이터베이스 엔진 외부에서 감사 로그에 대한 접근은 설정된 목적지(예: OneLake)의 권한에 따라 달라집니다. 최소 권한 원칙을 따르고 감사 정보를 관리하거나 검토하는 데 필요한 권한만 부여하세요.