Harbor#
Harbor - это реестр, который защищает образы с помощью политик и контроля доступа на основе ролей, сканирует образы на наличие уязвимостей, а также может помечать образы как надежные.
Harbor поддерживает копирование образов между реестрами, позволяет управлять пользователями, обеспечивает контроль доступа, проводит проверку активности, обеспечивает соответствие требованиям, производительность и совместимость, позволяя последовательно и безопасно управлять образами на облачных вычислительных платформах, таких как DropApp и инструментов контейнеризации.
Особенности#
Безопасность#
Особенности Harbor в сфере безопасности:
Анализ безопасности и уязвимостей;
Подписание и проверка содержимого.
Управление#
Особенности Harbor в сфере управления:
Мультитенантность;
Расширяемый API и web-интерфейс;
Репликации во многих реестрах;
Интеграция идентификационных данных и управление доступом на основе ролей.
Настройка аутентификации Harbor через Dex#
Настройки dex#
Добавьте в Dex клиента для Harbor, в файле
valuesв разделеhelm chart:config: staticClients:Пример записи:
- id: harbor-client redirectURIs: - https://harbor.dapp.test/c/oidc/callback name: 'Harbor' secret: changeit
Настройка доверия рабочих nodes сертификату Harbor#
Чтобы nodes кластера доверяли сертификату Harbor, на них создан каталог /etc/containers/certs.d/harbor.dapp.test:30003, в котором сохранен сертификат Harbor.
sudo mkdir /etc/containers/certs.d/harbor.dapp.test:30003
sudo nano /etc/containers/certs.d/harbor.dapp.test:30003/ca.crt
-----BEGIN CERTIFICATE-----
M00000CCAh+gAwIBAgIRAL9/w00000000000T0AoC0QwDQYJKoZIhvcNAQELBQAw
FD0000000xMJaGFyYm9yLWNh0000000000I0MDMwNTA4NTUyM0000TI1MDMwNTA4
NTUyMFowGzEZ0000000000AudGVzdDCCASIwDQYJKo0000000000000000000vcN
AQEBBQADggEPADCCAQoCggEBAL20000000000000000000dyQnVKy5Wv4eSteeci
IqeUlLyorsV5vW000000VvH5x34uMh9e8cQw+gtsYQCSvWA6QqimboKTxTCeBart
36Wr9s8F5s00000003+/V4lTZ6lgUPoJ2iwcdL00000000000000cR/9IgTwY8gd
WI000000MAVHl0p77vF000000000FjOSNi000000000acDImL9i3Do2mn2nMhNkz
OKNT3M000000000swV7Ir6Ljv0000000I5JmB9CB+Hd8VOxr0000000054bgkvgj
FC8NX12h0pkpjggBgBnr8Wl83MnaZM/uuJqnCR81upbZdPkCAwEAAaN9MHswDgYD
VR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNV
H00000f8EAjAAMB8GA1UdIwQY00000000000000H1+9Adv6TMiNJH0xtMBsGA1Ud
EQQUMBKCEGhhcmJvci5kYXBwLnRlc3QwDQYJKoZIhvcNAQELBQADggEBABB4QiJz
PYTbpnHF3gYR732cPBZDf6RQ7fZMYPqON94j0000000000Tn6ibggxqCYwpzFtbg
cR0OFlKls7WwalHWX7nDCZsP5BYw1F8hjmIKJaAywIe20cD+yQLH9quqkl9Nq6Dr
iwH00000004DNV1CLSR000000000000+ESZa000000xjVjF0e00S3SAaB00000Je
GwYwoFpqqbnxH01XWCxNnPCTcAkLbI+kCGlhZkPQC4OJ40sv7pF7gQi7pQ/lme4s
BiIFJm0002lMDqkj/00000000N7u7BLPxEzpuLxjh00000000b7Vn7OvIY4j6S6g
zDDKxPbeAXyaNvw=
-----END CERTIFICATE-----
Имя harbor.dapp.test добавлено в файлы /etc/hosts на nodes кластера.
Пример файла /etc/hosts с master node:
[linux-tester@host-172-28-21-52 ~]$ cat /etc/hosts
0.0.0.0 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
0.0.0.0 host-172-28-21-52
0.0.0.0 host-172-28-21-20 dex.example.com chart-example.local harbor.dapp.test
0.0.0.0 harbor.dapp.test
Сертификат нужно прописать в приложения, которые будут подключаться к Harbor.
Сканирование образов на наличие уязвимостей#
Подключение Harbor к сканерам уязвимостей#
Harbor можно подключить к сканерам уязвимостей с помощью встроенной службы опроса Harbor. Эти сканеры можно настроить в пользовательском интерфейсе Harbor в любое время после установки.
Чтобы подключить Harbor к дополнительным сканерам уязвимостей, необходимо установить и настроить экземпляр дополнительного сканера в соответствии с требованиями поставщика сканера. Сканер должен предоставлять API endpoint, чтобы Harbor мог запускать процесс сканирования или получать отчеты. В Harbor можно развернуть несколько различных сканеров и несколько экземпляров сканера одного типа.
Trivy в Harbor#
Одним из сканеров уязвимостей в Harbor является Trivy.
Trivy - это комплексный и универсальный сканер безопасности, обеспечивает статический анализ уязвимостей в образах.
Trivy-adapter интегрирован в Harbor и работает только с образами, находящимися в реестре Harbor.
Сканирование можно запустить вручную для определенного образа или для всех образов в Harbor. Можно настроить политику для автоматического сканирования всех образов с определенными интервалами. Проверка на уязвимости в коаксиальных подписях не поддерживается.
Подробнее в разделе «Trivy».
Подключение к Harbor по протоколу HTTP#
Если при установке Harbor используется протокол HTTP, а не HTTPS, добавьте параметр --insecure-registry в Docker daemon. По умолчанию файл daemon находится по адресу /etc/docker/daemon.json.
Например, добавьте в свой daemon.json файл:
{
"insecure-registries" : ["myregistrydomain.com:5000", "0.0.0.0"]
}
После обновления daemon.json необходимо перезапустить как Docker Engine, так и Harbor.
Перезапустите Docker Engine:
systemctl restart dockerОстановите Harbor:
docker-compose down -vПерезапустите Harbor:
docker-compose up -d
Harbor Scanner Adapter#
Образ dapp-harbor-scanner-trivy содержит службу Harbor Scanner Adapter for Trivy.
Harbor Scanner Adapter for Trivy (Trivy-adapter) - это сервис, который преобразует API-сканирования Harbor в команды Trivy и позволяет Harbor использовать Trivy для предоставления отчетов об уязвимостях образов, хранящихся в реестре Harbor, в рамках функции сканирования уязвимостей.
Harbor Scanner Adapter for Trivy - сканер уязвимостей по умолчанию.