Nexus firewall что это
Про утилиту сборки для Java-проектов Maven и про возможность создания локального сервера для Maven-репозитория с помощью Sonatype Nexus на Хабре уже упоминали (тут и тут). Однако, никакого рецепта по этому поводу представлено не было. Это неудивительно при наличии достаточно полной грамотной документации. По долгу службы мне пришлось настраивать его на нашей фирме, и оказалось, что советы из официальной документации не совсем подходят. Возникшей проблемой и способом ее решения я и хочу поделиться с сообществом. Но обо всем по порядку.
Зачем это нужно?
Локальный сервер для Maven-репозитория (как, например, Sonatype Nexus) может быть использован для хранения локальных артефактов Maven, и действительно пригодится командам, которые разрабатывают модульные приложения, но не собираются публиковать модули в общий доступ.
- Sonatype Nexus
- Apache Archiva
- Artifactory
Установка Sonatype Nexus
На данном этапе можно смело следовать документации, на моей памяти проблем не возникало. На сайте Sonatype есть неплохой обучающий скринкаст. Вкратце перескажу суть процесса установки.
В принципе, им уже можно пользоваться без всякой настройки(из коробки доступны прокси-репозитории Maven central, Codehaus, Apache), но имеет смысл настроить права доступа, группы репозиториев, добавить необходимые прокси-репозитории, включить индексирование, и.т.п.
Настройка Maven для использования Sonatype Nexus в качестве прокси
Данный этап уже гораздо неоднозначнее. Посмотрим, что предлагает нам официальная документация.
Здесь рекомендуют в settings.xml записать следующее:
* This source code was highlighted with Source Code Highlighter .
При этом, там честно говорят, что такая настройка может вызвать проблемы в случае, если для проекта в pom.xml определены сторонние репозитории с помощью тега . Дело в том, что при такой настройке Maven опрашивает только Nexus, который может быть не осведомлен о наличии дополнительных репозиториев. Так уж получилось, что в нашем проект такие репозитории имеются. Документация советует в таких ситуациях добавлять все такие репозитории в public группу локального репозитория.
Вполне логичный совет, но имеется ряд организационных проблем, связанных с ограничением доступа к администрированию Nexus. Так, например, для того чтобы попробовать в деле какую-нибудь библиотеку стороннюю, разработчик вынужден дергать админа, чтоб тот добавил соответствующий репозиторий в Nexus. На время отключать это зеркало в settings.xml — тот еще костыль.
- Использовать зеркало с параметром central Все работает, но выгоды в производительности и в экономии трафика от использования зеркала мало. В этом случае Nexus будет проксировать только главный репозиторий, так как все дополнительные репозитории опрашиваются раньше, чем central.
- Добавлять Nexus как репозиторий в каждый проект в pom.xml. Этот вариант еще менее удобен, кроме того не подходит, например, для чужих и публичных проектов (когда нельзя вносить изменения в pom.xml). Зато опрос Nexus_a можно сделать первым в очереди.
- Добавить Nexus как репозиторий в профиль по умолчанию. Это подход, объединяющий положительные черты вышепредставленых — централизованная настройка и эффективное проксирование
* This source code was highlighted with Source Code Highlighter .
По сути, данной настройкой мы добавляем профиль, активный по умолчанию, который добавляет Nexus как обычный репозиторий. И добавляется он первым в очередь.
Теперь все запросы сначала отправляются Nexus_у. Тот в зависимости от наличия запрашиваемого артефакта в хранимых и подключенных прокси-репозиториях либо отдает запрошенный артефакт, либо отвечает отрицательно. В случае отрицательного ответа Maven просто продолжит опрос перечисленных в pom.xml репозиториев, а затем обратится и к репозиторию Maven central.
Примущества подхода
Недостатки подхода
Выявлен только один недостаток — существует опасность забыть добавить необходимый дополнительный репозиторий в pom.xml. Правда, следует отметить, что этот недостаток касается фактически всех подходов (кроме 2-го) а также может проявляться вообще в отсутствие локального Nexus репозитория.
Дело в том, что если сторонний репозиторий добавлен в Nexus, то у разработчиков, у которых Nexus подключен, сборка будет проходить без проблем. Но разработчики, без настроенного Nexus не смогут собрать проект вообще, так как их Maven не будет знать, из какого дополнительного репозитория нужно запросить артефакты.
Аналогичная ситуация может возникнуть просто если какой-то артефакт закеширован в локальных репозиториях разработчиков после работы над предыдущими проектами. Вобщем, в этом вопросе лишь важно не терять бдительность.
Послесловие
Надо сказать, что совет авторов документации добавлять все дополнительные репозитории, описанные в pom.xml проектов, в Nexus никто не отменял. Это действительно лучше делать для того, чтобы получить выгоду от использования проксирующего Maven-репозитория. Но зато применение предложенного решения делает это необязательным, что может убрать время ожидания разработчика, пока админ добавит нужный репозиторий.
UPD: Наткнулся на интересную статью, в которой рассматриваются похожие вопросы.
Особенности
Выбор подходящих зависимостей на старте проекта
-
Быстрая проверка компонентов на соответствие политикам использования ПО с открытым исходным кодом вашей организации с помощью подробной информации прямо в IDE.
Внутренние инструменты для обеспечения безопасности разработки
- Система предоставляет множество инструментов анализа безопасности кода для разработчиков на различных языках программирования, таких как как тестовые скрипты, работающие во время сборки как часть CI/CD конвейера, что позволит ускорить проверку приложений и облегчить взаимодействие со службой информационной безопасности.
- При проверках используются данные Nexus Intelligence и лучшие практики безопасной разработки для выявления уязвимых компонентов или нарушений политик с помощью всего нескольких щелчков мыши.
- Разработчики смогут основываясь на анализе в реальном времени выбрать лучшие компоненты и легко перейти на их проверенные версии. Nexus интегрируется с Eclipse, IntelliJ и Visual Studio, VS Code*, GitHub, GitLab, Atlassian Bitbucket и многими другими инструментами разработки.
Контроль качества исходников
- Sonatype Nexus позволяет просматривать результаты оценки зависимостей непосредственно в GitHub, Bitbucket или GitLab для снижения ускорения разработки через автоматизацию ручных задач.
- Поддерживайте актуальность версий компонентов с помощью постоянного мониторинга и автоматически создавайте запросы на исправление при любых новых нарушениях политик. Жизненный цикл Nexus дает вам доступные версии обновлений и способы автоматического устранения несоответствий.
- Обеспечение обратной связи для разработчиков по результатам сканирования нового кода, все несоответствия политикам и строки кода к ним приведшие могут быть отправлены автору для внесения исправлений.
Богатый и гибкий механизм настройки политик
- Nexus позволяет службе безопасности возможность создавать настраиваемые политики в зависимости от типа приложения и организации, а также применять эти политики на всех этапах цикла разработки приложений.
- Политики могут быть настроены для выявления уязвимостей безопасности, контроля лицензирования и даже для снижения стоимости разработки.
- По результатам срабатывания политик в системе имеются богатые возможности настройки оповещений по электронной почте или создания задач Jira, а также возможность приостановки сборки билда в зависимости от серьезности нарушения политик.
Проверка зависимостей на уязвимости перед вводом новых компонентов в цепочку разработки
- Модуль Nexus Firewall предотвращает ввод уязвимых компонентов в процесс разработки. Вы получаете инструмент автоматического контроля поступающих в вашу среду разработки внешних компонентов исходя из общих факторов риска – таких как уязвимости, возраст, популярность и лицензионные данные. С Nexus вы предотвратите разработку приложений, использующих нежелательные или неодобренные зависимости.
Точная информация по
использованию зависимостей
с подробными отчетами
- Получите полную прозрачность использования в вашей среде разработки конпонентов с открытым исходным кодом с помощью отчетность по жизненному циклу Nexus. Информативная отчетность облегчает быстрое выявление нарушений безопасности и политик в ваших приложениях и контейнерах. Она автоматически генерирует ведомость материалов по программному обеспечению, определяя все компоненты с открытым исходным кодом и их зависимости, а также отражает любые связанные с ними риски безопасности или лицензирования чтобы вы точно знали, что находится в ваших приложениях.
- С помощью приборной панели Success Metrics вы можете увидеть, как быстро устраняются нарушения, просмотреть тенденции по трудозатратам и отследить среднее время внесения изменений в код. Этими KPI можно легко поделиться с высшим руководством.
Create policy-based rules that we’ll enforce.
Use Sonatype’s out-of-the-box policy options or customize your own. Your policy settings dictate what OSS components are allowed into your SDLC, what is put into quarantine, and what is released from quarantine. Customize your rules based on common risk factors like popularity, and licensing credentials, and address known and unknown vulnerabilities via Sonatype’s Integrity Rating. From there, configure policy actions to automatically prevent applications from moving forward with unwanted or unapproved components.
Доступ API для этой роли
Эти переменные контролируют, как роль подключается к API Nexus для предоставления.
Только для продвинутых пользователей. Скорее всего, вы не хотите изменять эти настройки по умолчанию
Конфигурация LDAP
Соединения LDAP и область безопасности по умолчанию отключены
Соединения LDAP, каждый элемент выглядит следующим образом:
Пример конфигурации LDAP для анонимной аутентификации (анонимная привязка), это также «минимальная» конфигурация:
Пример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA):
Пример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA) + группы, сопоставленные как роли:
Пример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA) + группы, динамически сопоставленные как роли:
Automatically detect and prevent malicious cyber attacks.
Sonatype’s Artificial Intelligence evaluates open source software (OSS) components based on different behaviors and determines if something is a potential threat or not. Those that are “known bad” (critically malicious/harmful OSS release) are automatically blocked from download. Your developers won’t even have the chance to choose components with known vulnerabilities.
Those identified as potential threats, specific to npm packages, are also quarantined until they’re confirmed or cleared of vulnerabilities by Sonatype’s security research team. If cleared, it is automatically released based on your policy.
Early Identification and Warning
Decrease the risk of a security breach by automatically blocking known vulnerabilities and harmful OSS releases.
Резервные копии
Резервное копирование не будет настроено, пока вы не переключите nexus_backup_configure в true .
В этом случае запланированная задача сценария будет настроена для запуска в Nexus
с интервалом, указанным в nexus_backup_cron (по умолчанию 21:00 каждый день).
См. [Шаблон groovy для этой задачи](templates / backup.groovy.j2) для получения подробной информации.
Это запланированное задание не зависит от других nexus_scheduled_tasks , которые вы
объявить в своем playbook.
Если вы хотите ротировать/удалять резервные копии, установите nexus_backup_rotate: true и настройте количество бекапов, которое вы хотели бы сохранить с помощью nexus_backup_keep_rotations (по умолчанию 4).
При использовании ротации, если вы хотите сэкономить дополнительное дисковое пространство во время процесса резервного копирования,
Вы можете установить nexus_backup_rotate_first: true . Это настроит предварительное ротирование/удаление перед бекапом. По умолчанию ротиция происходит после создания резервной копии. Обратите внимание, чем в этом случае старые резервные копии
удалятся до того, как текущий бекап будет сделан.
Процедура восстановления
Запустите playbook с параметром -e nexus_restore_point=
(например, 2017-12-17-21-00-00 для 17 декабря 2017 в 21:00
Удаление nexus
Предупреждение: это полностью удалит текущие данные. Обязательно сделайте резервную копию ранее, если это необходимо
Используйте переменную nexus_purge , если вам нужно перезапустить с нуля и переустановить экземпляр nexus с удалением всех данных.
Изменить пароль администратора после первой установки
Это не должно быть изменено в вашем playbook. Эта переменная заполняется стандартным паролем администратора Nexus при первой установке и гарантирует, что мы можем изменить пароль администратора на nexus_admin_password .
Если вы хотите изменить пароль администратора после первой установки, вы можете временно изменить его на старый пароль из командной строки. После изменения nexus_admin_password в вашей игровой книге вы можете запустить:
Менеджер репозиториев для локального хранения и управления артефактами, зависимостями и Docker-образами.
подходящих зависимостей на старте проекта.
зависимостей на уязвимости перед вводом новых
компонентов в цепочку разработки.
Нужна помощь или совет?
У вас есть вопрос? Не уверены что именно вам нужно? Вам необходимо независимое экспертное мнение по информационной безопасности в бизнес терминах?
В рамках бесплатной 30-минутной консультации, ответим на любые ваши вопросы
Пользователи
Local (non-LDAP) users/accounts list to create in nexus.
Список локальных (не LDAP) пользователей/учетных записей для создания в Nexus.
Маппинг Ldap пользователей/ролей. Состояние absent удалит роли из существующего пользователя, если он уже существует.
Пользователи Ldap не удаляются. Попытка установить роль для несуществующего пользователя приведет к ошибке.
Требования
Артефакты поддерживаемые в базовой поставке Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Stop known and unknown open source risk from being downloaded into your repositories .
Combating modern-day supply chain attacks is significantly more complicated than in the past. Adversaries are getting craftier and are no longer waiting to exploit publicly disclosed vulnerabilities to launch a cyberattack. These next-gen attacks require a next-gen open source security solution. Nexus Firewall provides just that — an early warning detection system preventing malicious and suspicious open source components from entering your SDLC.
Каталоги экземпляров Nexus
Blobstores и репозитории
Delete the repositories from the nexus install initial default configuration. This step is only executed on first-time install (when nexus_data_dir has been detected empty).
Удаление репозиториев из исходной конфигурации по умолчанию для Nexus. Этот шаг выполняется только при первой установке (когда nexus_data_dir пустой).
Удаление хранилища блобов (бинарных артефактов) выключено по умолчанию из исходной конфигурации. Для удаления хранилища блобов (бинарных артефактов) выключите nexus_delete_default_repos: true . Этот шаг выполняется только при первой установке (когда nexus_data_dir пустой).
Blobstores to create. A blobstore path and a repository blobstore cannot be updated after initial creation (any update here will be ignored on re-provisionning).
Configuring blobstore on S3 is provided as a convenience and is not part of the automated tests we run on travis. Please note that storing on S3 is only recommended for instances deployed on AWS.
Cоздание Blobstores. Путь к хранилищу и репозиторию хранилищ не могут быть обновлены после первоначального создания (любое обновление здесь будет игнорироваться при повторной установке).
Настройка хранилища BLOB-объектов на S3 предоставляется для удобства. Обратите внимание, что хранение на S3 рекомендуется только для экземпляров, развернутых на AWS.
Выше пример конфигурации прокси-сервер Maven.
Maven hosted repositories configuration. Negative cache config is optionnal and will default to the above values if omitted.
Конфигурация размещенных (hosted) репозиториев Maven. Конфигурация отрицательного кэша (-1) является необязательной и будет по умолчанию использовать вышеуказанные значения, если не указана.
Все три типа репозитория объединяются со следующими значениями по умолчанию:
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS and yum repository types:
see defaults/main.yml for these options:
Хранилища Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS и yum по умолчанию выключены:
Смотрите defaults/main.yml для этих опций:
Обратите внимание, что вам может потребоваться включить определенные области безопасности, если вы хотите использовать другие типы репозиториев, кроме maven. Это по умолчанию false
Remote User Realm также может быть включена с помощью
и заголовок может быть настроен путем определения
Automatic Protection from Unknown Risks
Critically malicious components and newly released suspicious components are automatically blocked, so your SDLC is always secure.
Привилегии
Список привилегий для настройки. Посмотрите документацию и графический интерфейс, чтобы проверить, какие переменные должны быть установлены в зависимости от типа привилегии.
Эти элементы объединяются со следующими значениями по умолчанию:
Пароль администратора
Запланированные задачи
Запланированные задачи для настройки. typeId и специфичные для задачи taskProperties / booleanTaskProperties можно угадать либо:
- из иерархии типов Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
- проверяя HTML-форму создания задачи в вашем браузере
- от просмотра запросов AJAX в браузере при ручной настройке задачи.
Свойства задачи должны быть объявлены в правильном блоке yaml в зависимости от их типа:
- taskProperties для всех строковых свойств (т. е. имен репозиториев, имен хранилищ, периодов времени . ).
- booleanTaskProperties для всех логических свойств (т. е. в основном чекбоксы в графическом интерфейсе задачи создания нексуса).
Скриншоты:
Automatically detect and prevent malicious cyber attacks.
Sonatype’s Artificial Intelligence evaluates open source software (OSS) components based on different behaviors and determines if something is a potential threat or not. Those that are “known bad” (critically malicious/harmful OSS release) are automatically blocked from download. Your developers won’t even have the chance to choose components with known vulnerabilities.
Those identified as potential threats, specific to npm packages, are also quarantined until they’re confirmed or cleared of vulnerabilities by Sonatype’s security research team. If cleared, it is automatically released based on your policy.
Зачем нужен Sonatype Nexus?
- Для хранения приватных артефактов;
- Для кеширования артефактов, которые скачиваются из интернета;
Настройка использование памяти Nexus JVM
Это настройки по умолчанию для Nexus. Пожалуйста, не изменяйте эти значения Если вы не прочитали раздел памяти системных требований nexus и не понимаете, что они делают.
Как второе предупреждение, вот выдержка из вышеупомянутого документа:
Не рекомендуется увеличивать память JVM heap больше рекомендуемых значений в попытке повысить производительность. Это на самом деле может иметь противоположный эффект, приводя к ненужной работе операционной системы.
Comprehensive Control over your SDLC
Decide which components are allowed into your SDLC based on common risk factors, including age, popularity, and licensing credentials.
Артефакты поддерживаемые сообществом:
Какие бизнес-задачи можно решать
Снижение рисков финансовых и репутационных потерь при возможной компрометации данных и\или остановке сервисов из-за взлома приложений через уязвимые сторонние компоненты.
- Снижение затрат на разработку за счет автоматизации рутинных проверок
- Снижение затрат на контроль разработки со стороны службы безопасности
Sonatype Nexus позволяет проксировать, собирать и управлять зависимостями без постоянного обращения к внешним хранилищам бинарных JAR-артефактов.
Порт Nexus и контекстный путь
Порт и контекстный путь процесса Java-соединения. nexus_default_context_path должен содержать косую черту, когда он установлен, например.: nexus_default_context_path: '/nexus/' .
Публичное имя хоста
Role Variables
Переменные со значениями по умолчанию (см. default/main.yml ):
Настройка обратного прокси
Установить адрес электронной почты администратора по умолчанию
Пример ansible-playbook для установки nexus без LDAP с репозиториями Maven (java), Docker, Python, Ruby, NPM, Bower, RPM и gitlfs.
Переменные роли
Automatic Release
Components that clear suspicious rating are automatically released to be consumed by developers, reducing time spend reviewing components and reducing friction.
Create policy-based rules that we’ll enforce.
Use Sonatype’s out-of-the-box policy options or customize your own. Your policy settings dictate what OSS components are allowed into your SDLC, what is put into quarantine, and what is released from quarantine. Customize your rules based on common risk factors like popularity, and licensing credentials, and address known and unknown vulnerabilities via Sonatype’s Integrity Rating. From there, configure policy actions to automatically prevent applications from moving forward with unwanted or unapproved components.
Sonatype - визионер мирового рынка DevSecOps, разработчик решений для контроля компонент ПО с открытым исходным кодом
Наша платформа Nexus помогает управлять компонентами с открытым исходным кодом более чем 10 миллионам инженеров в 1000 организаций по всему миру, одновременно ускоряя инновации и повышая защищенность создаваемого программного обеспечения.
Наш механизм машинного обучения (Nexus Intelligence) контролирует более 20 миллионов библиотек с открытым исходным кодом. Мы постоянно передаем эту информацию нашим клиентам, чтобы они принимали лучшие инновационные решения как на самых ранних этапах, так и в течение всего жизненного цикла разработки ПО.
У DevOps команд отсутствуют все сложности, связанные с ручным управлением артефактами ПО. Инженерные команды поставляют защищенное программное обеспечение быстрее, чем когда-либо, что позволяет всем достичь максимальной эффективности: разработчикам, специалистам по безопасности и бизнесу.
В нашей компании работает 250 специалистов с широкой технологической экспертизой и высокой квалификацией, которые разделяют одно общее увлечение: реализация и ускорение инноваций в области разработки защищенного программного обеспечения.
Наши сотрудники работают в 10 странах и мы верим в силу распределенных организаций. Мы не ограничиваем себя, нанимая специалистов на работу в определенных городах и странах. Мы готовы предложить работу экспертам-суперзвездам, где бы они ни жили.
Наше видение - в современной инженерой организации именно платформа Nexus должна быть в центре экосистемы принятия решений и контроля использования ПО с открытым исходным кодом. Наши инвесторы, такие как TPG, Goldman Sachs, Accel и HWVP, разделяют эти взгляды и верят в наш стратегический подход.
Sonatype Nexus – интегрированная платформа, с помощью которой разработчики могут проксировать, хранить и управлять зависимостями Java (Maven), образами Docker, Python, Ruby, NPM, Bower, RPM-пакетами, gitlfs, Apt, Go, Nuget, а также распространять свое программное обеспечение.
Селекторы контента
Для получения дополнительной информации о селекторе контента см. Документацию.
Чтобы использовать селектор контента, добавьте новую привилегию с type: repository-content-selector и соответствующим contentSelector
Benefits of Nexus Firewall
Роли (внутри Nexus имеется виду)
Список ролей для настройки.
Пользователь и группа ОС Nexus
Пользователь и группа, используемые для владения файлами Nexus и запуска службы, будут созданы ролью, если она отсутствует.
Разрешить изменять домашний каталог по умолчанию для пользователя nexus
Анонимный доступ по умолчанию
Анонимный доступ по умолчанию вылючен. Подробнее про анонимный доступ.
Block malicious open source risks from entering your software supply chain.
General variables
Если вы измените версию на более новую, то роль попытается обновить ваш установленный Nexus.
Если вы используете более старую версию Nexus, чем последняя, вы должны убедиться, что не используете функции, которые недоступны в установленном выпуске (например, размещенние yum репозиториев доступно для nexus больше чем 3.8.0, git lfs repo для nexus больше чем 3.3.0 и т. д.)
nexus timezone — это имя часового пояса Java, которое может быть полезно в сочетании с приведенными ниже выражениями cron для nexus_scheduled tasks.
Developer First
Firewall automatically returns secure versions of component version range requested so that developers spend less time choosing the most secure version.
Universal Repository Support
Native integration with Nexus Repository and support for JFrog Artifactory Enterprise with high availability.
Читайте также: