리포지토리 콘텐츠의 배포를 Microsoft Sentinel 작업 영역에 사용자 지정하는 두 가지 기본 방법이 있습니다. 각 메서드는 서로 다른 파일과 구문을 사용하므로 이러한 예제를 사용하여 시작해 보세요.
| 사용자 지정 방법 | 배포 옵션에 대해 설명합니다. |
|---|---|
| GitHub 워크플로 DevOps 파이프라인 |
연결의 배포 트리거 사용자 지정 배포 경로 사용자 지정 스마트 배포 사용 |
| 구성 파일 | 콘텐츠 배포의 우선 순위가 지정된 순서 제어 배포에서 특정 콘텐츠 파일을 제외 하도록 선택 매개 변수 파일을 특정 콘텐츠 파일에 매핑하여 여러 작업 영역에서 배포 크기 조정 |
필수 구성 요소
리포지토리 배포를 사용자 지정하려면 리포지토리 연결이 있어야 합니다. 연결을 만드는 방법에 대한 자세한 내용은 리포지토리에서 사용자 지정 콘텐츠 배포를 참조하세요. 연결이 완료되면 다음 필수 구성 요소가 적용됩니다.
- Azure DevOps 리포지토리에 대한 GitHub 리포지토리 또는 프로젝트 관리자 액세스에 대한 공동 작업자 액세스
- Azure DevOps에 사용하도록 설정된 GitHub 및 파이프라인에 대해 사용하도록 설정된 작업
- 작업 영역에 배포하려는 사용자 지정 콘텐츠 파일이 지원되는 형식인지 확인합니다. 지원되는 형식은 리포지토리 콘텐츠 계획을 참조하세요.
배포 가능한 콘텐츠 형식에 대한 자세한 내용은 리포지토리 콘텐츠 계획을 참조하세요.
워크플로 또는 파이프라인 사용자 지정
기본 워크플로는 리포지토리에 대한 커밋에 따라 마지막 배포 이후 수정된 콘텐츠만 배포합니다. 다른 배포 트리거를 구성하거나 특정 루트 폴더에서만 콘텐츠를 배포하도록 사용자 지정합니다.
연결 유형에 따라 다음 탭 중 하나를 선택합니다.
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 설명서를 참조하세요.
스마트 배포를 사용하지 않도록 설정: 스마트 배포 동작은 설명된 배포 트리거와 별개입니다. 워크플로의
jobs섹션으로 이동합니다. 기본값을smartDeployment에서 로true전환합니다false. 이 변경이 커밋되면 스마트 배포 기능이 꺼지고 이 연결에 대한 모든 향후 배포는 연결된 작업 영역에 모든 리포지토리의 관련 콘텐츠 파일을 다시 배포합니다.배포 경로를 수정하려면 다음을 수행합니다.
섹션에
on대해 표시된 기본 구성에서 섹션의 첫 번째 줄에 있는paths와일드카드(**)는 전체 분기가 배포 트리거의 경로에 있음을 나타냅니다.이 기본 구성은 콘텐츠가 분기의 모든 부분으로 푸시될 때마다 배포 워크플로가 트리거됨을 의미합니다.
파일의 뒷부분에서 섹션에는
jobs다음과 같은 기본 구성directory: '${{ github.workspace }}'이 포함됩니다. 이 줄은 전체 GitHub 분기가 폴더 경로를 필터링하지 않고 콘텐츠 배포의 경로에 있음을 나타냅니다.특정 폴더 경로에서만 콘텐츠를 배포하려면 및 구성 모두에
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 설명서를 참조하세요.
중요
GitHub와 Azure DevOps 모두에서 트리거 경로 및 배포 경로 디렉터리를 일관되게 유지해야 합니다.
매개 변수 파일을 사용하여 배포 크기 조정
콘텐츠 파일에서 매개 변수를 인라인 값으로 전달하는 대신 Bicep 매개 변수 파일 또는 매개 변수 값이 포함된 JSON 파일을 사용하는 것이 좋습니다. 그런 다음, 이러한 매개 변수 파일을 연결된 Microsoft Sentinel 콘텐츠 파일에 매핑하여 여러 작업 영역에서 배포 크기를 조정합니다.
매개 변수 파일을 콘텐츠 파일에 매핑하는 방법에는 여러 가지가 있습니다. Bicep 매개 변수 파일은 Bicep 파일 템플릿만 지원하지만 JSON 매개 변수 파일은 둘 다 지원합니다. 리포지토리 배포 파이프라인은 매개 변수 파일을 다음 순서로 고려합니다.
sentinel-deployment.config매핑이 있나요 ?
자세한 내용은 연결 구성 사용자 지정을 참조하세요.작업 영역 매핑 매개 변수 파일이 있나요? 예, 콘텐츠 파일은 작업 영역 매핑 매개 변수 파일이 패턴 중 하나와 일치하는 동일한 디렉터리에 있습니다.
<WorkspaceID.bicepparam.parameters-WorkspaceID>
<>.json기본 매개 변수 파일이 있나요? 예, 콘텐츠 파일은 .bicepparam
패턴 중 하나와 일치하는 매개 변수 파일이 있는 동일한 디렉터리에 있습니다
.parameters.json
구성 파일을 통해 매개 변수 파일을 매핑하거나 파일 이름에 작업 영역 ID를 지정하여 여러 작업 영역 배포와의 충돌을 방지합니다.
중요
매핑 우선 순위에 따라 매개 변수 파일 일치가 결정되면 파이프라인은 나머지 매핑을 무시합니다.
sentinel-deployment.config 나열된 매핑된 매개 변수 파일을 수정하면 쌍을 이루는 콘텐츠 파일의 배포가 트리거됩니다. 더 높은 우선 순위 매개 변수 매핑이 없는 한 작업 영역 매핑 매개 변수 파일 또는 기본 매개 변수 파일을 추가하거나 수정하면 새로 수정된 매개 변수와 함께 쌍을 이루는 콘텐츠 파일의 배포도 트리거됩니다. 워크플로/파이프라인 정의 파일에서 스마트 배포 기능을 계속 사용하도록 설정하는 한 다른 콘텐츠 파일은 배포되지 않습니다.
연결 구성 사용자 지정
리포지토리에 대한 배포 스크립트는 2022년 7월 현재 각 리포지토리 분기에 대한 배포 구성 파일의 사용을 지원합니다. 구성 JSON 파일을 사용하면 매개 변수 파일을 관련 콘텐츠 파일에 매핑하고, 배포에서 특정 콘텐츠의 우선 순위를 지정하고, 배포에서 특정 콘텐츠를 제외할 수 있습니다.
리포지토리의 루트에 파일 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 파일의 전체 경로 이름으로 섹션을 수정합니다.
관련 콘텐츠
배포 구성 파일 및 세 가지 매개 변수 매핑 메서드를 모두 보여 주는 샘플 리포지토리를 사용할 수 있습니다. 자세한 내용은 Microsoft Sentinel CICD 리포지토리 샘플을 참조하세요.