다음을 통해 공유


클라우드용 Microsoft Defender와 GitHub Advanced Security 통합 배포

이 가이드에서는 GitHub GHAS(Advanced Security) 및 MDC(Microsoft Defender for Cloud)를 통합하여 Microsoft의 클라우드 네이티브 애플리케이션 보안을 최대한 활용할 수 있도록 모든 설정 단계를 안내합니다.

이 가이드에 따라 다음을 수행합니다.

  • MDC(Microsoft Defender for Cloud) 적용 범위에 대한 GitHub 리포지토리 설정
  • 런타임 위험 요소 만들기
  • MDC에서 실제 사용 사례 테스트
  • 클라우드 리소스에 코드 연결
  • 런타임 컨텍스트를 활용하여 런타임 컨텍스트에 따라 GHAS 보안 경고의 우선 순위를 지정하여 GitHub에서 보안 캠페인을 시작합니다.
  • MDC에서 GitHub 문제를 만들어 수정 시작
  • 엔지니어링 및 보안 팀 간의 루프 닫기

필수 조건

측면 세부 정보
환경 요구 사항 - MdC(Microsoft Defender for Cloud)에서 만든 커넥터가 있는 GitHub 계정
- GHAS(GitHub Advanced Security) 라이선스
- 구독에서 사용하도록 설정된 Defender CSPM
- GitHub 보안 코필로트(자동 수정에 대한 선택 사항)
역할 및 권한 - 보안 관리자 권한
- Azure 구독의 보안 Reader(MDC에서 결과를 보기 위해)
- GitHub 조직 소유자
클라우드 환경 - 상용 클라우드에서만 사용할 수 있음(US Gov, 중국 정부 또는 기타 소버린 클라우드에서는 사용할 수 없음)

환경 준비

1단계: GitHub 리포지토리 설정 및 워크플로 실행

통합을 테스트하려면 사용자 고유의 리포지토리 또는 이미 모든 콘텐츠가 있는 GitHub 리포지토리 예제를 사용하여 취약한 컨테이너 이미지를 빌드합니다.

  • 클라우드용 Microsoft Defender 포털에서 사용하려는 GitHub 조직에 대한 커넥터를 정의해야 합니다. 커넥터 정의의 경우 GitHub 조직 연결의 단계를 수행합니다.

  • GitHub 커넥터에 대해 에이전트 없는 코드 검색이 구성되어 있는지 확인합니다. 그렇지 않은 경우 다음 단계를 수행합니다. 에이전트 없는 코드 검사 구성(미리 보기).

비고

통합에 사용하는 리포지토리가 프라이빗인지 확인합니다.

예제 리포지토리를 사용하려면 다음 리포지토리를 GitHub 조직에 복제합니다. 이 리포지토리는 GHAS를 사용하도록 설정되었으며 DCSPM이 활성화된 Azure 테넌트에 온보딩됩니다:build25-woodgrove/mdc-customer-playbook. 이 리포지토리는 고객이 Microsoft Defender for Cloud 및 GHAS 통합을 테스트하기 위한 것입니다.

리포지토리에서 다음 단계를 수행합니다.

  1. 설정으로 이동합니다.
  2. 왼쪽 패널에서 비밀 및 변수>작업을 선택합니다.
  3. 리포지토리 또는 조직 수준에서 다음 비밀을 추가합니다.
변수 Description
ACR_ENDPOINT Azure Container Registry의 로그인 서버
ACR_PASSWORD Azure Container Registry의 암호
ACR_USERNAME Azure Container Registry의 사용자 이름

'비밀 및 변수' 메뉴가 선택되고 '새 리포지토리 비밀' 단추가 표시된 GitHub 인터페이스의 스크린샷

비고

이름은 자유롭게 선택할 수 있으며 특정 패턴을 따를 필요가 없습니다.

다음 단계를 수행하여 Azure Portal에서 이 정보를 찾을 수 있습니다.

  1. 배포할 ACR 을 선택합니다.

  2. 설정에서 액세스 키를 선택합니다.

    로그인 서버, 사용자 이름 및 암호 필드가 표시된 컨테이너 레지스트리의 액세스 키 페이지를 보여 주는 Azure Portal의 스크린샷.

  3. 리포지토리에서 액션을 선택합니다.

  4. 빌드 및 ACR 워크플로에 푸시를 선택하고 워크플로를 실행합니다.

    워크플로를 수동으로 트리거하는 워크플로 기록 및 옵션을 보여 주는 GitHub 리포지토리 작업 섹션의 스크린샷.

  5. 이미지가 Azure Container Registry에 배포되었는지 확인합니다.

  6. 제공된 예제 리포지토리의 경우: 이미지는 mdc-ghas-integration 태그가 있는 mdc-mock-0001이라는 레지스트리에 있어야 합니다.

  7. 클러스터에서 실행 중인 컨테이너와 동일한 이미지를 배포합니다. 이 단계를 완료하는 한 가지 방법은 클러스터에 연결하고 명령을 사용하는 것입니다 kubectl run . AKS의 예는 다음과 같습니다.

    1. 클러스터 구독을 설정합니다.

      az account set --subscription $subscriptionID
      
    2. 클러스터에 대한 자격 증명을 설정합니다.

      az aks get-credentials --resource-group $resourceGroupName --name $kubernetesClusterName --overwrite-existing
      
    3. 이미지를 배포합니다.

      kubectl run $containerName --image=$registryName.azurecr.io/mdc-mock-0001:mdc-ghas-integration
      

2단계: 첫 번째 위험 요소 만들기 - 중요 비즈니스용 규칙

클라우드용 Defender에서 이 통합을 감지하는 위험 요소 중 하나는 비즈니스 중요도입니다. 조직은 다양한 리소스에 비즈니스용으로 레이블을 지정하는 규칙을 만들 수 있습니다.

  1. 클라우드용 Microsoft Defender 포털(Azure Portal)에서 환경 설정으로 이동하여 리소스 중요도를 선택합니다.

  2. 오른쪽 창에서 링크를 선택하여 Microsoft Defender를 엽니다.

    오른쪽 창에서 리소스 중요도 타일 및 Open Microsoft Defender 포털 링크를 보여 주는 클라우드용 Microsoft Defender 인터페이스의 스크린샷

  3. 새 분류 만들기를 선택합니다.

    '새 분류 만들기' 링크가 빨간색으로 강조 표시된 Microsoft Defender XDR 설정 페이지의 스크린샷

  4. 이름과 설명을 입력합니다.

  5. 쿼리 작성기에서 클라우드 리소스 를 선택합니다.

  6. 유효성 검사를 위해 클러스터에 배포한 컨테이너의 이름과 동일한 리소스 이름을 설정하는 쿼리를 작성하고 다음을 선택합니다.

    클라우드 리소스에서 리소스 이름이 'mdc-ghas-container'와 동일함 필터가 적용된 Microsoft Defender 쿼리 빌더의 스크린샷.

  7. 자산 미리 보기 페이지에서 Microsoft Defender에서 리소스를 이미 검색한 경우 컨테이너의 이름이 K8s-container 또는 K8s-Pod인 자산 형식으로 표시됩니다. 미리 보기 자산 페이지에 아직 표시되지 않더라도 다음 단계를 계속 진행합니다. Microsoft Defender는 감지된 컨테이너에 중요도 레이블을 적용합니다. 이 프로세스는 최대 24시간이 소요될 수 있습니다.

  8. 중요도 수준을 선택한 다음 분류 규칙을 검토하고 제출합니다.

3단계: 환경이 준비되어 있는지 확인

비고

다음 결과를 보려면 이전 단계가 적용된 후 최대 24시간이 걸릴 수 있습니다.

  1. GitHub 에이전트 없는 검사가 리포지토리를 선택하는지 테스트합니다.

  2. Cloud Security Explorer로 이동하여 쿼리를 수행합니다. 검색 결과를 보여 주는 GitHub 리포지토리 및 컨테이너 이미지로 설정된 필터가 있는 Cloud Security Explorer의 쿼리 작성기 스크린샷

  3. MDC(ACR)가 컨테이너 이미지를 스캔하여 컨테이너를 만드는 데 사용했는지 확인합니다. 쿼리에서 특정 배포에 대한 조건을 추가합니다. 검색 결과를 표시하는 GitHub 리포지토리 및 컨테이너 이미지에 대한 필터가 있는 쿼리를 보여 주는 Cloud Security Explorer의 스크린샷.

  4. 컨테이너가 실행 중이고 MDC가 AKS 클러스터를 검사했는지 확인합니다. 취약성 및 컨테이너 사용량이 있는 결과를 보여 주는 GitHub 리포지토리 및 컨테이너 이미지에 대한 필터가 있는 Cloud Security Explorer 쿼리 작성기의 스크린샷

  5. 위험 요소가 MDC 쪽에서 올바르게 구성되었는지 확인합니다. MDC 인벤토리 페이지에서 컨테이너 이름을 검색하면 중요한 것으로 표시되어야 합니다.

4단계: GitHub 캠페인 만들기

워크플로는 위험 요소(중요 비즈니스용) 중 하나를 사용하여 실행 중인 컨테이너를 만드는 이미지를 배포하기 때문에 개발자는 GitHub에서 위험 요소를 볼 수 있습니다.

비고

리소스를 중요로 분류한 후 MDC가 GitHub로 데이터를 보내는 데 최대 12시간이 걸릴 수 있습니다. 여기서 자세히 알아봅니다.

  1. GitHub에서 설치 테스트에 사용한 GitHub 조직으로 이동합니다.

  2. 보안 캠페인>을 선택합니다>코드 검사 필터에서 캠페인을 생성합니다.

    코드 또는 비밀 검색 필터에서 캠페인을 만드는 옵션이 있는 보안 > 캠페인 탭을 보여 주는 GitHub 인터페이스의 스크린샷.

  3. 다음 캠페인을 만듭니다. 이 캠페인은 리포지토리에서 배포된 이미지가 중요한 리소스에 연결된 중간 심각도의 공개 경고를 보여 줍니다. 테스트 리포지토리가 이 캠페인으로 감지되어야 합니다.

    열린 경고에 대한 필터, 심각도가 위험 및 중간으로 설정되고 런타임 위험이 중요한 리소스로 표시되는 GitHub 캠페인 인터페이스의 스크린샷.

  4. 저장을 선택한 다음 캠페인으로 게시합니다.

  5. 필요한 정보를 입력한 다음 캠페인을 게시합니다.

5단계: 코드를 클라우드 권장 사항으로 평가

C2C 권장 사항 SDLC 환경 및 보안 경고 보강을 사용하여 보안 문제 상태를 이해하고 Dependabot 보안 경고와 런타임 권장 사항 관련 CVE 탭에서 일치하는 CVE 간의 연결을 통해 관련 엔지니어링 팀에 해결 권장 사항을 할당합니다.

C2C 권장 사항 보기

  1. MDC 포털에서 권장 사항 탭으로 이동합니다.
  2. 만든 컨테이너의 이름을 검색하고 **업데이트 ***라는 권장 사항 중 하나를 엽니다.
  3. 예제 리포지토리를 사용한 경우 중괄호 확장 권장 사항 업데이트를 찾아보십시오.
  4. 수정 인사이트 탭으로 이동하여 클라우드 다이어그램에 대한 코드를 봅니다.
  5. 다이어그램은 실행 중인 컨테이너를 코드 리포지토리의 컨테이너 이미지에 GitHub의 원본 코드 리포지토리에 매핑합니다.

코드, 빌드, 배송 및 런타임 단계가 파선으로 연결된 개발 단계 다이어그램을 보여 주는 수정 인사이트 탭의 스크린샷

양방향 보강

  1. 연결된 CVE 탭을 선택합니다. 일부 CVE에는 관련 GitHub 경고 열에 링크가 있습니다.

    연결된 CVEs 탭에서 CVE-2025-5889가 CVSS 점수 3.1, 수정 버전 2.0.2와 함께 표시되고 관련 GitHub 경고 아래에 GitHub에서 보기 링크가 표시되는 스크린샷.

  2. GitHub에서 보기를 선택하여 관련 GHAS 보안 경고를 엽니다.

엔지니어링 동원

보안 및 엔지니어링 팀 간의 루프를 닫기 위해 엔지니어링 팀이 집중해야 하는 보안 문제에 우선 순위를 지정하는 컨테이너화된 애플리케이션에 대한 GitHub 문제를 만들 수 있습니다. 이 우선 순위 지정에는 GHAS가 탐지하지 못했지만 MDC가 감지한 결과를 전달하는 것이 포함될 수 있으며, 이는 직접 종속성의 일부가 아닌 CVE(예: 기본 이미지, OS, 또는 NGINX와 같은 타사 소프트웨어의 취약성)에 관한 것입니다.

GitHub 문제는 권장 사항 범위에서 찾은 모든 CVE를 사용하여 자동으로 생성되며, Dependabot 경고가 있고 없는 CVE는 원본 리포지토리의 다른 런타임 컨텍스트를 포함하여 일치합니다.

보안 및 취약성 태그로 표시된 '업데이트 중괄호 확장' 및 'Update openssl'을 비롯한 세 가지 항목을 보여 주는 GitHub 문제 목록의 스크린샷.

문제를 할당하면 MDC 포털에서 문제 상태가 업데이트됩니다.

CVE, 런타임 위험 요소 및 배포 정보와 같은 세부 정보를 보여 주는 보안 및 취약성 태그가 있는 'Lodash 업데이트'라는 GitHub 문제 스크린샷

에이전트 기반 수정

GitHub 쪽에서 GitHub Copilot 라이선스가 있는 경우 GitHub 코딩 에이전트의 도움을 받아 문제를 해결할 수 있습니다.

  1. 문제에 GitHub 코딩 에이전트를 할당합니다.
  2. 생성된 수정 사항을 검토합니다.
  3. 합리적이면 수정 사항을 적용합니다.
  4. MDC에서 닫힘으로 문제 상태 업데이트를 관찰합니다.