리포지토리 배포 사용자 지정(퍼블릭 미리 보기)
Microsoft Sentinel 작업 영역에 대한 리포지토리 콘텐츠 배포를 사용자 지정하는 두 가지 기본 방법이 있습니다. 방법마다 다른 파일 및 구문을 사용하므로 이러한 예제를 사용하여 시작하세요.
사용자 지정 방법 | 배포 옵션에 대해 설명합니다. |
---|---|
GitHub 워크플로 DevOps 파이프라인 |
연결의 배포 트리거 사용자 지정 배포 경로 사용자 지정 스마트 배포 사용 |
구성 파일 | 콘텐츠 배포의 우선 순위 지정 순서 제어 배포에서 특정 콘텐츠 파일을 제외하도록 선택 매개 변수 파일을 특정 콘텐츠 파일에 매핑하여 여러 작업 영역에서 배포 크기 조정 |
Important
Microsoft Sentinel 리포지토리 기능은 현재 미리 보기로 제공됩니다. 베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 자세한 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
필수 조건
리포지토리 배포를 사용자 지정하려면 리포지토리 연결이 있어야 합니다. 연결을 만드는 방법에 대한 자세한 내용은 리포지토리에서 사용자 지정 콘텐츠 배포를 참조하세요. 연결이 완료되면 다음 필수 구성 요소가 적용됩니다.
- 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 설명서를 참조하세요.
스마트 배포를 사용하지 않도록 설정하려면 스마트 배포 동작이 설명된 배포 트리거와 별개입니다. 워크플로의
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 워크플로 편집에 대한 GitHub 설명서를 참조하세요.
Important
GitHub와 Azure DevOps 둘 다 트리거 경로와 배포 경로 디렉터리를 일관되게 유지해야 합니다.
매개 변수 파일을 사용하여 배포 크기 조정
콘텐츠 파일 에서 매개 변수를 인라인 값으로 전달하는 대신 Bicep 매개 변수 파일 또는 매개 변수 값이 포함된 JSON 파일을 사용하는 것이 좋습니다. 그런 다음, 이러한 매개 변수 파일을 연결된 Microsoft Sentinel 콘텐츠 파일에 매핑하여 여러 작업 영역에서 배포 크기를 더 잘 조정합니다.
매개 변수 파일을 콘텐츠 파일에 매핑하는 방법에는 여러 가지가 있습니다. Bicep 매개 변수 파일은 Bicep 파일 템플릿만 지원하지만 JSON 매개 변수 파일은 둘 다 지원합니다. 리포지토리 배포 파이프라인은 매개 변수 파일을 다음 순서로 고려합니다.
sentinel-deployment.config에 매핑이 있나요?
자세한 내용은 연결 구성 사용자 지정을 참조하세요.작업 영역 매핑 매개 변수 파일이 있나요? 예, 콘텐츠 파일은 다음 패턴 중 하나와 일치하는 작업 영역 매핑 매개 변수 파일이 있는 동일한 디렉터리에 있습니다.
<WorkspaceID.bicepparam.parameters-WorkspaceID><
>.json기본 매개 변수 파일이 있나요? 예, 콘텐츠 파일은 .bicepparam 패턴 중 하나와 일치하는 매개 변수 파일이 있는 동일한 디렉터리에 있습니다
.parameters.json
구성 파일을 통해 매개 변수 파일을 매핑하거나 파일 이름에 작업 영역 ID를 지정하여 여러 작업 영역 배포와의 충돌을 방지합니다.
Important
매핑 우선 순위에 따라 매개 변수 파일 일치가 결정되면 파이프라인은 나머지 매핑을 무시합니다.
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 리포지토리 샘플을 참조하세요.