Share via


리포지토리 배포 사용자 지정(퍼블릭 미리 보기)

Microsoft Sentinel 작업 영역에 대한 리포지토리 콘텐츠 배포를 사용자 지정하는 두 가지 기본 방법이 있습니다. 방법마다 다른 파일 및 구문을 사용하므로 이러한 예제를 사용하여 시작하세요.

  • 연결의 배포 트리거, 배포 경로 또는 스마트 배포 사용과 같은 배포 옵션을 사용자 지정하도록 GitHub 워크플로 또는 DevOps 파이프라인을 수정합니다.

  • 새로 도입된 구성 파일을 활용하여 콘텐츠 배포의 우선 순위를 제어하거나, 해당 배포에서 특정 콘텐츠 파일을 제외하거나, 매개 변수 파일을 특정 콘텐츠 파일에 매핑하도록 선택합니다.

Important

Microsoft Sentinel 리포지토리 기능은 현재 미리 보기로 제공됩니다. 베타 또는 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 추가 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.

필수 조건 및 범위

Microsoft Sentinel은 현재 GitHub 및 Azure DevOps 리포지토리에 대한 연결을 지원합니다. Microsoft Sentinel 작업 영역을 원본 제어 리포지토리에 연결하기 전에 다음 조건을 갖추고 있는지 확인합니다.

  • Microsoft Sentinel 작업 영역이 포함된 리소스 그룹의 소유자 역할 또는 연결을 만들기 위한 사용자 액세스 관리자Sentinel 기여자 역할의 조합
  • GitHub 리포지토리에 대한 협력자 액세스 또는 Azure DevOps 리포지토리에 대한 프로젝트 관리자 액세스
  • GitHub에 대해 사용하도록 설정된 작업 및 Azure DevOps에 대해 사용하도록 설정된 파이프라인
  • 작업 영역에 배포하려는 사용자 지정 콘텐츠 파일이 관련 ARM(Azure Resource Manager) 템플릿에 있는지 확인합니다.

자세한 내용은 콘텐츠 유효성 검사를 참조하세요.

워크플로 또는 파이프라인 사용자 지정

기본 워크플로는 리포지토리에 대한 커밋을 기반으로 마지막 배포 이후 수정된 콘텐츠만 배포합니다. 그러나 다른 배포 트리거를 구성하거나 특정 루트 폴더에서만 콘텐츠를 배포하는 등의 다른 사용자 지정이 필요할 수 있습니다.

연결 형식에 따라 다음 탭 중 하나를 선택합니다.

GitHub 배포 워크플로를 사용자 지정하려면 다음을 수행합니다.

  1. 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]

  2. 페이지 오른쪽 위에서 연필 단추를 선택하여 편집할 파일을 열고, 다음과 같이 배포를 수정합니다.

    • 배포 트리거를 수정하려면 코드에서 실행할 워크플로를 트리거하는 이벤트를 설명하는 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 에 있는 wild카드s(**)는 전체 분기가 배포 트리거의 경로에 있음을 나타냅니다.

      이 기본 구성은 해당 콘텐츠가 분기의 어느 부분으로든 푸시될 때마다 배포 워크플로가 트리거됨을 의미합니다.

      파일 뒷부분에 있는 jobs 섹션에는 기본 구성 directory: '${{ github.workspace }}'가 포함됩니다. 이 줄은 전체 GitHub 분기가 폴더 경로 필터링 없이 콘텐츠 배포 경로에 있음을 나타냅니다.

      특정 폴더 경로에서만 콘텐츠를 배포하려면 pathsdirectory 구성 모두에 폴더 경로를 추가합니다. 예를 들어 루트 폴더 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 둘 다 트리거 경로와 배포 경로 디렉터리를 일관되게 유지해야 합니다.

매개 변수 파일을 사용하여 배포 크기 조정

매개 변수를 콘텐츠 파일에 인라인 값으로 전달하는 대신 매개 변수 값이 포함된 JSON 파일을 사용하는 것이 좋습니다. 그런 다음, 이러한 매개 변수 JSON 파일을 연결된 Sentinel 콘텐츠 파일에 매핑하여 여러 작업 영역에서 배포 크기를 조정할 수 있습니다. 매개 변수 파일을 Sentinel 파일에 매핑하는 방법에는 여러 가지가 있으며 리포지토리 배포 파이프라인은 다음과 같은 순서로 이를 고려합니다.

A diagram showing the precedence of parameter file mappings.

  1. sentinel-deployment.config에 매핑이 있나요? 자세한 내용은 연결 구성 사용자 지정을 참조하세요.
  2. 작업 영역 매핑 매개 변수 파일이 있나요? 예. .parameters-WorkspaceID<>로 끝나는 콘텐츠 파일과 동일한 디렉터리에 있는 매개 변수 파일입니다.json
  3. 기본 매개 변수 파일이 있나요? 예, .parameters.json 끝나는 콘텐츠 파일과 동일한 디렉터리에 있는 모든 매개 변수 파일

여러 배포가 있는 시나리오에서 충돌을 방지하기 위해 구성 파일을 통해 또는 파일 이름에 작업 영역 ID를 지정하여 매개 변수 파일을 매핑하는 것이 좋습니다.

Important

위의 매핑 우선 순위에 따라 매개 변수 파일 일치가 결정되면 파이프라인은 나머지 매핑을 무시합니다.

sentinel-deployment.config에 나열된 매핑된 매개 변수 파일을 수정하면 쌍을 이루는 콘텐츠 파일의 배포가 트리거됩니다. .parameters-WorkspaceID><.json 파일 또는 .parameters.json 파일을 추가하거나 수정하면 우선 순위 매개 변수 매핑이 더 높은 경우가 아니면 새로 수정된 매개 변수와 함께 쌍을 이루는 콘텐츠 파일의 배포가 트리거됩니다. 워크플로/파이프라인 정의 파일에서 스마트 배포 기능이 계속 사용하도록 설정되어 있는 한 다른 콘텐츠 파일은 배포되지 않습니다.

연결 구성 사용자 지정

리포지토리에 대한 배포 스크립트는 2022년 7월 현재, 각 리포지토리 분기에 대한 배포 구성 파일의 사용을 지원합니다. 구성 JSON 파일을 사용하면 매개 변수 파일을 관련 콘텐츠 파일에 매핑하고, 배포에서 특정 콘텐츠의 우선 순위를 지정하고, 배포에서 특정 콘텐츠를 제외할 수 있습니다.

  1. 리포지토리의 루트에 파일 sentinel-deployment.config를 만듭니다. 이 구성 파일을 추가, 삭제 또는 수정하면 업데이트된 구성에 따라 리포지토리의 모든 콘텐츠가 완전히 배포됩니다.

    Screenshot of a repository root directory. The RepositoriesSampleContent is shown with the location of the sentinel-deployment.config file.

  2. 세 가지 선택적 섹션인 "prioritizedcontentfiles":, "excludecontentfiles":"parameterfilemappings":에 JSON 구조화 콘텐츠를 포함합니다. 섹션이 포함되어 있지 않거나 .config 파일을 생략하면 배포 프로세스가 계속 실행됩니다. 잘못되었거나 인식할 수 없는 섹션은 무시됩니다.

다음은 유효한 sentinel-deployment.config 파일의 전체 콘텐츠 예제입니다. 이 샘플은 Sentinel CICD 리포지토리 샘플에서도 찾을 수 있습니다.

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.json"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.json": "parameters/samples/parameter-file-1.json"
    },
    "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를 통한 매개 변수 매핑은 우선 순위가 가장 높으며 지정된 매개 변수 파일이 연결된 콘텐츠 파일에 매핑되도록 보장합니다. 대상 연결의 작업 영역 ID 및 개별 .json 파일의 전체 경로 이름으로 "parameterfilemappings": 섹션을 수정하기만 하면 됩니다.

다음 단계

배포 구성 파일 및 세 가지 매개 변수 매핑 메서드를 모두 보여주는 샘플 리포지토리를 사용할 수 있습니다. 자세한 내용은 Sentinel CICD 리포지토리 샘플을 참조하세요.

ARM 템플릿에 대한 자세한 내용은 다음 리소스를 고려하세요.