Harbor что за программа

В основе концепции Docker лежит такое понятие как образ. В терминологии Docker образ — это исполняемый файл (шаблон), в котором содержится исходный код приложения, его библиотеки и все самое необходимое для запуска контейнера. Готовые образы хранятся в реестрах. Один из самых известных и в тоже время общедоступных реестров — это Docker Hub, официальный реестр от разработчиков Docker.

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

Harbor — это бесплатный реестр для хранения Docker образов c открытым исходным кодом, который предоставляет доступ к образам с помощью политик, а также умеет сканировать образы на наличие уязвимостей. Проект был запущен в 2016 году силами команды инженеров из компании VMware. В 2018 году Harbor перешел под контроль организации CNCF и с тех пор активно развивается — новые версии стабильно выходят по несколько раз в месяц.

HARBOR ТЕСТНЕТ ПОДРОБНАЯ ИНСТРУКЦИЯ | БЕЗ ВЛОЖЕНИЙ

Установка Harbor

Установить Harbor можно двумя способами:

При помощи онлайн-установщика — в этом случае все необходимые образы будут скачаны с Docker Hub. Данный способ подходит, только если есть доступ в интернет.

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

Перед установкой необходимо проверить, чтобы на хосте присутствовало следующее ПО с необходимыми версиями:

Docker версии 17.06.0 и выше;

Docker Compose версии 1.18.0 и выше;

OpenSSL актуальной версии.

Также заранее нужно сгенерировать HTTPS сертификаты, которые необходимы для использования в репозиториях Harbor. Можно использовать как сертификаты, которые подписаны доверенным центром сертификации, так и использовать самоподписные сертификаты. Инструкция по созданию сертификатов описана в этом разделе.

Установка Harbor будет производиться на ОС Ubuntu 22.04.1 в редакции LTS и при помощи онлайн-установщика с последней актуальной версией 2.6.2. Для начала необходимо скачать архив с установщиком.

wget https://github.com/goharbor/harbor/releases/download/v2.6.2/harbor-online-installer-v2.6.2.tgz

Далее разархивировать скачанный архив:

tar -xzvf harbor-online-installer-v2.6.2.tgz

Перейти в созданную директорию:

cd harbor

В директории будет присутствовать конфигурационный файл с именем harbor.yml.tmpl. Прежде чем приступить к его редактированию, необходимо переименовать его в harbor.yml:

mv harbor.yml.tmpl harbor.yml

Далее необходимо его открыть и внести следующие правки:

nano harbor.yml.tmpl

В параметре hostname задаем IP-адрес или имя хоста, на котором будет находиться веб-интерфейс Harbor.

В параметре certificate прописываем полный путь до файла с сертификатом с расширением .crt

В параметре private_key прописываем полный путь до файла с закрытым ключом с расширением .key

Виза в польшу. Программа Poland Business Harbour

По желанию можно изменить такие параметры, как порты веб-интерфейса (директивы http и https с параметром port), пароль от базы данных (директива database, параметр password) и т. д. Каждый параметр в конфигурационном файле подробно описан. После того как необходимые изменения внесены, следует сохраниться и закрыть файл.

Далее в статье будет описан функционал сканирования образов при помощи сканера безопасности Trivy. Trivy уже включен в состав Harbor в виде отдельного образа и для его интеграции в Harbr необходимо включить опцию —with-trivy в команду установки (см. ниже).

После этого запускаем установочный скрипт:

sudo ./install.sh —with-trivy

Установка в среднем занимает не более 5 минут. После того как все образы будут скачаны и запущены, в терминале отобразится фраза:

Harbor has been installed and started successfully.

Также можно проверить статус запущенных контейнеров:

docker ps

Обзор функций Harbor

Чтобы попасть в веб-интерфейс Harbor, необходимо в браузере ввести имя хоста или IP-адрес сервера, который был задан в конфигурационном файле harbor.yml. Логин по умолчанию — admin, пароль — Harbor12345.

Для начала создадим нового пользователя, который будет использоваться для работы с реестром. Для этого в меню слева переходим в раздел Users, далее нажимаем на кнопку NEW USER:

В качестве параметров необходимо задать следующие:

Username — имя пользователя;

Email — адрес электронной почты;

First and last name — Имя и фамилия пользователя;

Password — придумать пароль;

Confirm Password — повторить ввод пароля.

Далее необходимо создать новый проект. Harbor использует термин «Проект» для разграничения прав доступа к репозиториям. Проекты позволяют легко управлять пользователями и их ролями. Близкий термин для проектов — это группы пользователей, подобно группам в операционных системах. Для добавления нового проекта в левом меню выберите раздел Projects и в открывшемся окне нажмите на кнопку NEW PROJECT:

В качестве параметров необходимо задать:

Project Name: имя проекта;

Access Level: если поставить галочку напротив Public, то к репозиторию смогут подключаться все пользователи, и не надо предварительно авторизоваться в нем (использовать команду docker login).

Читайте также:
Dolby service что это за программа

После того как проект был создан, необходимо перейти в него, добавить ранее созданного пользователя и назначить ему необходимые права. Для этого переходим в раздел Members и нажимаем на кнопку USER:

В открывшемся окне вводим имя нужного пользователя, который уже был создан ранее на этапе создания пользователя. В данном случае это пользователь с именем user1:

В параметре Role необходимо выбрать роль, которая будет присвоена пользователю. Harbor использует 5 типов ролей:

Где роль Project Admin обладает максимальными правами, в то время как роль Limited Guest обладает самыми минимальными возможностями в системе. С полным списком всевозможных прав в Harbor можно ознакомиться в соответствующем разделе документации.

Посмотреть список всех пользователей с ролями репозитория можно в разделе Summary:

Если перейти в раздел Repositories, то справа можно найти кнопку PUSH COMMAND:

Если нажать на нее, то отобразится шпаргалка по команде push, т. е. описаны действия по загрузке образа в репозиторий:

Помимо образов Docker, Harbor также поддерживает загрузку образов Helm и CNAB. Попробуем загрузить какой-нибудь образ Docker в ранее созданный репозиторий с именем my_project.

Для начала требуется установить корневой самоподписной сертификат, который был сгенерирован ранее. Если этого не сделать, то при попытке выполнения команды docker login возникнет ошибка x509: certificate signed by unknown authority,которая означает, что сертификат подписан неизвестным УЦ. Если сертификат выпущен доверенным УЦ, то устанавливать корневой сертификат не нужно. Для установки корневого самоподписного сертификата необходимо выполнить следующие шаги:

1) Установить пакет ca-certificates если он не установлен в системе:

sudo apt -y install ca-certificates

2) Скопировать корневой сертификат с расширением .crt в директорию /usr/local/share/ca-certificates:

sudo cp harbor.crt /usr/local/share/ca-certificates

3) Произвести установку сертификата:

sudo update-ca-certificates

Далее необходимо авторизоваться в реестре выполнив команду:

docker login harbor-test.com

Где harbor-test.com адрес, на котором располагается Harbor. Пользователь уже должен заранее присутствовать в репозитории. В качестве примера будет использоваться образ alpine. Перед отправкой образа в репозиторий ему необходимо присвоить тег:

docker tag alpine:latest harbor-test.com/my_project/alpine:alpine_new

После того как тег присвоен, можно выполнять push, т.е. отправлять образ в репозиторий:

docker push harbor-test.com/my_project/alpine_new

Перейдем в веб-интерфейс репозитория и убедимся, что образ успешно загрузился:

Как видно на скриншотах выше, был создан репозиторий с именем alpine, в котором присутствует артефакт с именем alpine_new. Также можно посмотреть подробную информацию о загруженном образе:

Сканирование образов на наличие уязвимостей при помощи сканера Trivy

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

Trivy представляет собой сканер безопасности, который умеет искать уязвимости не только в образах Docker, но также и в файловых системах, git репозиториях, в кластерах Kubernetes. Для поиска уязвимостей Trivy использует собственную БД под названием trivy-db. Проект разрабатывается и поддерживается компанией Aqua Security. Trivy проект с открытым исходным кодом.

В веб-интерфейсе Harbor в меню слева присутствует отдельный раздел под названием Interrogation Services, в котором собраны все сторонние подключенные сервисы. В данном разделе можно найти всю подробную информацию о подключенном сервисе:

Для того чтобы просканировать образ, необходимо перейти в раздел Projects, далее выбрать нужный проект и образ, который должен быть просканирован. Чтобы запустить сканирование, поставьте галочку слева — напротив нужного образа и нажмите на кнопку SCAN:

Начнется процесс сканирования. Если в образе не найдены уязвимости, то отобразится зеленая строка с надписью No vulnerability:

Если уязвимости были найдены, то в пункте Vulnerabilities отобразится их общее количество. Если навести курсор мыши на строку с количеством найденных уязвимостей, то отобразится мини-график, на котором будут подсчитаны уязвимости по типу критичности. В Trivy используются 4 типа критичности уязвимостей в образах — Critical, High, Medium, Low:

Если нажать на хэш-функцию образа, то будет отображен подробный отчет о каждой найденной уязвимости:

При переходе по ссылке из имени уязвимости, откроется сайт aqua vulnerability database, где можно найти еще более подробное описание уязвимости, а также способы её устранения:

Harbor представляет собой более продвинутый и более функциональный реестр — по сравнению с такими реестрами, как Docker Hub и Quay. Помимо организации доступа к репозиториям, Harbor поставляется со сканером безопасности, что немаловажно. Также стоит отметить, что Harbor полностью бесплатный и все функции уже доступны сразу.

НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

  • harbor
  • сканирование на угрозы
  • сканирование образов
  • обзор функционала
  • Trivy
  • open source

Источник: habr.com

Как использовать Harbor для сканирования образов Docker на наличие уязвимостей

Мануал

Автор cryptoparty На чтение 4 мин Опубликовано 06.09.2019
Контейнеры стали ведущими решениями для очень многих предприятий.
По уважительной причине конечно.
Они обеспечивают гибкость и масштабируемость, которые стандартные серверы и службы не могут достичь.

Однако в последнее время стало ясно, что контейнеры действительно представляют определенную проблему.

Читайте также:
Catalyst control center launcher что это за программа в автозагрузке Windows 10

Упомянутая проблема заключается в безопасности образов, используемых для развертывания контейнеров.

Если вы не создаете свои собственные образы, вы не можете знать со 100% уверенностью, что то, что вы используете, не имеет уязвимостей.

На самом деле, есть способ сканировать образа на наличие уязвимостей.

Harbor – это локальный реестр Docker, который, будучи собранным с поддержкой Clair, позволяет сканировать спушенные образы на наличие известных уязвимостей.

Это должно считаться обязательным в компаниях, которые полагаются на контейнеры.
Но как использовать Harbour для сканирования этих образов?
Давайте посмотрим.

Что вам нужно

Самое главное, вам понадобится это Harbor (с поддержкой Clair).

Вам также понадобятся образа для отправки на сервер Harbor и учетную запись пользователя на сервере Harbour.

Сертификаты

Если вы планируете передавать образы с компьютеров в вашей сети (которые не являются вашим сервером Harbour), вам необходимо скопировать сертификаты с сервера Harbour на клиенты.

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

Я собираюсь предположить, что это так.

И так … вот как скопировать эти сертификаты с сервера на клиент:

Теперь ваш клиент должен иметь возможность войти в репозиторий Harbor и отправлять образы.

Пометка образов ( теги )

Прежде чем отправить образ с клиента на сервер, сначала необходимо пометить его.

Допустим, у вас есть официальный образ Ubuntu, и вы хотите пометить его конкретным именем разработчика.

Чтобы пометить его так, чтобы его можно было перенести в реестр Harbor, команда tag будет выглядеть так:

docker tag ubuntu SERVER_IP/PROJECT_NAME/ubuntu:DEVNAME

  • SERVER_IP – это IP-адрес сервера Harbour.
  • PROJECT_NAME – это имя проекта на сервере Harbour.
  • DEVNAME: имя разработчика, которого вы хотите пометить.

Таким образом, команда может выглядеть так:

docker tag ubuntu 192.168.1.75/test/ubuntu:jack

Пушинг образа

Сначала вы должны войти в реестр на сервере Harbor.

Для этого выполните команду:

docker login SERVER_IP

Где SERVER_IP – это IP-адрес сервера Harbor.

Вам будет предложено ввести имя пользователя и пароль пользователя на сервере Harbour.

После входа в систему вы можете спушить образ с помощью команды:

docker push 192.168.1.75/test/ubuntu:jack
После завершения вы готовы отсканировать образ на наличие уязвимостей.

Сканирование образа

Войдите в свой реестр Harbor и перейдите к проекту, в котором размещен недавно подтянутый образ

Вы должны увидеть образ в списке:

Щелкните на новый образ и в появившемся окне установите флажок, связанный с тегом образа.

После выбора нажмите кнопку SCAN, чтобы начать сканирование.

Когда сканирование завершится, вы увидите полосу, представляющую результаты сканирования.
Наведите курсор на эту полосу, чтобы просмотреть отчет:

Если вы нажмете на имя тега, вы увидите полный отчет, в котором представлены полные результаты, включая CVE для каждой уязвимости:

Прокрутите весь отчет, чтобы просмотреть все уязвимости.

Если вы обнаружите, что образ содержит слишком много общих уязвимостей или достаточно средних или высоких уязвимостей, я предлагаю не использовать его.

Но важно просканировать эти уязвимости!

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!

Источник: itsecforu.ru

Реестр контейнеров Harbor – установка

В этой публикации я расскажу про реестр контейнеров реестр контейнеров Harbor. Точнее про его установку. К сожалению, особо подробно расписывать установку времени нет, но основные моменты я отмечу.

В качестве операционной системы я буду использовать Ubuntu Server 22.04.

Почему Harbor?

Для внутренних нужно нужно было какое-то решение для хранения готовых образов Docker. Изначально планировалось использование репозитория контейнера Gitea, но столкнулись с тем, что почему-то при скачивании образов некоторые слои не удавалось загрузить. Примерно так:

Почему? Возможно, что какой-то баг в репозиториях контейнеров Gitea.

Альтернатива была в виде нативного репозитория Docker Registry. Но, мы решили попробовать решение Harbor, т.к. оно включает в себя веб панель администрирования, возможность создавать проекты, пользователей и много других возможностей.

Предварительные требования

Полный перечень предварительных требований приведен на странице официального руководства.

Аппаратные требования

Аппаратные требования приведены в таблице ниже.

Компонент Минимальные требования Рекомендуемые требования
Кол-во ЦП, шт. 2 4
Объем оперативной памяти, ГБ 4 8
Объем диска, ГБ 40 160

Программные требования

Программные требования приведены в таблице ниже.

ПО Версия
Docker engine Версия 17.06.0 или новее
Docker Compose Версия 1.18.0 или новее

Дополнительно необходима утилита openssl, если вы планируете генерировать самоподписанный сертификат. Я буду устанавливать сертификат от Let’s Encrypt. Соответственно, мне openssl не будет нужен.

Реестр контейнеров Harbor – установка

Я разделил процесс установки Harbor на два этапа – подготовительный и непосредственно саму установку.

Подготовка операциооной системы и установка предварительного ПО

Сначала установим все необходимые обновления на сервер:

sudo apt update sudo apt -y upgrade

Установим docker и docker-compose

sudo apt install -y docker.io docker-compose

Запустим сервис docker и разрешим его автозапуск:

sudo systemctl start docker sudo systemctl enable docker

Теперь я скопирую открытый и закрытый ключ SSL сертификата на сервер, чтобы настроить доступ по HTTPS с сертификатом от доверенного центра сертификации:

scp itproblog.crt itproblog.key 10.10.10.22:~

Для размещения Harbor на файловой системе я создам соответствующую директорию в opt:

Читайте также:
Что за программа компьютерная

sudo mkdir /opt/harbor

Также создам отдельную директорию для ключей SSL сертификата и скопирую их туда:

sudo mkdir /opt/harbor/certs sudo cp $HOME/itproblog* /opt/harbor/certs/

И еще создам директорию для хранения данных приложения:

sudo mkdir /opt/harbor/data

Установка Harbor

Теперь можем приступить к установке Harbor. Сначала загрузим самую последнюю версию дистрибутива с репозитория.

Есть два типа установщика – оффлайн установщик и онлайн установщик. Я буду использовать онлайн установщик. На момент подготовки материала статьи самая последняя версия была v2.6.3. Я буду устанавливать именно её.

cd /opt/harbor/ sudo wget https://github.com/goharbor/harbor/releases/download/v2.6.3/harbor-online-installer-v2.6.3.tgz
sudo tar xzvf harbor-online-installer-v2.6.3.tgz -C /opt

Создадим конфигурационный файл:

sudo cp harbor.yml.tmpl harbor.yml

В этом конфигурационном файле нам нужно будет сконфигурировать ряд параметров, которые представлены в таблице ниже.

Параметр Назначение Значание
hostname DNS-имя по которому вы будите обращаться к сервису. Именно на это имя вы долдны выпустить сертификат (либо самоподписанный, либо от стороннего ЦС). cr.itproblog.ru
harbor_admin_password Пароль пользователя admin для доступа к веб интерфейсу администрирования Qwerty123
password Пароль для доступа в базе данных postgres Qwerty123
data_volume Директория для хранения данных приложения /opt/harbor/data/
certificate Открытый ключ SSL сертификата /opt/harbor/certs/itproblog.crt
private_key Закрытый ключ SSL сертификата /opt/harbor/certs/itproblog.key

Внесем изменения в конфигурационный файл:

sudo nano harbor.yml
# The IP address or hostname to access admin UI and registry service. # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients. hostname: cr.itproblog.ru # http related config http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 80 # https related config https: # https port for harbor, default is 443 port: 443 # The path of cert and key files for nginx certificate: /opt/harbor/certs/itproblog.crt private_key: /opt/harbor/certs/itproblog.key # The initial password of Harbor admin # It only works in first time to install harbor # Remember Change the admin password from UI after launching Harbor. harbor_admin_password: Qwerty123 # Harbor DB configuration database: # The password for the root user of Harbor DB. Change this before any production use. password: Qwerty123 # The maximum number of connections in the idle connection pool. If it /opt/harbor/data/

Сохраняем внесенные изменения.

Теперь все готово к тому, чтобы запустить установку Harbor. Команда для запуска установки:

sudo ./install.sh —with-notary —with-trivy —with-chartmuseum
Status: Downloaded newer image for goharbor/chartmuseum-photon:v2.6.3 Creating harbor-log . done Creating chartmuseum . done Creating harbor-db . done Creating registryctl . done Creating redis . done Creating registry . done Creating harbor-portal . done Creating notary-signer . done Creating trivy-adapter . done Creating harbor-core . done Creating notary-server . done Creating harbor-jobservice . done Creating nginx . done ✔ —-Harbor has been installed and started successfully.—-

Дожидаемся окончания процесса установки. В процессе установки скрипт install.sh выполнит загрузку необходимых образов, настройки и создаст файл docker-compose для последующего запуска или остановки сервисов.

Теперь можем попробовать запустить веб панель администрирования. В моем случае адрес будет следующий:

https://cr.itproblog.ru/

Логин – admin. Стандартный пароль Harbor12345, я его изменял в конфигурационном файле выше. С настройками, как я приводил выше информация по подключению будет следующая:

login: admin password: Qwerty123

В случае успешного запуска и логина вы увидите первоначальный экран веб интерфейса администрирования:

Кстати, обратите внимание, что в первоначально директории (из которой мы запускали установку) был создан файл docker-compose для запуска и остановки всех сервисов:

Теперь вы можете подключаться к doker репозиторию и выполнять все рядовые операции – загружать образы, выгружать образы и т.д.:

sudo docker login cr.itproblog.ru

Устранение возможных проблем после перезагрузки сервера

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

Если посмотреть статус контейнеров, то можно увидеть, что один из контейнеров (nginx) не может запуститься успешно:

В его журнале можно увидеть следующие ошибки:

sudo docker logs nginx
2023/01/13 16:48:58 [emerg] 1#0: host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2 nginx: [emerg] host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2 2023/01/13 16:49:50 [emerg] 1#0: host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2 nginx: [emerg] host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2 2023/01/13 16:50:50 [emerg] 1#0: host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2 nginx: [emerg] host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2 2023/01/13 16:51:51 [emerg] 1#0: host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2 nginx: [emerg] host not found in upstream «notary-server:4443» in /etc/nginx/conf.d/notary.upstream.conf:2

Насколько я понял – эта ошибка возникает из-за порядка запуска сервисов. Как её устранить? Об этом чуть ниже.

Решение

Я победил её следующим образом – в файле crontab для события перезагрузки системы настроил остановку и запуск всех сервисов через docker-compose.

Сначала нужно добавить новую запись в файл crontab. Сначала переключимся в контекст супер пользователя:

sudo su

И добавим новую запись в crontab:

crontab -e

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

После внесенных изменений проблем с доступностью сервиса я не наблюдал.

Источник: itproblog.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru