Harbor#

Harbor - это реестр, который защищает образы с помощью политик и контроля доступа на основе ролей, сканирует образы на наличие уязвимостей, а также может помечать образы как надежные.

Harbor поддерживает копирование образов между реестрами, позволяет управлять пользователями, обеспечивает контроль доступа, проводит проверку активности, обеспечивает соответствие требованиям, производительность и совместимость, позволяя последовательно и безопасно управлять образами на облачных вычислительных платформах, таких как DropApp и инструментов контейнеризации.

Особенности#

Безопасность#

Особенности Harbor в сфере безопасности:

  • Анализ безопасности и уязвимостей;

  • Подписание и проверка содержимого.

Управление#

Особенности Harbor в сфере управления:

  • Мультитенантность;

  • Расширяемый API и web-интерфейс;

  • Репликации во многих реестрах;

  • Интеграция идентификационных данных и управление доступом на основе ролей.

Настройка аутентификации Harbor через Dex#

Настройки dex#

  1. Добавьте в 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.

  1. Перезапустите Docker Engine:

    systemctl restart docker
    
  2. Остановите Harbor:

    docker-compose down -v
    
  3. Перезапустите 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 - сканер уязвимостей по умолчанию.