Udostępnij za pośrednictwem


Szybki start: aktualizowanie i zabezpieczanie zależności obrazu kontenera za pomocą narzędzia Dependabot i copacetic

W tym przewodniku Szybki start przedstawisz kroki niezbędne do skonfigurowania narzędzia Dependabot i Copacetic, copacetic, co pomoże ci zautomatyzować aktualizacje zależności oprogramowania i wzmocnić bezpieczeństwo obrazów kontenerów w bezpiecznym środowisku łańcucha dostaw. Za pomocą tych narzędzi możesz mieć pewność, ż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.
    • Dependabot automatyzuje proces aktualizowania zależności obrazów kontenerów, co zmniejsza ryzyko luk w zabezpieczeniach.
  • Ciągłe monitorowanie, skanowanie i stosowanie poprawek obrazów kontenerów przy użyciu narzędzia Copacetic.
    • Copacetic zapewnia ciągłe monitorowanie i skanowanie obrazów kontenerów, zapewniając ich bezpieczeństwo i poprawki przed znanymi lukami w zabezpieczeniach.

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 ze wskazówkami i zaleceniami dotyczącymi efektywnego zarządzania żądaniami ściągnięcia zgłaszanymi przez narzędzie Dependabot, używaniem funkcji GitHub Actions w celu zwiększenia wydajności dependabota i rozwiązywania typowych błędów dependabota.

  • Skonfiguruj aplikację Dependabot przy użyciu usługi GitHub tutaj.

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

Postępuj zgodnie z instrukcjami, aby skonfigurować narzędzie Dependabot z usługą Azure DevOps, zapewniając, że zależności obrazu kontenera pozostają aktualne dzięki najnowszym wersjom i ulepszeniom zabezpieczeń.

  1. Udziel uprawnień: Utwórz konto usługi o nazwie YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) i nadaj mu następujące uprawnienia:
  • Wymuś wypychanie
  • Przyczyń się do żądań ściągnięcia
  • Utworzyć odgałęzienie

* Znajdź uprawnienia usługi kompilacji.*

Pamiętaj, aby zastąpić YOUR-PROJECT-NAME wartości i YOUR-ORGANIZATION-NAME rzeczywistymi nazwami projektu i organizacji.

  1. Konfigurowanie aplikacji Dependabot: aby skonfigurować narzędzie Dependabot, dodaj dependabot.yml plik konfiguracji do repozytorium. Oto przykładowy wygląd pliku konfiguracji:

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

Ta konfiguracja konfiguruje narzędzie Dependabot dla projektu korzystającego z platformy Docker, określając, że katalog główny ("/") to miejsce, w którym znajdują się pliki platformy Docker i przypisywanie elementu Dependabot do obsługi aktualizacji. Konfigurację można dostosować do potrzeb projektu.

  1. Tworzenie potoku usługi Azure DevOps: aby utworzyć potok usługi Azure DevOps, dodaj azure-pipeline.yml plik do repozytorium 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 }
    

  2. Uruchom potok: utwórz i zweryfikuj nowy potok ADO z powyższego azure-pipelines.yaml pliku.

Dependabot może aktualizować zależności obrazu kontenera w różnych scenariuszach, takich jak:

  • 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ń.

Podczas określania obrazów w plikach konfiguracji użyj następującej składni:


# 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 dotyczącym aplikacji Copacetic zawiera instrukcje dotyczące stosowania poprawek obrazów kontenerów przez wykorzystanie wyników skanowania luk w zabezpieczeniach.

  2. Zapoznaj się z przykładowym potokiem ADO, aby zapoznać się z przykładowym plikiem konfiguracji potoku usługi Azure DevOps, aby użyć narzędzia Copacetic. Potok został zaprojektowany w celu zintegrowania aplikacji Copacetic z przepływem pracy ciągłej integracji/ciągłego wdrażania, co umożliwia ciągłe monitorowanie, skanowanie i stosowanie poprawek obrazów kontenerów w celu uzyskania luk w zabezpieczeniach.

  3. Copacetic można również zintegrować z przepływami pracy funkcji GitHub Actions w celu stosowania poprawek 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