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
- 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 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:
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
Skonfiguruj narzędzie Dependabot , dodając
dependabot
plik konfiguracji podobny do tego przykładu:version: 2 updates: - package-ecosystem: "docker" directory: "/" assignees: - "dependabot"
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 }
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.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, aby rozpocząć korzystanie z Copa.
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.