# Databricks 감사 로그

## 개요

Databricks는 Apache Spark를 기반으로 구축된 통합 분석 플랫폼입니다. 감사 로그는 사용자 작업, API 호출, 관리 변경 사항을 포함한 계정 및 워크스페이스 활동을 캡처합니다.

Panther는 [Databricks 감사 로그를](https://docs.databricks.com/aws/en/admin/account-settings/audit-log-delivery) S3 버킷으로 전달된 형태로 수집할 수 있습니다. 이러한 로그는 보안 모니터링 및 규정 준수를 위해 관리 작업, 사용자 인증 패턴, 데이터 액세스, 노트북 실행에 대한 포괄적인 가시성을 제공합니다.

## Databricks 감사 로그를 Panther에 온보딩하는 방법

### 사전 요구 사항

* 감사 로그 전달이 구성된 Databricks 계정
  * Databricks 감사 로그 전달에는 Databricks Premium 또는 Enterprise 티어가 필요합니다.
* Databricks 감사 로그를 전달할 수 있는 AWS S3 버킷
* Databricks 감사 로그 전달을 구성하기 위한 관리자 액세스

### 1단계: Databricks 감사 로그를 S3로 전달하도록 구성

1. Databricks 계정 콘솔에 로그인합니다.
2. 다음으로 이동합니다 **설정** > **계정 설정** > **감사 로그 전달**.
3. 다음을 클릭합니다 **로그 전달 생성**.
4. S3 대상 구성:
   * **대상**: 선택 **Amazon S3**.
   * **S3 버킷**: S3 버킷 이름을 입력합니다(예: `my-databricks-audit-logs`).
   * **S3 접두사**: (선택 사항) 로그를 정리하기 위한 접두사를 입력합니다(예: `databricks/audit/`).
   * **리전**: S3 버킷이 위치한 AWS 리전을 선택합니다.
5. 전달 설정 구성:
   * **로그 유형**: 선택 **감사 로그**.
   * **전달 경로 패턴**: Databricks는 다음 패턴을 사용합니다: `workspaceId=<workspaceId>/date=<yyyy-mm-dd>/auditlogs_<id>.json`.
6. 다음을 클릭합니다 **생성** 을 클릭하여 감사 로그 전달을 활성화합니다.

Databricks는 몇 시간 이내에 지정한 S3 버킷으로 감사 로그 전달을 시작합니다.

### 2단계: Panther에서 새 S3 소스 생성

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭합니다 **구성** > **로그 소스**.
2. 다음을 클릭합니다 **새로 만들기.**
3. "Databricks"를 검색한 다음 해당 타일을 클릭합니다.
4. 오른쪽 상단에서 다음을 클릭합니다 **설정 시작**.
5. 다음 **구성** 페이지에서 다음 필드를 입력합니다:
   * **이름**: 소스에 대한 설명이 있는 이름을 입력합니다. 예: `Databricks 감사 로그`.
   * **AWS 계정 ID**: S3 버킷이 위치한 AWS 계정 ID를 입력합니다.
   * **버킷 이름**: S3 버킷 이름을 입력합니다.
   * **KMS 키 ARN**: (선택 사항) S3 버킷이 KMS 암호화를 사용하는 경우 KMS 키 ARN을 입력합니다.
   * **S3 접두사 필터**: (선택 사항) 1단계에서 접두사를 지정했다면, Panther가 처리할 객체를 제한하기 위해 여기에 입력합니다.
6. 다음을 클릭합니다 **설정**.
7. 다음 **인프라** 페이지에서 Panther가 S3 버킷을 읽을 수 있도록 필요한 AWS 인프라를 설정하는 지침이 표시됩니다. 다음 작업을 위해 지침을 따르세요:
   * Panther가 수임할 IAM 역할 생성
   * 역할에 S3 버킷 읽기 권한 부여
   * 새 감사 로그가 도착할 때 Panther에 알리도록 S3 이벤트 알림 구성
8. 다음을 클릭합니다 **설정**.
9. 성공 화면으로 이동하게 됩니다:

   <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-e55cedf82c6a6adc66ec5c14ebdcb164c3b1dcca%2FScreenshot%202023-08-03%20at%204.33.30%20PM.png?alt=media" alt="The success screen reads, &#x22;Everything looks good! Panther will now automatically pull &#x26; process logs from your account&#x22;" width="281"><figcaption></figcaption></figure>

   * 선택적으로 하나 이상의 [디택션 팩](https://docs.panther.com/detections/panther-managed/packs).
   * 다음 **처리되는 이벤트가 없을 때 알러트 트리거** 설정의 기본값은 **예**입니다. 일정 시간 후 로그 소스에서 데이터 흐름이 중지되면 알림을 받게 되므로 이 설정을 활성화된 상태로 유지하는 것을 권장합니다. 시간 범위는 구성 가능하며, 기본값은 24시간입니다.

     <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-c48119abd559990173004bde99ff4907fdd2ded2%2FScreenshot%202023-08-03%20at%204.26.54%20PM.png?alt=media" alt="The &#x22;Trigger an alert when no events are processed&#x22; toggle is set to YES. The &#x22;How long should Panther wait before it sends you an alert that no events have been processed&#x22; setting is set to 1 Day" width="320"><figcaption></figcaption></figure>

## Panther 관리형 디택션

다음을 참조하세요 [Panther 관리형](https://docs.panther.com/detections/panther-managed) Databricks용 룰은 다음에서 확인할 수 있습니다 [panther-analysis GitHub 리포지토리](https://github.com/panther-labs/panther-analysis/tree/main/rules/databricks_rules).

## 지원되는 로그 유형

### Databricks.Audit

Databricks 감사 로그는 사용자 작업, API 호출, 관리 변경 사항을 포함한 계정 및 워크스페이스 활동을 캡처합니다.

참조: [Databricks 감사 로그 전달 문서](https://docs.databricks.com/aws/en/admin/account-settings/audit-log-delivery)

```yaml
스키마: Databricks.Audit
설명: Databricks 감사 로그는 사용자 작업, API 호출, 관리 변경 사항을 포함한 계정 및 워크스페이스 활동을 캡처합니다.
참조URL: https://docs.databricks.com/aws/en/admin/account-settings/audit-log-delivery
필드:
  - 이름: version
    설명: 스키마 버전(예: 2.0)
    유형: string
  - 이름: auditLevel
    설명: 이벤트 범위(ACCOUNT_LEVEL 또는 WORKSPACE_LEVEL)
    유형: string
  - 이름: timestamp
    필수: true
    설명: Unix 밀리초 단위의 이벤트 타임스탬프
    유형: timestamp
    시간 형식:
      - unix_ms
    이벤트 시간 여부: true
  - 이름: orgId
    설명: 조직 식별자
    유형: string
  - 이름: shardName
    설명: 샤드 지정
    유형: string
  - 이름: accountId
    설명: Databricks 계정 UUID
    유형: string
  - 이름: sourceIPAddress
    설명: 요청의 원본 IP 주소
    유형: string
    지표:
      - ip
  - 이름: userAgent
    설명: 클라이언트 사용자 에이전트 문자열
    유형: string
  - 이름: sessionId
    설명: 세션 식별자
    유형: string
  - 이름: requestId
    설명: 고유 요청 식별자
    유형: string
  - 이름: serviceName
    필수: true
    설명: 작업을 수행한 서비스
    유형: string
  - 이름: actionName
    필수: true
    설명: 실행된 특정 작업
    유형: string
  - 이름: userIdentity
    설명: 행위자에 대한 정보
    유형: object
    필드:
      - 이름: email
        설명: 사용자의 이메일 주소
        유형: string
        지표:
          - email
      - 이름: subjectName
        설명: 대체 사용자 식별자
        유형: string
        지표:
          - username
  - 이름: requestParams
    설명: 작업별 요청 매개변수
    유형: json
  - 이름: response
    설명: 응답 정보
    유형: object
    필드:
      - 이름: statusCode
        설명: HTTP 응답 상태 코드
        유형: bigint
      - 이름: errorMessage
        설명: 해당하는 경우 오류 메시지
        유형: string
      - 이름: result
        설명: 작업 결과 데이터
        유형: json
  - 이름: MAX_LOG_MESSAGE_LENGTH
    설명: 바이트 단위의 최대 로그 메시지 길이
    유형: bigint
```
