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
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Zainstalowana i skonfigurowana dla subskrypcji najnowsza wersja interfejsu wiersza polecenia platformy Azure.
- Istniejąca usługa Azure Container Registry (ACR) w subskrypcji.
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ń.
- 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
Pamiętaj, aby zastąpić YOUR-PROJECT-NAME
wartości i YOUR-ORGANIZATION-NAME
rzeczywistymi nazwami projektu i organizacji.
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.
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 }
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.yaml
dla 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
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.
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.
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.