리포지토리 콘텐츠의 배포를 Microsoft Sentinel 작업 영역에 사용자 지정하는 두 가지 기본 방법이 있습니다. 각 메서드는 서로 다른 파일과 구문을 사용하므로 이러한 예제를 사용하여 시작해 보세요. 시작하기 전에 필요한 리포지토리 연결 및 배포 필수 구성 요소가 있는지 확인합니다.
| 사용자 지정 방법 | 배포 옵션에 대해 설명합니다. |
|---|---|
| GitHub 워크플로 DevOps 파이프라인 |
연결의 배포 트리거 사용자 지정 배포 경로 사용자 지정 스마트 배포 활성화 |
| 구성 파일 | 콘텐츠 배포 우선순위 제어 배포에서 특정 콘텐츠 파일을 제외 하도록 선택 매개 변수 파일을 특정 콘텐츠 파일에 매핑하여 여러 작업 영역에서 배포 크기 조정 |
필수 구성 요소
리포지토리 배포를 사용자 지정하려면 기존 리포지토리 연결이 필요합니다. 만들려면 리포지토리에서 사용자 지정 콘텐츠 배포를 참조하세요. 연결을 만든 후 다음 요구 사항을 충족하는지 확인합니다.
- GitHub 리포지토리에 대한 협력자 액세스 또는 Azure DevOps 리포지토리에 대한 프로젝트 관리자 액세스
- GitHub에 사용 설정된 작업 및 Azure DevOps에 사용 설정된 파이프라인
- 작업 영역에 배포하려는 사용자 지정 콘텐츠 파일이 지원되는 형식인지 확인합니다. 지원되는 형식은 리포지토리 콘텐츠 계획을 참조하세요.
배포 가능한 콘텐츠 형식에 대한 자세한 내용은 리포지토리 콘텐츠 계획을 참조하세요.
워크플로 또는 파이프라인 사용자 지정
기본 워크플로는 리포지토리에 대한 커밋에 따라 마지막 배포 이후 수정된 콘텐츠만 배포합니다. 워크플로우나 파이프라인을 맞춤화하여 다양한 배포 트리거를 설정하거나, 특정 루트 폴더에서만 콘텐츠를 배포할 수 있도록 하세요.
연결 유형에 따라 다음 탭 중 하나를 선택합니다.
GitHub 배포 워크플로우를 맞춤화하려면:
GitHub에서 리포지토리로 이동하여 .github/workflows 디렉터리에서 워크플로를 찾습니다.
워크플로 파일은 sentinel-deploy-xxxxx.yml 시작하는 YML 파일입니다. 해당 파일을 열고 워크플로 이름이 첫 줄에 표시되고 기본 명명 규칙이
Deploy Content to <workspace-name> [<deployment-id>]있습니다.예:
name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]페이지 오른쪽 위에 있는 연필 단추를 선택하여 편집할 파일을 연 다음 다음과 같이 배포를 수정합니다.
배포 트리거를 수정하려면, 워크플로우를 실행하게 하는 이벤트를 설명하는 코드 내 섹션을
on업데이트하세요.기본적으로 이 구성은
on: push로 설정되며, 이는 기존 콘텐츠 수정과 리포지토리에 새 콘텐츠 추가를 포함해 연결된 브랜치에 푸시가 있을 때마다 워크플로가 트리거된다는 의미입니다. 예시:on: push: branches: [ main ] paths: - `**` - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow - `.github/workflows/sentinel-deploy-<deployment-id>.yml`예를 들어 워크플로가 주기적으로 실행되도록 예약하거나 다른 워크플로 이벤트를 함께 결합하도록 이러한 설정을 변경합니다.
자세한 내용은 GitHub 문서의 워크플로우 이벤트 구성 항목을 참조하세요.
스마트 배포를 비활성화하려면:
스마트 배포 동작은 해당 섹션에서
on워크플로우 트리거와 별도로 설정됩니다. 워크플로의jobs섹션으로 이동합니다.smartDeployment기본값을true에서false로 변경합니다. 이 변경이 커밋되면 스마트 배포 기능이 꺼지고 이 연결에 대한 모든 향후 배포는 연결된 작업 영역에 모든 리포지토리의 관련 콘텐츠 파일을 다시 배포합니다.배포 경로를 수정하려면:
섹션에
on대해 표시된 기본 구성에서 섹션의 첫 번째 줄에 있는**와일드카드(paths)는 전체 분기가 배포 트리거의 경로에 있음을 나타냅니다.이 기본 구성은 해당 콘텐츠가 연결된 브랜치의 어느 부분으로든 푸시될 때마다 배포 워크플로우가 트리거된다는 것을 의미합니다.
이
jobs섹션에서 기본 구성은 포함되어 있습니다directory: '${{ github.workspace }}'. 설정은directoryGitHub 브랜치 전체가 콘텐츠 배포 경로에 포함되어 있으며, 어떤 파일 경로도 필터링하지 않음을 나타냅니다.특정 폴더 경로의 콘텐츠만 배포하려면 해당 경로를
paths구성과directory구성 모두에 추가합니다. 예를 들어 라는SentinelContent루트 폴더에서만 콘텐츠를 배포하려면 다음과 같이 코드를 업데이트합니다.paths: - `SentinelContent/**` - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow - `.github/workflows/sentinel-deploy-<deployment-id>.yml` ... directory: '${{ github.workspace }}/SentinelContent'
자세한 내용은 GitHub 문서의 경로 필터에 관한 GitHub Actions 워크플로우 구문을 참조하세요.
중요
GitHub와 Azure DevOps 모두에서 트리거 경로 및 배포 경로 디렉터리를 일관되게 유지해야 합니다.
매개 변수 파일을 사용하여 배포 크기 조정
콘텐츠 파일에서 매개 변수를 인라인 값으로 전달하는 대신 Bicep 매개 변수 파일 또는 매개 변수 값이 포함된 JSON 파일을 사용하는 것이 좋습니다. 그런 다음, 이러한 매개 변수 파일을 연결된 Microsoft Sentinel 콘텐츠 파일에 매핑하여 여러 작업 영역에서 배포 크기를 조정합니다.
매개 변수 파일을 콘텐츠 파일에 매핑하는 방법에는 여러 가지가 있습니다. Bicep 매개 변수 파일은 Bicep 파일 템플릿만 지원하지만 JSON 매개 변수 파일은 둘 다 지원합니다. 리포지토리 배포 파이프라인은 매개 변수 파일을 다음 순서로 고려합니다.
sentinel-deployment.config에 매핑이 있나요?
자세한 내용은 연결 구성을 사용자 지정을(를) 참조하세요.작업 영역 매핑 매개 변수 파일이 있나요? 예, 콘텐츠 파일은 작업 영역 매핑 매개 변수 파일이 패턴 중 하나와 일치하는 동일한 디렉터리에 있습니다.
<WorkspaceID.bicepparam.parameters-WorkspaceID>
<>.json기본 매개 변수 파일이 있나요? 예, 콘텐츠 파일은
패턴 중 하나와 일치하는 매개 변수 파일이 있는 동일한 디렉터리에 있습니다
.parameters.json
구성 파일을 통해 매개 변수 파일을 매핑하거나 파일 이름에 작업 영역 ID를 지정하여 여러 작업 영역 배포와의 충돌을 방지합니다.
중요
매핑 우선 순위에 따라 매개 변수 파일 일치가 결정되면 파이프라인은 나머지 매핑을 무시합니다.
sentinel-deployment.config 나열된 매핑된 매개 변수 파일을 수정하면 쌍을 이루는 콘텐츠 파일의 배포가 트리거됩니다. 더 높은 우선 순위 매개 변수 매핑이 없는 한 작업 영역 매핑 매개 변수 파일 또는 기본 매개 변수 파일을 추가하거나 수정하면 새로 수정된 매개 변수와 함께 쌍을 이루는 콘텐츠 파일의 배포도 트리거됩니다. 워크플로/파이프라인 정의 파일에서 스마트 배포 기능을 계속 사용하도록 설정하는 한 다른 콘텐츠 파일은 배포되지 않습니다.
연결 구성 사용자 지정
리포지토리에 대한 배포 스크립트는 2022년 7월 현재 각 리포지토리 분기에 대한 배포 구성 파일의 사용을 지원합니다. 구성 JSON 파일을 사용하면 매개 변수 파일을 관련 콘텐츠 파일에 매핑하고, 배포에서 특정 콘텐츠의 우선 순위를 지정하고, 배포에서 특정 콘텐츠를 제외할 수 있습니다.
중요
sentinel-deployment.config 파일을 만들거나 삭제하거나 수정하면 업데이트된 구성에 따라 모든 리포지토리 콘텐츠의 전체 배포가 트리거됩니다.
리포지토리의 루트에 파일 sentinel-deployment.config 만듭니다.
구조화된 콘텐츠를 세 개의 선택적 섹션
"prioritizedcontentfiles":,"excludecontentfiles":,"parameterfilemappings":에 포함하세요. 섹션이 포함되지 않거나 .config 파일을 생략하면 배포 프로세스가 계속 실행됩니다. 잘못되었거나 인식할 수 없는 섹션은 무시됩니다.
다음은 유효한 sentinel-deployment.config 파일의 전체 콘텐츠 예제입니다. 이 샘플은 Microsoft Sentinel CICD 리포지토리 샘플에서도 찾을 수 있습니다.
{
"prioritizedcontentfiles": [
"parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
"workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
"Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.bicep"
],
"excludecontentfiles": [
"Detections/Sample/PaloAlto-PortScanning.json",
"parameters"
],
"parameterfilemappings": {
"879001c8-2181-4374-be7d-72e5dc69bd2b": {
"Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.bicep": "parameters/samples/auzredeploy.bicepparam"
},
"9af71571-7181-4cef-992e-ef3f61506b4e": {
"Playbooks/Enrich-SentinelIncident-GreyNoiseCommunity-IP/azuredeploy.json": "path/to/any-parameter-file.json"
}
},
"DummySection": "This shouldn't impact deployment"
}
참고 항목
콘텐츠 경로에서 백슬래시 "\" 문자를 사용하지 마세요. 대신 정방향 슬래시 "/"를 사용하세요.
콘텐츠 파일 우선순위를 정하려면:
리포지토리의 콘텐츠 양이 증가함에 따라 배포 시간이 늘어날 수 있습니다. 이 섹션에 시간에 민감한 콘텐츠를 추가하여 트리거가 발생할 때 배포의 우선 순위를 지정합니다.
섹션에
"prioritizedcontentfiles":전체 경로 이름을 추가합니다. 현재 와일드카드 매칭은 지원되지 않습니다.콘텐츠 파일을 제외하려면 개별 .json 콘텐츠 파일의 전체 경로 이름으로 섹션을
"excludecontentfiles":수정하세요.매개변수를 매핑하려면:
배포 스크립트는 매개 변수 파일을 사용하여 배포 크기 조정에 설명된 대로 매개 변수 매핑의 세 가지 방법(구성 파일 매핑, 작업 영역 매핑 매개 변수 파일 및 기본 매개 변수 파일)을 허용합니다. sentinel-deployment.config 통해 매개 변수를 매핑하면 우선 순위가 가장 높으며 지정된 매개 변수 파일이 연결된 콘텐츠 파일에 매핑됩니다.
"parameterfilemappings":대상 연결의 작업 영역 ID 및 개별 .json 파일의 전체 경로 이름으로 섹션을 수정합니다.