Sentinel 복제
Sandfly는 외부 Sentinel 데이터베이스로의 결과 데이터 복제를 지원하여 독립적인 장기 저장 및 분석을 가능하게 합니다.
정보: 업그레이드 기능 - Sentinel ReplicationSentinel Replication을 구성하고 사용하는 기능은 업그레이드된 플랜이 필요합니다. 자세한 내용은 https://www.sandflysecurity.com/get-sandfly/을 참조하세요.
결과 복제를 위한 Sentinel 구성
Azure 작업 공간 준비
Sandfly에서 Microsoft Sentinel로 이벤트를 전송하려면 Azure Monitor를 구성하는 데 필요한 네 가지 주요 단계가 있습니다.
- Azure App Registration을 통한 자격 증명 생성
- Application (client) ID
- Directory (tenant) ID
- 액세스 자격 증명 구성
- Application Secret Value, 또는
- Certificate and Private Key
- 애플리케이션에 대한 역할 할당 구성
- 데이터 수집 엔드포인트 (DCE) 생성
- Logs ingestion endpoint URL
- Sandfly 이벤트용 사용자 정의 테이블 생성
- Data Collection Rule (DCR)
- Custom Table Stream Name
- Results 테이블
- Host Assets 테이블 (선택사항)
- SSH Keys 테이블 (선택사항)
모든 단계가 완료되면 Sandfly Server와 Azure Sentinel 간의 연결을 구성하는 데 필요한 6-8개의 아티팩트가 있습니다.
- Application (client) ID
- Directory (tenant) ID
- Application Secret Value 또는 Certificate와 Private Key
- Logs Ingestion Endpoint URL
- Data Collection Rule (DCR) Immutable ID
- Results Custom Table Stream Name
- Host Assets Custom Table Stream Name (선택사항)
- SSH Keys Custom Table Stream Name (선택사항)
Azure App Registration을 통한 자격 증명 생성
Administrator권한으로 Azure Portal Home에 이동합니다.- 포털의 App registrations 섹션을 검색하고 이동합니다.
- New registration을 클릭합니다.
- 애플리케이션 이름을 지정합니다. 예: app-SandflyReplication
- Accounts in this organizational directory only를 선택합니다.
- Redirect URI는 무시합니다.
- Register를 클릭합니다.
- Overview 블레이드에서
- Application (client) ID를 저장합니다.
- Directory (tenant) ID를 저장합니다.
- Overview 블레이드에서 Add a certificate or secret을 클릭합니다.
- Client secrets를 사용하려면 New client secret을 클릭합니다.
- Description을 입력합니다.
- Expires 값을 선택합니다. (권장 기본값은 180일)
- 참고: 나중에 볼 수 없으므로 지금 Value를 저장하세요.
- Certificate를 사용하려면 인증서와 암호화되지 않은 개인 키를 생성해야 합니다
- 다음 구성으로 인증서와 개인 키를 생성합니다
- 인증서 형식: x509
- 해시 알고리즘: SHA-256
- 암호화 알고리즘: RSA 2048
- Sandfly에서 사용하기 위해 개인 키에서 패스 구문을 제거해야 합니다
- Upload certificate를 클릭합니다
- 인증서 파일을 선택합니다 (.cer, .pem, .crt 형식 가능)
- Description을 입력합니다
- Add를 클릭합니다
- 다음 구성으로 인증서와 개인 키를 생성합니다
참고: 이 섹션에서 다음 값들을 저장했는지 확인하세요:
- 애플리케이션(클라이언트) ID
- 디렉터리(테넌트) ID
- 애플리케이션 시크릿 값 또는 인증서 및 암호화되지 않은 개인 키
애플리케이션에 대한 역할 할당 구성
- Azure Portal Home으로 이동합니다
- 구독을 열고 구독 이름을 선택합니다
- 액세스 제어(IAM)를 클릭합니다
- 추가 > 역할 할당 추가를 선택합니다
- 모니터링 메트릭 게시자를 검색하고 선택합니다
- Next를 클릭합니다
- 역할 할당 추가 블레이드에서 역할이 모니터링 메트릭 게시자인지 확인합니다
- 멤버 선택을 클릭합니다
- 이름 또는 이메일 주소로 검색 필드에 애플리케이션 이름(app-SandflyReplication)을 입력합니다
- 애플리케이션 이름을 클릭합니다
- 애플리케이션이 선택된 멤버 하에 나열되어 있는지 확인합니다
- 선택을 클릭합니다
- 애플리케이션이 멤버 섹션 하에 나열되어 있는지 확인합니다
- 검토 + 할당을 클릭하고 애플리케이션이 멤버 섹션 하에 나열되어 있는지 확인합니다
- 다시 검토 + 할당을 클릭합니다
- 역할 할당 탭을 선택하고 새로고침을 클릭하여 애플리케이션이 모니터링 메트릭 게시자 하에 나열되어 있는지 확인합니다
데이터 수집 엔드포인트 생성
- Azure Portal에서 Data collection endpoints를 검색하고 이동합니다
- Create를 클릭합니다
- Endpoint Name을 입력합니다. 예: dce-SandflyReplication
- 구독을 선택합니다
- 리소스 그룹을 선택하거나 새로 만들어 주세요. 예: rg-SandflyReplication
- 지역을 선택합니다
- 검토 + 만들기를 클릭합니다
- 세부 사항을 검토하고 만들기를 클릭합니다
- 새로고침을 클릭하여 새 DCE가 생성되었는지 확인합니다
- 새로 생성된 DCE를 선택합니다
- 개요 블레이드에서
- 로그 수집 엔드포인트 URL을 저장합니다 (e.g.,
https://dce-sandflyreplication-abcd.eastus2-1.ingest.monitor.azure.com) - 엔드포인트 URL 형식:
https://<Endpoint-Name>-<Identifier>.<Region>.ingest.monitor.azure.com
- 로그 수집 엔드포인트 URL을 저장합니다 (e.g.,
참고: 이 섹션에서 다음 값들을 저장했는지 확인하세요:
- Logs Ingestion Endpoint URL
Sandfly 결과용 사용자 정의 테이블 생성
- Azure Portal에서 Log Analytics workspaces를 검색하고 이동한 다음 워크스페이스를 선택합니다
- Settings 섹션을 확장하고 Tables를 선택합니다
- Create > New custom log (DCR-based)를 클릭합니다
- Table Name을 입력합니다. 예: SandflyResults (참고:
_CL확장자를 추가하지 마세요. 자동으로 추가됩니다) - (선택사항) Description을 입력합니다
- Create a new data collection rule을 클릭합니다
- Subscription과 Resource group을 선택합니다
- 이름을 입력합니다. 예: dcr-SandflyReplication
- 완료를 클릭합니다
- 이전에 생성한 데이터 수집 엔드포인트를 선택합니다
- Next를 클릭합니다
- Schema and transformation 블레이드에서
- 샘플 파일 업로드를 선택하고 다음 디렉터리에 있는 sandfly-setup 번들에 포함된 sentinel_template.json 파일을 찾아봅니다:
sandfly-setup/integrations/sentinel/
- 샘플 파일 업로드를 선택하고 다음 디렉터리에 있는 sandfly-setup 번들에 포함된 sentinel_template.json 파일을 찾아봅니다:
- 필드와 데이터가 올바르게 업로드되었는지 확인합니다
- Next를 클릭합니다
- Create를 클릭합니다
- Filter by name 상자에
_CL을 입력하여 새 Custom Table이 Tables 목록에 나타나는지 확인합니다 (페이지 새로고침이 필요할 수 있습니다) - 테이블을 선택하고 맨 오른쪽 열의 점 세 개를 클릭하여 Manage table을 선택합니다
- 위 6단계에서 생성한 Data Collection Rule을 클릭합니다
- DCR Overview 블레이드에서
- DCR Immutable Id를 저장합니다 (예:
dcr-15f5913c29774ff18b2ab926829741bf) - JSON View를 클릭하고 streamDeclarations 커스텀 테이블 스트림 이름을 저장합니다 (예:
Custom-SandflyResults_CL)
- DCR Immutable Id를 저장합니다 (예:
참고: 이 섹션에서 다음 값들을 저장했는지 확인하세요:
- Data Collection Rule Immutable ID
- Custom Table Stream Name (Results)
Sandfly Host Assets용 사용자 정의 테이블 생성 (선택사항)
- Azure Portal에서 Log Analytics workspaces를 검색하고 이동한 다음 워크스페이스를 선택합니다
- Settings 섹션을 확장하고 Tables를 선택합니다
- Create > New custom log (DCR-based)를 클릭합니다
- Table Name을 입력합니다. 예: SandflyHostAssets (참고:
_CL확장자를 추가하지 마세요. 자동으로 추가됩니다) - (선택사항) Description을 입력합니다
- 위 섹션에서 Results용으로 생성한 Data collection rule을 선택합니다.
- Next를 클릭합니다
- Schema and transformation 블레이드에서
- Upload sample file을 선택하고 sandfly-setup 번들의 다음 디렉터리에 포함된 JSON 파일 sandfly_template_hosts.json 파일을 찾습니다:
sandfly-setup/integrations/sentinel/
- Upload sample file을 선택하고 sandfly-setup 번들의 다음 디렉터리에 포함된 JSON 파일 sandfly_template_hosts.json 파일을 찾습니다:
- 필드와 데이터가 올바르게 업로드되었는지 확인합니다
- Next를 클릭합니다
- Create를 클릭합니다
- Filter by name 상자에
_CL을 입력하여 새 Custom Table이 Tables 목록에 나타나는지 확인합니다 (페이지 새로고침이 필요할 수 있습니다) - 테이블을 선택하고 맨 오른쪽 열의 점 세 개를 클릭하여 Manage table을 선택합니다
- Data Collection Rule을 클릭합니다
- DCR Overview 블레이드에서, JSON View를 클릭합니다
- **streamDeclarations** 섹션에서 테이블을 찾을 때까지 아래로 스크롤하고 새 사용자 정의 테이블 스트림 이름을 저장합니다 (e.g.,
Custom-SandflyHostAssets_CL) (페이지를 새로 고침해야 할 수 있습니다)
- **streamDeclarations** 섹션에서 테이블을 찾을 때까지 아래로 스크롤하고 새 사용자 정의 테이블 스트림 이름을 저장합니다 (e.g.,
참고: 이 섹션에서 다음 값들을 저장했는지 확인하세요:
- Custom Table Stream Name (Host Assets)
Sandfly SSH Keys용 사용자 정의 테이블 생성 (선택사항)
- Azure Portal에서 Log Analytics workspaces를 검색하고 이동한 다음 워크스페이스를 선택합니다
- Settings 섹션을 확장하고 Tables를 선택합니다
- Create > New custom log (DCR-based)를 클릭합니다
- Table Name을 입력합니다. 예: SandflySSHKeys (참고:
_CL확장자를 추가하지 마세요. 자동으로 추가됩니다) - (선택사항) Description을 입력합니다
- 위 섹션에서 Results용으로 생성한 Data collection rule을 선택합니다.
- Next를 클릭합니다
- Schema and transformation 블레이드에서
- Upload sample file을 선택하고 sandfly-setup 번들의 다음 디렉터리에 포함된 JSON 파일 _sandfly_template_sshkey.json 파일을 찾습니다:
sandfly-setup/integrations/sentinel/
- Upload sample file을 선택하고 sandfly-setup 번들의 다음 디렉터리에 포함된 JSON 파일 _sandfly_template_sshkey.json 파일을 찾습니다:
- 필드와 데이터가 올바르게 업로드되었는지 확인합니다
- Next를 클릭합니다
- Create를 클릭합니다
- Filter by name 상자에
_CL을 입력하여 새 Custom Table이 Tables 목록에 나타나는지 확인합니다 (페이지 새로고침이 필요할 수 있습니다) - 테이블을 선택하고 맨 오른쪽 열의 점 세 개를 클릭하여 Manage table을 선택합니다
- Data Collection Rule을 클릭합니다
- DCR Overview 블레이드에서, JSON View를 클릭합니다
- **streamDeclarations** 섹션에서 테이블을 찾을 때까지 아래로 스크롤하고 새 사용자 정의 테이블 스트림 이름을 저장합니다 (e.g.,
Custom-SandflySSHKeys_CL) (페이지를 새로 고침해야 할 수 있습니다)
- **streamDeclarations** 섹션에서 테이블을 찾을 때까지 아래로 스크롤하고 새 사용자 정의 테이블 스트림 이름을 저장합니다 (e.g.,
참고: 이 섹션에서 다음 값들을 저장했는지 확인하세요:
- Custom Table Stream Name (SSH Keys)
Sentinel Replication - Sandfly 서버 설정

Sentinel Replication Settings with Client Secret Authentication
설정 > 서버 구성 메뉴를 통해 사용할 수 있는 Sentinel Replication 탭에는 편집할 수 있는 다음 설정이 포함되어 있습니다:
- Microsoft Sentinel Replication Enabled - True로 설정하여 Sentinel Replication 설정에 대한 액세스를 활성화하고 복제 서비스를 활성화합니다.
- Application (Client) ID - Sentinel 구성 단계의 값을 입력합니다.
- Directory (Tenant) ID - Sentinel 구성 단계의 값을 입력합니다.
- Logs Ingestion Endpoint URL - 다음과 같은 일반적인 형식의 외부 Sentinel 서버의 복제 URL
https://<Endpoint-Name>-<Identifier>.<Region>.ingest.monitor.azure.com참조 이미지와 유사합니다. - Data Collection Rule (DCR) Immutable ID - Sentinel 구성 단계의 값을 입력합니다.
- Custom Table Stream Name - Results 사용자 정의 테이블에 대한 Sentinel 구성 단계의 값을 입력합니다.
- SSH Enabled (선택사항) - SSH Key 복제를 활성화하려면 토글합니다.
- SSH Stream Name (선택사항) - SSH Enabled가 활성화되면 SSH Keys 사용자 정의 테이블에 대한 Sentinel 구성 단계의 값을 입력합니다.
- Host Enabled (선택사항) - Host Assets 복제를 활성화하려면 토글합니다.
- Host Stream Name (선택사항) - Host Enabled가 활성화되면 Host Assets 사용자 정의 테이블에 대한 Sentinel 구성 단계의 값을 입력합니다.
- Authentication - 인증 방법을 변경하거나 인증 토큰을 업데이트하려면 Change Authentication을 토글합니다.
- Authentication Method - 원하는 인증 방법을 선택하세요. Client Secret 또는 Certificate Credentials 중 하나를 선택합니다.
- Client Secret을 선택하면 Sentinel 구성 단계에서 저장한 Application Secret Value를 입력합니다.
- Certificate Credentials을 선택하면 암호화되지 않은 PEM 형식의 Private Key를 입력하고 PEM 형식의 Certificate를 입력합니다.

Sentinel Replication Settings with Certificate Credentials Authentication
OpenSSL을 사용한 자체 서명 인증서 생성
Microsoft Azure App Registration에 대한 자격 증명으로 Certificate를 사용하려면 Certificate와 Unencrypted Private Key를 생성해야 합니다. Certificate는 Microsoft Azure에 업로드되고 Certificate와 Unencrypted Private Key 모두 Sandfly Server Sentinel Replication 구성에 업로드됩니다.
이 예제는 OpenSSL을 사용하여 다음 구성으로 자체 서명된 인증서를 생성합니다.
- 인증서 형식: x509
- 해시 알고리즘: SHA-256
- 암호화 알고리즘: RSA 2048
- 유효 기간: 1년
자체 서명된 인증서를 생성하려면 다음 명령을 실행하세요:
openssl req -x509 -sha256 -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
- PEM 패스 구문을 입력하고 패스 구문을 확인합니다
- 국가 이름, 주 또는 도 이름, 지역 이름, 조직 이름, 조직 단위 이름, 일반 이름, 이메일 주소를 포함하여 요청된 정보를 입력합니다. 일부 필드는 공백으로 둘 수 있거나 기본값을 사용할 수 있습니다.
- 이 명령은 두 개의 파일 certificate.crt와 privateKey.key를 생성합니다
- certificate.crt 파일은 Microsoft Azure에 업로드되며 Sandfly Server Sentinel Replication 구성에서도 사용됩니다
- privateKey.key 파일은 위에서 입력한 패스 구문으로 암호화된 개인 키입니다
개인 키에서 패스 구문을 제거하려면 다음 명령을 실행하세요:
openssl rsa -in privateKey.key -out privateKeyNoPass.key
- privateKey.key 파일의 패스 구문을 입력합니다
- 이 명령은 Sandfly Server Sentinel Replication 구성에 업로드되는 암호화되지 않은 개인 키가 포함된 privateKeyNoPass.key 파일을 생성합니다
Updated 7 days ago