Udostępnij za pośrednictwem


Szybki start: aktualizowanie aktualizacji zależności obrazu kontenera i zabezpieczeń przy użyciu narzędzia Dependabot i Copacetic

W tym przewodniku Szybki start przeprowadzimy Cię przez proces konfigurowania i używania narzędzia Dependabot i Copacetic w celu usprawnienia, konserwacji i aktualizowania aktualizacji zależności oprogramowania oraz ulepszania zabezpieczeń obrazu kontenera w bezpiecznym łańcuchu dostaw kontenerów.

Te narzędzia automatyzują proces, zapewniając, że obrazy kontenerów są zawsze aktualne i bezpieczne.

W tym przewodniku Szybki start zawarto informacje na temat wykonywania następujących czynności:

Aktualizowanie zależności i zabezpieczeń obrazu kontenera przy użyciu narzędzia Dependabot. Ciągłe monitorowanie, skanowanie i stosowanie poprawek obrazów kontenerów przy użyciu narzędzia Copa.

Wymagania wstępne

Aktualizowanie zależności i zabezpieczeń obrazu kontenera przy użyciu narzędzia Dependabot

Dependabot to narzędzie, które automatyzuje proces aktualizowania zależności oprogramowania. Działa to przez skanowanie repozytorium pod kątem nieaktualnych zależności i tworzenie żądań ściągnięcia w celu zaktualizowania ich do najnowszej wersji. Sprawdza aktualizacje zależności codziennie i tworzy żądania ściągnięcia w celu ich zaktualizowania. Możesz skonfigurować narzędzie Dependabot do tworzenia żądań ściągnięcia dla wszystkich typów zależności, w tym obrazów platformy Docker. Zalecamy użycie narzędzia dependabot w celu automatycznego podbijania zależności w plikach Dockerfile, plikach yaml kubernetes i plikach yaml wykresów Helm, aby uzyskać najnowsze poprawki zabezpieczeń i zmniejszyć ryzyko bezpieczeństwa.

Korzystanie z narzędzia Dependabot z usługą GitHub

  • Postępuj zgodnie z instrukcjami, aby skonfigurować narzędzie Dependabot z usługą GitHub tutaj

Korzystanie z narzędzia Dependabot z usługą Azure DevOps

  • Postępuj zgodnie z instrukcjami, aby skonfigurować aplikację Dependabot z usługą Azure DevOps:
  1. Udziel uprawnień , tworząc konto usługi o nazwie YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) z następującymi uprawnieniami:

    -Force Push -Współtworzenie żądań ściągnięcia -Create branch

Uprawnienia usługi kompilacji

  1. Skonfiguruj narzędzie Dependabot , dodając dependabot plik konfiguracji podobny do tego przykładu:

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

  2. Utwórz potok usługi Azure DevOps, dodając azure-pipeline.yaml plik z następującą zawartością:

     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. Uruchom potok Utwórz i zweryfikuj nowy potok ADO z powyższego azure-pipelines.yaml pliku.

Obecnie narzędzie Dependabot obsługuje aktualizowanie zależności obrazu kontenera w różnych scenariuszach, takich jak Dockerfile, Kubernetes YAML i Helm values.yaml. Podczas określania obrazów w plikach konfiguracji można postępować zgodnie z następującą składnią:

-Dockerfile -Kubernetes YAML -Helm values.yaml

Uwaga

Składnia umożliwia dependabotowi identyfikowanie i aktualizowanie zależności obrazu kontenera w plikach konfiguracji, dzięki czemu można być na bieżąco z najnowszymi wersjami i poprawkami zabezpieczeń.


# 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

Alternatywnie Helm values.yamldla elementu można użyć version pola , aby określić wersję obrazu:

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

Ciągłe monitorowanie, skanowanie i stosowanie poprawek obrazów kontenerów przy użyciu narzędzia Copacetic

Copacetic (copa) to oparty na firmie Microsoft projekt typu open source CNCF, który bezpośrednio poprawia luki w zabezpieczeniach pakietów systemu operacyjnego Linux w obrazach kontenerów, biorąc pod uwagę wyniki skanowania luk w zabezpieczeniach z popularnych narzędzi skanera. Copacetic umożliwia szybkie stosowanie poprawek kontenerów bez przechodzenia w górę do pełnej kompilacji. Ułatwi to szybkie ponowne wdrożenie obrazów kontenerów w środowisku produkcyjnym. Copacetic dotyczy tylko luk w zabezpieczeniach systemu operacyjnego Linux. W przypadku luk w zabezpieczeniach na poziomie aplikacji należy wykonać poprawki przed skompilowanie obrazu.

Korzystanie z kopacetic

  1. Postępuj zgodnie z przewodnikiem Szybki start, aby rozpocząć korzystanie z Copa.

  2. Przykładowy potok ADO:

    —Przykładowy potok usługi Azure DevOps do korzystania z Copa można znaleźć tutaj.

Copa można również zintegrować z przepływami pracy funkcji GitHub Actions w celu stosowania luk w zabezpieczeniach obrazów przy użyciu akcji copacetic. Ta akcja poprawia zestaw wyznaczonych obrazów dla repozytorium przy użyciu skojarzonych z nimi raportów o lukach w zabezpieczeniach.

Następne kroki