다음을 통해 공유


CI/CD 파이프라인과 클라우드용 Defender CLI 통합

클라우드용 Defender CLI(명령줄 인터페이스)는 CI/CD(연속 통합 및 지속적인 배포) 파이프라인에서 사용할 수 있는 애플리케이션입니다. 정적 분석 도구를 실행하고 코드를 클라우드 서비스에 연결합니다. 모든 빌드 프로세스에서 클라우드용 Defender CLI를 사용하여 기본 제공 보안 스캐너를 사용하여 이미지에서 보안 취약성을 검사할 수 있습니다. 검사 결과를 클라우드용 Defender 포털로 보냅니다. 클라우드 보안 탐색기는 컨테이너 이미지 및 해당 취약성에 액세스할 수 있습니다.

필수 조건

  • 클라우드용 Defender 온보딩된 Azure 구독 아직 Azure 계정이 없다면 무료로 계정을 만듭니다.

  • 다음 CI/CD 파이프라인 도구 중 하나: Jenkins, BitBucket Pipelines, Google Cloud Build, Bamboo, CircleCI, Travis CI, TeamCity, Oracle DevOps Services, AWS CodeBuild

  • Azure DevOps의 경우 Azure DevOps 조직에 MSDO(Microsoft 보안 DevOps) 확장이 설치됩니다.

  • Defender CSPM을 사용하도록 설정했습니다.

  • 클라이언트 ID 및 비밀을 만드는 보안 관리자 권한입니다.

설정

다음 섹션에서는 클라이언트 ID 및 비밀을 검색하고, CI/CD 파이프라인 스크립트를 업데이트하고, CI/CD 파이프라인에 환경 변수를 추가하는 방법을 설명합니다.

API 토큰 검색

클라우드용 Defender CLI의 보안 데이터를 클라우드용 Defender 백 엔드로 전달할 수 있도록 하려면 클라우드용 Defender 보안 관리자는 먼저 인증을 위해 클라우드용 Defender API 키를 생성해야 합니다.

토큰이 생성되면 보안 관리자는 토큰과 연결할 구독 범위를 선택합니다. 이 토큰에서 클라우드용 Defender "푸시"되는 데이터는 토큰이 연결된 구독으로 범위가 지정됩니다. 이러한 API 토큰은 변경할 수 없으며 생성/삭제만 가능합니다.

여기에서 보안 관리자는 CI/CD 파이프라인에 추가할 토큰을 개발자에게 안전하게 전달해야 합니다.

  1. Azure Portal에 로그인합니다.

  2. 클라우드용 Microsoft Defender> 환경 설정>통합 관리>로 이동합니다.

    클라우드용 Defender 통합 환경 설정의 스크린샷

  3. 통합 추가를 선택한 다음 DevOps 수집을 선택합니다.

    새 DevOps 수집 옵션의 스크린샷

  4. 토큰에 대한 설명이 포함된 이름을 입력합니다. 선택한 테넌트는 토큰 정보를 저장합니다. 클라이언트 암호는 비밀 및 만료 날짜에 대한 설명을 입력할 때 생성됩니다.

    DevOps 수집 통합을 추가하는 스크린샷

  5. 구성에서 토큰을 사용하도록 설정하고 토큰을 만듭니다.

    DevOps 수집을 만들고 토큰을 만드는 스크린샷

  6. 각 토큰을 복사합니다. 확인을 선택한 후에는 편집하거나 검색할 수 없습니다.

    성공적인 DevOps 수집을 만든 스크린샷.

  7. Integrations 테이블에 새 수집이 표시됩니다.

    새 수집이 포함된 DevOps Integrations 테이블의 스크린샷

CI/CD 파이프라인 스크립트 업데이트

각 CI/CD 파이프라인 도구에는 서로 다른 구문이 있습니다. 이 코드는 Bitbucket 파이프라인의 예입니다.

image: atlassian/default-image:3
 
pipelines:
  default:
    - parallel:
      - step:
          name: 'MSDO trivy test'
          script:
            - curl -L -o ./msdo_linux.zip https://www.nuget.org/api/v2/package/Microsoft.Security.DevOps.Cli.linux-x64/
            - unzip ./msdo_linux.zip
            - chmod +x tools/guardian
            - chmod +x tools/Microsoft.Guardian.Cli
            - ls -lah .
            - tools/guardian init --force
            - tools/guardian run -t trivy --export-file ./ubuntu-test.sarif --publish-file-folder-path ./ubuntu-test.sarif            

파이프라인변수

토큰을 안전하게 받은 후 개발자는 키에 대한 환경 변수를 구성해야 합니다. 환경 변수는 개발자가 curl에서 수신하거나 셸 스크립트를 리포지토리에 수동으로 복사할 수 있는 셸 스크립트를 통해 CLI에 전달됩니다.

속성
GDN_PUSH_TOKEN_CLIENT_ID <클라이언트 ID>
GDN_PUSH_TOKEN_CLIENT_ID <클라이언트 ID>
GDN_PUSH_TOKEN_CLIENT_SECRET <클라이언트 암호>
GDN_PIPELINENAME bitbucket, jenkins, gcp, bamboo, circle, travis, teamcity, oci, aws
GDN_PUSH_TOKEN_TENANT_ID <테넌트 ID>

클라우드 보안 탐색기에서 결과 검토

  1. 파이프라인을 성공적으로 실행한 후 다시 클라우드용 Microsoft Defender 이동합니다.

  2. 클라우드용 Defender 메뉴에서 Cloud Security Explorer를 선택합니다.

  3. 리소스 종류 선택 드롭다운을 선택하고 DevOps를 선택한 다음 완료를 선택합니다.

    클라우드 보안 탐색기의 CI/CD 파이프라인 스크린샷

  4. 아이콘을 + 선택하여 새 검색 조건을 추가합니다.

    Cloud Security Explorer의 새 검색 스크린샷

  5. 조건 선택 드롭다운을 선택합니다. 그런 다음, 데이터를 선택한 다음 푸시를 선택합니다.

    Cloud Security Explorer 조건 선택 스크린샷

  6. 리소스 종류 선택 드롭다운을 선택합니다. 그런 다음 컨테이너를 선택한 다음, 컨테이너 이미지를 선택한 다음 완료를 선택합니다.

    Cloud Security Explorer에서 컨테이너 이미지를 선택하는 스크린샷

  7. 환경 설정에서 통합을 만드는 동안 선택한 범위를 선택합니다.

    클라우드 보안 탐색기 범위를 선택하는 스크린샷.

  8. 검색을 선택합니다.

    Cloud Security Explorer에서 검색하는 스크린샷

  9. 이미지 매핑에 대한 파이프라인의 결과를 참조하세요.

모니터링되는 컨테이너와의 상관 관계

  1. Cloud Security Explorer에서 CI/CD 파이프라인 -파이프라인 + 컨테이너 이미지 ->>컨테이너 레지스터(그룹)에 + 포함된 쿼리를 입력합니다.

  2. 리소스 이름을 검토하여 컨테이너 매핑을 확인합니다.