> ## Documentation Index
> Fetch the complete documentation index at: https://docs.casebender.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Sentinel

> CaseBender와 Microsoft Sentinel 간의 양방향 통합으로 인시던트 수집(pull 또는 push)과 처리 상태 동기화를 제공합니다.

## 개요

Microsoft Sentinel 통합(**INT-009**)은 Sentinel 인시던트를 CaseBender로 수집하고, 케이스가 종료될
때 처리 상태를 Sentinel로 다시 전달할 수 있습니다.

<CardGroup cols={2}>
  <Card title="인바운드 수집" icon="arrow-right-to-bracket">
    Sentinel 인시던트는 예약된 일정에 따라 **자동으로 가져오거나**(권장) 웹훅 /
    Logic App으로 **푸시**된 후, 정규화되어 알림으로 변환됩니다.
  </Card>

  <Card title="아웃바운드 동기화" icon="arrow-right-from-bracket">
    CaseBender에서 연결된 케이스가 종료되면 Sentinel 인시던트의 상태와 분류가 감사
    코멘트와 함께 업데이트됩니다.
  </Card>
</CardGroup>

<Tip>
  **권장: 자동 폴링을 활성화하세요.** CaseBender는 예약된 일정에 따라 Log Analytics
  작업 영역에서 직접 새 인시던트를 가져올 수 있습니다. Logic App, 데이터 커넥터,
  인바운드 엔드포인트가 필요하지 않습니다.
  [자동 폴링](#인바운드자동-폴링)을 참조하세요.
</Tip>

<Note>
  이 통합은 **Azure Security Insights REST API**를 사용하며 client-credentials
  플로우(범위 `management.azure.com`)로 **Azure AD(Entra ID) 애플리케이션**을 통해
  인증합니다.
</Note>

## 기능

| 기능                | 방향    | 설명                                                                    |
| ----------------- | ----- | --------------------------------------------------------------------- |
| **인시던트 폴링(pull)** | 인바운드  | CaseBender가 예약된 일정에 따라 Security Insights API를 조회하고 새 인시던트를 자동으로 수집합니다 |
| 인시던트 수집(push)     | 인바운드  | Sentinel 인시던트가 웹훅 / Logic App으로 푸시됩니다                                 |
| 관찰 대상 및 엔터티 추출    | 인바운드  | 엔터티가 인시던트에서 추출됩니다                                                     |
| 처리 상태 동기화         | 아웃바운드 | 케이스 종료 시 인시던트의 `status` + `classification` + 코멘트를 전송                  |
| 연결 테스트            | 양방향   | OAuth2 자격 증명 및 작업 영역 액세스를 검증                                          |

## 사전 요구 사항

<Steps>
  <Step title="Azure AD 애플리케이션 등록">
    [Microsoft Entra 관리 센터](https://entra.microsoft.com)에서 애플리케이션을 등록하고 **client
    secret**을 생성합니다. **Directory (tenant) ID**, **Application (client) ID**, secret 값을
    기록합니다.
  </Step>

  <Step title="작업 영역 역할 할당">
    애플리케이션에 Sentinel이 활성화된 Log Analytics 작업 영역에 대해 **Microsoft Sentinel Reader**
    역할(인바운드용)을 부여합니다. 아웃바운드 종료에는 **Microsoft Sentinel Responder**를 부여합니다.
  </Step>

  <Step title="작업 영역 좌표 수집">
    **Subscription ID**, **Resource Group**, **Log Analytics 작업 영역 이름**을 기록합니다.
  </Step>

  <Step title="네트워크 아웃바운드">
    CaseBender 폴러가 `login.microsoftonline.com`과 `management.azure.com`에 도달할 수 있어야 합니다.
  </Step>
</Steps>

## CaseBender에서 통합 구성

<Steps>
  <Step title="통합 카탈로그 열기">
    **Settings → Integrations → Create**로 이동하여 **SIEM** 카테고리에서 **Microsoft Sentinel**을
    선택합니다.
  </Step>

  <Step title="Azure 자격 증명 및 작업 영역 입력">
    | 필드                           | 설명                    |
    | ---------------------------- | --------------------- |
    | Azure Tenant ID              | Directory (tenant) ID |
    | Application (Client) ID      | 앱 등록의 client ID       |
    | Client Secret                | client secret 값       |
    | Subscription ID              | 작업 영역이 포함된 Azure 구독   |
    | Resource Group               | 작업 영역의 리소스 그룹         |
    | Log Analytics Workspace Name | 폴링할 Sentinel 지원 작업 영역 |
  </Step>

  <Step title="자동 폴링 활성화(권장)">
    | 옵션                            | 효과                                     |
    | ----------------------------- | -------------------------------------- |
    | `pollingEnabled`              | Sentinel 인시던트의 예약 가져오기 활성화             |
    | `pollingIntervalMinutes`      | 폴링 주기(기본값 `5`, 범위 1–1440)              |
    | `pollingInitialLookbackHours` | 첫 실행 시 이 범위 내에 수정된 인시던트를 가져옴(기본값 `24`) |
    | `pollMaxItemsPerRun`          | 실행당 수집 항목 안전 상한(기본값 `500`)             |
  </Step>

  <Step title="케이스 자동 생성 구성">
    | 옵션                   | 효과                                                                      |
    | -------------------- | ----------------------------------------------------------------------- |
    | `autoCreateCases`    | 수집된 각 인시던트를 **케이스**로 승격(인시던트 이름으로 중복 제거). 비활성화 시 인시던트는 알림 받은 편지함에 유지됩니다 |
    | `minSeverityForCase` | 이 심각도 이상일 때만 케이스를 자동 생성                                                 |
  </Step>
</Steps>

## 인바운드(자동 폴링)

<Steps>
  <Step title="예약 가져오기">
    각 주기마다 CaseBender는 `properties/lastModifiedTimeUtc`가 마지막 커서보다 큰 작업 영역 인시던트를
    오름차순으로 열거합니다. 첫 실행 시에는 `pollingInitialLookbackHours` 이내에 수정된 인시던트를
    가져옵니다.
  </Step>

  <Step title="커서 + 중복 제거">
    CaseBender는 통합별 커서를 가장 최근의 `lastModifiedTimeUtc`까지 진행합니다. 인시던트는 **인시던트
    이름으로 중복 제거**되므로 윈도우가 겹쳐도 중복이 생성되지 않습니다.
  </Step>

  <Step title="정규화">
    각 인시던트는 CaseBender 알림으로 정규화되며, 아웃바운드 종료가 나중에 찾을 수 있도록 Sentinel
    인시던트 식별자가 보존됩니다.
  </Step>
</Steps>

<Info>
  폴링은 CaseBender의 백그라운드 폴링 서비스에서 실행됩니다. `login.microsoftonline.com`과
  `management.azure.com`에 (직접 또는 프록시를 통해) 도달할 수 있는지 확인하세요.
</Info>

## 아웃바운드: Sentinel로 처리 상태 동기화

연결된 케이스가 종료되면 CaseBender는 Sentinel 인시던트의 `status`(`Closed`로)와 `classification`을
업데이트하고 감사 코멘트를 추가합니다. 아웃바운드에는 **Microsoft Sentinel Responder** 역할이
필요합니다.

## 보안 고려 사항

* **최소 권한** — 인바운드 전용이면 **Sentinel Reader**만 부여하고, 아웃바운드 종료를 활성화할 때만
  **Sentinel Responder**를 추가하세요.
* **시크릿 처리** — 조직 정책에 따라 client secret을 교체하세요.
* **네트워크** — 아웃바운드를 `login.microsoftonline.com`과 `management.azure.com`으로 제한하세요.

## 문제 해결

<AccordionGroup>
  <Accordion title="인증이 실패함">
    tenant/client ID와 secret, 그리고 애플리케이션이 작업 영역에 대해 Sentinel Reader 역할을 가지고
    있는지 확인하세요. subscription ID, resource group, 작업 영역 이름이 올바른지 확인합니다.
  </Accordion>

  <Accordion title="폴링은 활성화되어 있지만 인시던트가 표시되지 않음">
    **Enable automatic polling**이 켜져 있고 작업 영역 좌표가 올바른지 확인하세요. 폴러가
    `management.azure.com`에 도달할 수 있는지 확인합니다. 첫 실행 시에는 `pollingInitialLookbackHours`
    이내의 인시던트만 가져옵니다.

    **모든 CaseBender 서비스가 실행 중인지 확인하세요** — Docker에서는 `docker compose ps`에서
    `worker` 및 `misp-processor` 서비스가 `Up` 상태여야 합니다.
  </Accordion>

  <Accordion title="케이스 종료가 Sentinel을 업데이트하지 않음">
    애플리케이션에 Sentinel Responder 역할이 있고 케이스가 Sentinel 인시던트에 연결되어 있는지
    확인하세요. 동기화 결과는 케이스 타임라인에서 확인할 수 있습니다.
  </Accordion>
</AccordionGroup>

## 관련 문서

* [통합 개요](./introduction.mdx)
* [Microsoft Sentinel REST API](https://learn.microsoft.com/en-us/rest/api/securityinsights/)
