다음을 통해 공유


빠른 시작: Dependabot 및 Copacetic을 사용하여 컨테이너 이미지 종속성 업데이트 및 보안을 최신 상태로 유지

이 빠른 시작 가이드에서는 Dependabot 및 Copacetic을 구성하고 사용하여 소프트웨어 종속성 업데이트를 간소화하고, 기본 확보하고, 최신 상태를 유지하고, 컨테이너 보안 공급망의 컨테이너 이미지 보안을 향상시키는 프로세스를 안내합니다.

이러한 도구는 프로세스를 자동화하여 컨테이너 이미지가 항상 최신이고 안전한지 확인합니다.

이 빠른 시작에서 다음을 수행하는 방법을 알아봅니다.

Dependabot을 사용하여 컨테이너 이미지 종속성 및 보안을 업데이트합니다. Copa를 사용하여 컨테이너 이미지를 지속적으로 모니터링, 검사 및 패치합니다.

필수 구성 요소

Dependabot을 사용하여 컨테이너 이미지 종속성 및 보안 업데이트

Dependabot 은 소프트웨어 종속성을 최신 상태로 유지하는 프로세스를 자동화하는 도구입니다. 리포지토리에서 오래된 종속성을 검색하고 끌어오기 요청을 만들어 최신 버전으로 업데이트합니다. 매일 종속성에 대한 업데이트를 검사 끌어오기 요청을 만들어 업데이트합니다. Docker 이미지를 포함하여 모든 유형의 종속성에 대한 끌어오기 요청을 만들도록 Dependabot을 구성할 수 있습니다. Dependabot을 사용하여 Dockerfiles, Kubernetes yaml 파일 및 Helm 차트 값 yaml 파일의 종속성을 자동으로 범프하여 최신 보안 패치를 가져오고 보안 위험을 줄이는 것이 좋습니다.

GitHub에서 Dependabot 사용

Azure DevOps에서 Dependabot 사용

  • 지침에 따라 Azure DevOps를 사용하여 Dependabot을 구성합니다.
  1. 다음 사용 권한이 있는 이름으로 YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) 서비스 계정을 만들어 사용 권한을 부여합니다.

    -강제 푸시 -끌어오기 요청에 기여 - 분기 만들기

서비스 권한 빌드

  1. 다음 예제와 dependabot 유사한 구성 파일을 추가하여 Dependabot을 구성합니다.

      version: 2
      updates:
        - package-ecosystem: "docker"
          directory: "/"
          assignees:
            - "dependabot"
    

  2. 다음 콘텐츠가 포함된 파일을 추가하여 azure-pipeline.yaml Azure DevOps 파이프라인을 만듭니다.

     schedules:
       - cron: '0 14 * * *'
         displayName: 'Every day at 7am PST'
         branches:
           include: [main]
         always: true
    
     trigger: none
    
     jobs:
       - job:
         steps:
         - script: |
             git clone https://github.com/dependabot/dependabot-core.git
             cd dependabot-core
    
             DOCKER_BUILDKIT=1 docker build \
               --build-arg "USER_UID=$(id -u)" \
               --build-arg "USER_GID=$(id -g)" \
               -t "dependabot/dependabot-core" .
             cd ..
           displayName: build dependabot-core Docker image
    
         - script: |
             git clone https://github.com/dependabot/dependabot-script.git
             cd dependabot-script
    
             docker run -v "$(pwd):/home/dependabot/dependabot-script" -w /home/dependabot/dependabot-script dependabot/dependabot-core bundle install -j 3 --path vendor
           displayName: install dependencies
    
         - script: |
             #!/bin/bash
             SYSTEM_COLLECTIONURI_TRIM=`echo "${SYSTEM_COLLECTIONURI:22}"`
             PROJECT_PATH="$SYSTEM_COLLECTIONURI_TRIM$SYSTEM_TEAMPROJECT/_git/$BUILD_REPOSITORY_NAME"
             echo "path: $PROJECT_PATH"
    
             docker run  -v "$(pwd)/dependabot-script:/home/dependabot/dependabot-script" \
                         -w '/home/dependabot/dependabot-script' \
                         -e AZURE_ACCESS_TOKEN=$(System.AccessToken) \
                         -e PACKAGE_MANAGER=docker \
                         -e PROJECT_PATH=$PROJECT_PATH \
                         -e DIRECTORY_PATH=/ \
                         -e OPTIONS="$OPTIONS" \
                         dependabot/dependabot-core bundle exec ruby ./generic-update-script.rb
           displayName: "run dependabot"
           env:
             OPTIONS: |
               { "kubernetes_updates": true }
    

  3. 파이프라인 만들기를 실행하고 위의 azure-pipelines.yaml 파일에서 새 ADO 파이프라인을 확인합니다.

현재 Dependabot은 Dockerfile, Kubernetes YAML 및 Helm values.yaml을 비롯한 다양한 시나리오에서 컨테이너 이미지 종속성 업데이트를 지원합니다. 구성 파일에서 이미지를 지정할 때 다음 구문을 따를 수 있습니다.

-Dockerfile -Kubernetes YAML -Helm values.yaml

참고 항목

이 구문을 사용하면 Dependabot이 구성 파일 내에서 컨테이너 이미지 종속성을 식별하고 업데이트하여 최신 버전 및 보안 패치를 최신 상태로 유지할 수 있습니다.


# Dockerfile
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

# Helm values.yaml
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

Helm values.yaml또는 필드를 사용하여 version 이미지 버전을 지정할 수 있습니다.

foo:
  image:
    repository: sql/sql
    version: 1.2.3

Copacetic을 사용하여 컨테이너 이미지를 지속적으로 모니터링, 검사 및 패치

코파(Copacetic )는 인기 있는 스캐너 도구의 취약성 검사 결과를 감안할 때 컨테이너 이미지의 Linux OS 패키지 취약성을 직접 패치하는 Microsoft 지원 CNCF 오픈 소스 프로젝트입니다. Copacetic을 사용하면 전체 다시 빌드를 위해 업스트림 않고도 컨테이너를 신속하게 패치할 수 있습니다. 이렇게 하면 컨테이너 이미지가 프로덕션 환경에 빠르게 다시 배포되는 데 도움이 됩니다. Copacetic은 Linux OS 취약성에만 해당합니다. 앱 수준 취약성의 경우 이미지를 빌드하기 전에 패치를 수행해야 합니다.

Copacetic 사용

  1. 빠른 시작 가이드따라 코파 사용을 시작합니다.

  2. 샘플 ADO 파이프라인:

    -여기에서 Copa 를 사용하기 위한 샘플 Azure DevOps 파이프라인을 찾을 수 있습니다.

코파를 Github Actions 워크플로에 통합하여 Copacetic Action을 사용하여 이미지 취약성을 패치할 수도 있습니다. 이 작업은 연결된 취약성 보고서를 사용하여 리포지토리에 대해 지정된 이미지 집합을 패치합니다.

다음 단계