Microsoft Sentinel 데이터 레이크에서 Notebook 실행

Jupyter Notebook은 Microsoft Sentinel 데이터 레이크 및 페더레이션 테이블의 데이터를 탐색, 분석 및 시각화하기 위한 대화형 환경을 제공합니다. Notebook을 사용하면 코드를 작성하고 실행하고, 워크플로를 문서화하고, 결과를 한 곳에서 볼 수 있습니다. 이렇게 하면 데이터 탐색을 쉽게 수행하고, 고급 분석 솔루션을 빌드하고, 다른 사용자와 인사이트를 공유할 수 있습니다. notebook은 Visual Studio Code 내에서 Python 및 Apache Spark를 활용하여 원시 보안 데이터를 실행 가능한 인텔리전스로 변환하는 데 도움이 됩니다.

이 문서에서는 Visual Studio Code Jupyter Notebook을 사용하여 데이터 레이크 데이터를 탐색하고 상호 작용하는 방법을 보여 줍니다.

필수 구성 요소

Microsoft Sentinel 데이터 레이크에 온보딩

Microsoft Sentinel 데이터 레이크에서 Notebook을 사용하려면 먼저 데이터 레이크에 온보딩해야 합니다. Sentinel 데이터 레이크에 온보딩하지 않은 경우 데이터 레이크 Microsoft Sentinel 온보딩을 참조하세요. 최근에 데이터 레이크에 온보딩한 경우 Notebook을 사용하여 의미 있는 분석을 만들기 전에 충분한 양의 데이터가 수집될 때까지 다소 시간이 걸릴 수 있습니다.

권한

Microsoft Entra ID 역할은 데이터 레이크의 모든 작업 영역에서 광범위한 액세스를 제공합니다. 또는 Azure RBAC 역할을 사용하여 개별 작업 영역에 대한 액세스 권한을 부여할 수 있습니다. Microsoft Sentinel 작업 영역에 대한 Azure RBAC 권한이 있는 사용자는 데이터 레이크 계층의 해당 작업 영역에 대해 Notebook을 실행할 수 있습니다. 자세한 내용은 Microsoft Sentinel 역할 및 권한을 참조하세요.

필요에 따라 작업 영역 내에서 데이터 액세스를 추가로 제한하도록 Microsoft Sentinel 범위 지정 또는 행 수준 RBAC를 구성할 수 있습니다. 사용하도록 설정하면 행 수준 범위 지정은 사용자의 할당된 scope 따라 쿼리에서 반환되는 데이터를 제한합니다. 행 수준 범위 지정이 구성되지 않은 경우 기존 작업 영역 수준 권한 모델은 변경되지 않고 적용됩니다. 자세한 내용은 Microsoft Sentinel 범위 구성(행 수준 RBAC)(미리 보기)을 참조하세요.

분석 계층에서 새 사용자 지정 테이블을 만들려면 데이터 레이크 관리 ID에 Log Analytics 작업 영역에서 Log Analytics 기여자 역할이 할당되어야 합니다.

역할을 할당하려면 아래 단계를 수행합니다.

  1. Azure Portal 역할을 할당하려는 Log Analytics 작업 영역으로 이동합니다.
  2. 왼쪽 탐색 창에서 액세스 제어(IAM) 를 선택합니다.
  3. 역할 할당 추가를 선택합니다.
  4. 역할 테이블에서 Log Analytics 기여자를 선택한 다음, 다음을 선택합니다.
  5. 관리 ID를 선택한 다음, 멤버 선택을 선택합니다.
  6. 데이터 레이크 관리 ID는 라는 msg-resources-<guid>시스템 할당 관리 ID입니다. 관리 ID를 선택한 다음 선택을 선택합니다.
  7. 검토 및 할당을 선택합니다.

관리 ID에 역할을 할당하는 방법에 대한 자세한 내용은 Azure Portal 사용하여 Azure 역할 할당을 참조하세요.

Visual Studio Code 및 Microsoft Sentinel 확장 설치

아직 Visual Studio Code 없는 경우 Mac, Linux 또는 Windows용 Visual Studio Code 다운로드하여 설치합니다.

Visual Studio Code(VS Code)에 대한 Microsoft Sentinel 확장은 확장 마켓플레이스에서 설치됩니다. 확장을 설치하려면 다음 단계를 수행합니다.

  1. 왼쪽 도구 모음에서 확장 Marketplace를 선택합니다.
  2. Sentinel 검색합니다.
  3. Microsoft Sentinel 확장을 선택하고 설치를 선택합니다.
  4. 확장이 설치되면 왼쪽 도구 모음에 sentinel 아이콘 아이콘 Microsoft Sentinel 표시됩니다.

확장 시장 위치를 보여 주는 스크린샷

Visual Studio Code 대한 GitHub Copilot 확장을 설치하여 Notebook에서 코드 완성 및 제안을 사용하도록 설정합니다.

  1. 확장 마켓플레이스에서 GitHub Copilot 검색하고 설치합니다.
  2. 설치 후 GitHub 계정을 사용하여 GitHub Copilot 로그인합니다.

데이터 레이크 계층 테이블 살펴보기

Microsoft Sentinel 확장을 설치한 후 데이터 레이크 계층 테이블을 탐색하고 Jupyter Notebook을 만들어 데이터를 분석할 수 있습니다.

Microsoft Sentinel 확장에 로그인

  1. 왼쪽 도구 모음에서 sentinel 아이콘 아이콘 Microsoft Sentinel 선택합니다.

  2. 다음 텍스트와 함께 대화 상자가 나타납니다. "Microsoft Sentinel" 확장은 Microsoft를 사용하여 로그인하려고 합니다. 허용을 선택합니다.

    로그인 대화 상자를 보여 주는 스크린샷

  3. 계정 이름을 선택하여 로그인을 완료합니다.

    페이지 맨 위에 있는 계정 선택 목록을 보여 주는 스크린샷

    로그인과 연결된 게스트 계정이 여러 개 있는 경우 계정 간에 원활하게 전환할 수 있습니다. 계정 간에 전환하려면 Visual Studio Code 창의 왼쪽 아래에 있는 계정 이름을 선택합니다. 한 번에 하나의 계정만 선택할 수 있습니다.

    Visual Studio Code 계정을 전환하는 방법을 보여 주는 스크린샷

    중요

    계정 간에 전환하면 활성 pyspark 세션의 연결이 끊어집니다.

데이터 레이크 테이블 및 작업 보기

로그인하면 Sentinel 확장에는 왼쪽 창에 Lake 테이블작업 목록이 표시됩니다. 테이블은 데이터베이스 및 범주별로 그룹화됩니다. 페더레이션 테이블은 시스템 테이블 아래의 페더레이션 테이블 범주 아래에 표시됩니다. 테이블을 선택하여 열 정의를 확인합니다.

작업에 대한 자세한 내용은 작업 및 일정을 참조하세요. 페더레이션 테이블에 대한 자세한 내용은 Microsoft Sentinel 데이터 레이크에서 페더레이션 테이블 사용을 참조하세요.

테이블, 작업 및 선택한 테이블의 메타데이터 목록을 보여 주는 스크린샷

새 Notebook 만들기

  1. 새 Notebook을 만들려면 다음 방법 중 하나를 사용합니다.

  2. 검색 상자에 를 입력 > 하거나 Ctrl+Shift+P를 누른 다음 새로 만들기 Jupyter Notebook 입력합니다. 검색 창에서 새 전자 필기장을 만드는 방법을 보여 주는 스크린샷

  3. 파일 > 새 파일을 선택한 다음, 드롭다운에서 Jupyter Notebook 선택합니다.
    파일 메뉴를 형성하는 새 Notebook을 만드는 방법을 보여 주는 스크린샷

  4. 새 Notebook에서 다음 코드를 첫 번째 셀에 붙여넣습니다.

    from sentinel_lake.providers import MicrosoftSentinelProvider
    data_provider = MicrosoftSentinelProvider(spark)
    
    table_name = "EntraGroups"  
    df = data_provider.read_table(table_name)  
    df_filtered = df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100,   truncate=False)  
    
    # Transform the dataframe
    df_transformed = df.filter(df.mail.isNotNull()).select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId")
    
    write_options = {
         'mode': 'overwrite'
     }
    # Save to a new table
    data_provider.save_as_table(df_transformed, "EntraGroups_Processed_SPRK", write_options=write_options)
    

편집기에서는 데이터 레이크의 MicrosoftSentinelProvider 클래스와 테이블 이름 모두에 대한 intellisense 코드 완성을 제공합니다.

  1. 실행 삼각형을 선택하여 Notebook에서 코드를 실행합니다. 결과는 코드 셀 아래의 출력 창에 표시됩니다.
    Notebook 셀을 실행하는 방법을 보여 주는 스크린샷

  2. 런타임 풀 목록에 대한 목록에서 Microsoft Sentinel 선택합니다. 런타임 선택기를 보여 주는 스크린샷

  3. 중간을 선택하여 중간 크기의 런타임 풀에서 Notebook을 실행합니다. 다른 런타임에 대한 자세한 내용은 적절한 Microsoft Sentinel 런타임 선택을 참조하세요. 실행 풀 크기 선택기를 보여 주는 스크린샷

참고

커널을 선택하면 Spark 세션이 시작되고 Notebook에서 코드가 실행됩니다. 풀을 선택한 후 세션을 시작하는 데 3-5분이 걸릴 수 있습니다. 세션이 이미 활성화되어 있으므로 후속 실행 속도가 빨라집니다.

세션이 시작되면 Notebook의 코드가 실행되고 결과가 코드 셀 아래의 출력 창에 표시됩니다(예: Notebook 셀 실행 결과를 보여 주는 스크린샷).

Microsoft Sentinel 데이터 레이크와 상호 작용하는 방법을 보여 주는 샘플 Notebook은 Microsoft Sentinel 데이터 레이크에 대한 샘플 Notebook을 참조하세요.

상태 표시줄

Notebook 아래쪽의 상태 표시줄은 Notebook 및 Spark 세션의 현재 상태에 대한 정보를 제공합니다. 상태 표시줄에는 다음 정보가 포함됩니다.

  • 선택한 Spark 풀의 vCore 사용률 비율입니다. 사용된 vCore 수와 풀에서 사용할 수 있는 총 vCore 수를 보려면 백분율을 마우스로 가리킵니다. 백분율은 로그인한 계정에 대한 대화형 및 작업 워크로드의 현재 사용량을 나타냅니다.

  • Spark 세션의 연결 상태(예: Connecting, Connected또는 Not Connected)입니다.

Notebook 아래쪽의 상태 표시줄을 보여 주는 스크린샷

세션 시간 제한 설정

대화형 Notebook에 대한 세션 시간 제한 및 시간 제한 경고를 설정할 수 있습니다. 이러한 설정은 확장 설정에 유지되므로 세션 간에 유지됩니다.

시간 제한을 변경하려면 Notebook 아래쪽의 상태 표시줄에서 연결 상태 선택합니다. 다음 옵션 중에서 선택합니다.

  • 세션 시간 제한 기간 설정: 세션 시간이 초과되기까지의 시간(분)을 설정합니다. 기본값은 30분입니다.

  • 세션 시간 제한 기간 다시 설정: 세션 시간 제한을 기본값인 30분으로 다시 설정합니다.

  • 세션 시간 제한 경고 기간 설정: 세션 시간이 초과될 것이라는 경고가 표시되는 시간 제한(분)을 설정합니다. 기본값은 5분입니다.

  • 세션 시간 제한 경고 기간 다시 설정: 세션 시간 제한 경고를 기본값인 5분으로 다시 설정합니다.

    세션 시간 제한 설정을 보여 주는 스크린샷.

Notebook에서 GitHub Copilot 사용

GitHub Copilot 사용하여 Notebook에서 코드를 작성할 수 있습니다. GitHub Copilot 코드의 컨텍스트에 따라 코드 제안 및 자동 완성을 제공합니다. GitHub Copilot 사용하려면 Visual Studio Code GitHub Copilot 확장이 설치되어 있는지 확인합니다.

Microsoft Sentinel 데이터 레이크용 샘플 Notebook에서 코드를 복사하고 Notebooks 폴더에 저장하여 GitHub Copilot 대한 컨텍스트를 제공합니다. 그러면 GitHub Copilot Notebook의 컨텍스트에 따라 코드 완성을 제안할 수 있습니다.

다음 예제에서는 코드 검토를 생성하는 GitHub Copilot 보여줍니다.

코드 검토를 생성하는 GitHub Copilot 보여 주는 스크린샷

Microsoft Sentinel 공급자 클래스

Microsoft Sentinel 데이터 레이크에 연결하려면 클래스를 SentinelLakeProvider 사용합니다. 이 클래스는 모듈의 access_module.data_loader 일부이며 데이터 레이크와 상호 작용하는 메서드를 제공합니다. 이 클래스를 사용하려면 해당 클래스를 가져오고 세션을 사용하여 클래스의 instance 만듭니다spark.

from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)

사용 가능한 메서드에 대한 자세한 내용은 Microsoft Sentinel Provider 클래스 참조를 참조하세요.

적절한 런타임 풀 선택

Microsoft Sentinel 확장에서 Jupyter Notebook을 실행하는 데 사용할 수 있는 세 개의 런타임 풀이 있습니다. 각 풀은 다양한 워크로드 및 성능 요구 사항을 위해 설계되었습니다. 런타임 풀의 선택은 Spark 작업의 성능, 비용 및 실행 시간에 영향을 줍니다.

런타임 풀 권장 사용 사례 특성
소규모 개발, 테스트 및 경량 예비 분석.
간단한 변환이 있는 소규모 워크로드.
비용 효율성이 우선 순위가 지정되었습니다.
소규모 워크로드에 적합
간단한 변환.
더 낮은 비용, 더 긴 실행 시간.
Medium 조인, 집계 및 ML 모델 학습이 있는 ETL 작업
복잡한 변환으로 워크로드를 조정합니다.
Small보다 성능이 향상되었습니다.
병렬 처리 및 메모리 집약적 작업을 처리합니다.
대규모 딥 러닝 및 ML 워크로드.
광범위한 데이터 순서 섞기, 대규모 조인 또는 실시간 처리.
중요한 실행 시간입니다.
높은 메모리 및 컴퓨팅 성능.
최소 지연.
크고 복잡하거나 시간에 민감한 워크로드에 가장 적합합니다.

참고

처음 액세스하면 커널 옵션을 로드하는 데 약 30초가 걸릴 수 있습니다.
런타임 풀을 선택한 후 세션을 시작하는 데 3~5분이 걸릴 수 있습니다.

메시지, 로그 및 오류 보기

메시지 로그 및 오류 메시지는 Visual Studio Code 세 영역에 표시됩니다.

  1. 출력 창입니다.

    1. 출력 창의 드롭다운에서 Microsoft Sentinel 선택합니다.
    2. 자세한 로그 항목을 포함하려면 디버그 를 선택합니다.

    출력 창을 보여 주는 스크린샷

  2. Notebook의 인라인 메시지는 코드 셀 실행에 대한 피드백과 정보를 제공합니다. 이러한 메시지에는 이전 셀의 코드와 관련된 실행 상태 업데이트, 진행률 표시기 및 오류 알림이 포함됩니다.

  3. 알림 메시지라고도 하는 Visual Studio Code 오른쪽 아래 모서리에 있는 알림 팝업은 Notebook 및 Spark 세션 내 작업의 상태 대한 실시간 경고 및 업데이트를 제공합니다. 이러한 알림에는 Spark 세션에 대한 성공적인 연결 및 시간 제한 경고와 같은 메시지, 경고 및 오류 경고가 포함됩니다.

    알림 메시지 및 인라인 오류 메시지를 보여 주는 스크린샷

작업 및 예약

Visual Studio Code Microsoft Sentinel 확장을 사용하여 특정 시간 또는 간격으로 실행되도록 작업을 예약할 수 있습니다. 작업을 사용하면 데이터 처리 작업을 자동화하여 Microsoft Sentinel 데이터 레이크의 데이터를 요약, 변환 또는 분석할 수 있습니다. 작업은 데이터를 처리하고 데이터 레이크 계층 또는 분석 계층의 사용자 지정 테이블에 결과를 쓰는 데도 사용됩니다. 작업 만들기 및 관리에 대한 자세한 내용은 Jupyter Notebook 작업 만들기 및 관리를 참조하세요.

VS Code Notebook에 대한 서비스 매개 변수 및 제한

다음 섹션에서는 VS Code Notebook을 사용할 때 Microsoft Sentinel 데이터 레이크에 대한 서비스 매개 변수 및 제한을 나열합니다.

범주 매개 변수/제한
분석 계층의 사용자 지정 테이블 분석 계층의 사용자 지정 테이블은 Notebook에서 삭제할 수 없습니다. Log Analytics를 사용하여 이러한 테이블을 삭제합니다. 자세한 내용은 Azure 모니터 로그에서 테이블 및 열 추가 또는 삭제를 참조하세요.
게이트웨이 웹 소켓 시간 제한 2시간
대화형 쿼리 시간 제한 2시간
대화형 세션 비활성 시간 제한 20분
언어 Python
그래프 쿼리 시간 제한 7.5분
Notebook 작업 시간 제한 8시간
최대 동시 Notebook 작업 3, 후속 작업이 큐에 대기됩니다.
대화형 쿼리에서 최대 동시 사용자 수 대형 풀의 8-10
세션 시작 시간 Spark 컴퓨팅 세션을 시작하는 데 약 5~6분이 걸립니다. VS Code Notebook 아래쪽에서 세션의 상태 볼 수 있습니다.
지원되는 라이브러리 Azure Synapse 라이브러리 3.4 및 추상화된 함수에 대한 Microsoft Sentinel 공급자 라이브러리만 데이터 레이크 쿼리에 지원됩니다. Pip 설치 또는 사용자 지정 라이브러리는 지원되지 않습니다.
레코드를 표시하는 VS Code UX 제한 행 100,000개

문제 해결

Notebook을 사용할 때 발생하는 일반적인 오류 및 해결 방법은 Microsoft Sentinel 데이터 레이크에서 Notebook 문제 해결을 참조하세요.