Ответ
Harbor — это корпоративный реестр контейнеров с открытым исходным кодом, который предлагает целый набор функций для безопасного и эффективного управления жизненным циклом артефактов (не только Docker-образов).
-
Сканирование уязвимостей (Vulnerability Scanning):
- Интеграция со сканерами (Clair, Trivy) для автоматического анализа образов на наличие известных CVE (уязвимостей) в базовых слоях и зависимостях.
- Можно настроить политику, запрещающую развертывание образов с критическими уязвимостями.
-
Подпись и проверка содержимого (Content Trust & Signing):
- Интеграция с Notary (или Cosign) для цифровой подписи образов.
- Гарантирует, что развертывается именно тот образ, который был собран и протестирован, защищая цепочку поставок от подмены (supply chain attacks).
# Пример подписания образа с помощью Cosign (вне Harbor) cosign sign --key cosign.key mycompany/nginx:latest
-
Репликация (Replication):
- Автоматическая синхронизация образов и артефактов между несколькими инстансами Harbor (например, между dev- и prod-окружениями, или между разными регионами).
- Поддерживает push/pull репликацию, фильтрацию по тегам.
-
Политики хранения и жизненного цикла (Retention & Lifecycle Policies):
- Immutable Tags: Запрещает перезапись тега (например,
latestилиv1.0), что критично для воспроизводимости сборок. - Автоматическая очистка: Удаление старых образов по правилам (например, "оставлять только 5 последних тегов для репозитория
frontend" или "удалять образы старше 90 дней").
- Immutable Tags: Запрещает перезапись тега (например,
-
Управление артефактами (Artifact Management):
- Поддержка не только OCI-образов, но и Helm-чартов, образов OPA (Open Policy Agent), что делает Harbor единым центром для всех артефактов Kubernetes.
-
Роботы-аккаунты и контроль доступа (Robot Accounts & RBAC):
- Создание служебных аккаунтов (robot accounts) с ограниченными правами для CI/CD-пайплайнов (только push в определенный проект).
- Детальное управление ролями (Role-Based Access Control) для команд разработки и эксплуатации.
-
Webhook-уведомления:
- Отправка событий (push/pull образов, сканирование) во внешние системы: Slack, Teams, или собственные CI/CD-инструменты для запуска следующих этапов пайплайна.
Пример сценария: После успешного прохождения тестов CI-пайплайн пушит образ в Harbor. Срабатывает webhook, который запускает деплой в staging-окружение. Параллельно запускается сканирование на уязвимости. Если сканирование выявляет критическую CVE, образ помечается как небезопасный, что блокирует его продвижение в production.