Сценарии администрирования#

Менеджер репозитория поставляется с предопределенной ролью администратора nx-admin, а также анонимной ролью nx-anonymous. Их можно проверить в пункте «Пользователи» в разделе «Безопасность» главного меню «Администрирование».

Настройка Runtime среды#

Параметры JVM, на которой работает диспетчер репозиториев, конфигурируются с помощью файлов в каталоге $install-dir/bin.

Аргументы JVM считываются при запуске приложения из файла свойств Java $install-dir/bin/nexus.vmoptions:

-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
-Djava.endorsed.dirs=lib/endorsed

Настройка объема памяти#

Изменение любого из параметров -Xmx, -Xms, XX:MaxDirectMemorySize потребует настройки всех трех параметров. Значения -Xms и -Xmx всегда должны иметь одинаковое значение.

Для редактирования параметров памяти JVM выполните следующее:

  1. Откройте файл свойств Java $install-dir/bin/nexus.vmoptions в текстовом редакторе.

  2. Найдите строки управления памятью:

    -Xms2703M
    -Xmx2703M
    -XX:MaxDirectMemorySize=2703M
    
  3. Отредактируйте значения каждого параметра, используя следующий формат: числа (size) описывают размер памяти, буквенные литералы представляют гигабайты (g, G), мегабайты (m, M) или килобайты (k, K).

    -Xms(size)[g|G|m|M|k|K]
    -Xmx(size)[g|G|m|M|k|K]
    -XX:MaxDirectMemorySize=(size)[g|G|m|M|k|K]
    
  4. Сохраните файл.

Настройка параметров Java Tool (Java Tool Options)#

Файл $install-dir/bin/nexus.vmoptions определяет аргументы Java Tool, по одному на строку в формате файла свойств Java.

Для редактирования параметров Java:

  1. Откройте файл свойств Java $install-dir/bin/nexus.vmoptions в текстовом редакторе.

  2. Укажите каждый параметр java в новой строке.

Убедитесь, что за последним свойством следует символ конца строки или новая пустая строка. Иначе последнее указанное свойство не будет загружено.

  1. Сохранить файл с необходимыми разрешениями для владельца Artifactory.

Настройка HTTP порта#

Значение по умолчанию для HTTP-порта - 8081. Он используется для доступа к пользовательскому интерфейсу и ресурсам менеджера репозитория. Поэтому пользовательский интерфейс будет доступен по адресу http://localhost:8081/. Чтобы изменить или обновить порт, найдите строку application-port=8081 в $data-dir/etc/nexus.properties, а затем отредактируйте число.

Пример изменения порта на 9081: application-port=9081.

Настройка контекстного пути (Context Path)#

Чтобы изменить или обновить контекстный путь в экземпляре, который указывает на конкретное веб-приложение или ресурс, найдите строку nexus-context-path=/ в $data-dir/etc/nexus.properties.

Пример предоставления пользовательского интерфейса каталогу ресурсов: nexus-context-path=/components/.

Поэтому, если порт установлен на 9081, то URL адрес будет выглядеть следующим образом: http://localhost:9081/components/.

Настройка каталога данных (Data Directory)#

Можно использовать $install-dir/bin/nexus.vmoptions для определения нового местоположения данных, которые необходимо сохранить. Для этого в файле конфигурации нужно изменить значения: -Dkaraf.data, -Djava.io.tmpdir, -Dkaraf.log и -XX:LogFile. Далее через символ "=" укажите новый абсолютный путь. Например, чтобы использовать абсолютный путь /opt/sonatype-work/nexus3, измените значения следующим образом:

-Dkaraf.data=/opt/sonatype-work/nexus3
-Djava.io.tmpdir=/opt/sonatype-work/nexus3/tmp
-XX:LogFile=/opt/sonatype-work/nexus3/log/jvm.log
-Dkaraf.log=/opt/sonatype-work/nexus3/log

Настройка временного каталога (Temporary Directory)#

Менеджер репозиториев использует временный каталог виртуальной машины Java для важных исполняемых файлов.

Временный каталог настраивается внутри каталога данных Artifactory в $data-dir/tmp.

При изменении местоположения временных файлов по умолчанию учтите следующие требования:

  • Каталог tmp требует разрешения exec от пользователя, владеющего процессом менеджера репозитория.

  • Не используйте опцию монтирования noexec в Linux для местоположения, содержащего каталог tmp.

  • Если в каталоге tmp установлен noexec, запуск менеджера репозитория завершится с ошибкой java.lang.UnsatisfiedLinkError и сообщением failed to map segment from shared object: Operation not permitted. Если используется Docker образ диспетчера репозитория, возможно, потребуется настроить доступы к каталогу хоста, который монтируется как Docker том, чтобы разрешить выполнение.

  • Не изменяйте файлы, помещенные во временный каталог, особенно когда запущен диспетчер репозитория.

  • Убедитесь, что на диске, на котором размещен каталог, есть не менее 1 ГБ свободного места.

Для изменения временного каталога:

  1. Откройте файл свойств Java $install-dir/bin/nexus.vmoptions в текстовом редакторе.

  2. Отредактируйте строку, содержащую -Djava.io.tmpdir=../sonatype-work/nexus3/tmp. Значение может быть либо абсолютным путем, либо путем относительно каталога $install-dir/bin.

  3. Сохраните файл с необходимыми разрешениями для владельца Artifactory.

Настройка конфигурации сервера#

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

Настройки HTTP-запроса#

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

Также можно добавить дополнительные параметры для передачи в GET-запросе к удаленному репозиторию, чтобы добавить идентифицирующую информацию к запросам.

Время, в течение которого менеджер репозитория будет ожидать успешного выполнения запроса при взаимодействии с внешним удаленным репозиторием, можно настроить с помощью параметров «Connection/Socket timeout» и «Connection/Socket retry attempts».

HTTP-configuration

Настройка безопасности#

Параметры безопасности, показанные на рисунке, позволяют активировать и расставлять приоритеты областей безопасности, добавляя их в список «Active realms» слева и перемещая их выше или ниже в списке.

security-configuration

Эта конфигурация определяет, какая область безопасности используется для предоставления доступа пользователю.

Также можно включить или отключить анонимный доступ и установить имя пользователя и пароль для анонимного доступа. Анонимное имя пользователя и пароль используются для интеграции с другими сферами, которым может потребоваться специальное имя пользователя для анонимного доступа. Имя пользователя и пароль — это данные, которые нужно авторизовать, когда кто-то делает анонимный запрос. Нужно изменить анонимное имя пользователя на guest, если требуется интегрировать менеджер репозитория с Microsoft Active Directory.

Создание прокси-репозитория#

Для создания прокси-репозитория выполните следующие действия:

  1. Создайте blob store для репозитория.

  2. Создайте прокси-репозиторий.

  3. Создайте привилегии типа Repository View.

  4. Добавьте привилегии в роль. Опционально, создайте роль, в которую требуется добавить привилегии.

  5. Для новых ролей: назначьте роль пользователю.

Blob store#

  1. Зайдите в административную консоль.

  2. Создайте два blob store, которые будут входить в группу:

    1. Зайдите в раздел Blob stores и нажмите кнопку Create blob store.

    2. Задайте следующие параметры:

      • Type: File,

      • Name: имя (например, bsf1)

    3. Нажмите Create blob store.

    4. Создайте по аналогии второй такой же blob store (например, с именем bsf2). Для второго укажите путь до папки, находящейся на смонтированном NFS разделе.

  3. Создайте blob store с типом group:

    1. В поле members выберите ранее созданные bsf1 и bsf2.

    2. В поле Fill Policy выберите Write to second member if file size exceeds limit.

    3. Заполните Fill Policy File Size, указав предельный размер файла, при превышении которого начинает использоваться второй член группы (bsf2). Файлы размером меньше или равные указанному, будут записаны в bsf1.

Attention

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

Прокси-репозиторий#

  1. Выберите требуемый тип прокси.

  2. Заполните поля, указав в поле Blob store группу или единичное хранилище, описанные в предыдущем разделе.

Привилегии типа Repository View#

  1. Выберите созданный репозиторий.

  2. Укажите набор доступных для привилегии действий из набора: add, browse, read, edit, delete.

  3. Добавьте привилегии выбранной роли. Для этого в разделе Privileges найдите привилегию в списке Available и перенесите ее в Given.

Настройка правил маршрутизации#

Администратор экземпляра Artifactory может запретить пользователю делать определенные запросы к вышестоящим репозиториям. Это можно использовать, например, для предотвращения атаки перехвата имени, когда злоумышленник создает в реестре пакеты с именами, используемыми определенными внутренними проектами.

Создание или изменение правила маршрутизации#

Раздел интерфейса «Правила маршрутизации» находится в разделе «Администрирование» на странице «Репозиторий». Пользователь должен иметь привилегию nx-all для просмотра или внесений изменений в правила маршрутизации. Для редактирования правила маршрутизации нужно выбрать его из списка. Для создания нового нужно нажать кнопку «Создать правило маршрутизации» на панели инструментов.

creating-rule

Правила маршрутизации имеют два режима: BLOCK и ALLOW. При выборе BLOCK, если один из сопоставителей (matchers) соответствует пути запроса, запрос будет заблокирован, в противном случае он будет разрешен. Если правило использует режим ALLOW, то путь запроса должен совпадать хотя бы с одним из сопоставителей, иначе он будет заблокирован.

Каждое правило маршрутизации должен определять один или несколько сопоставителей. При этом они должны быть допустимыми регулярными выражениями, разрешенными Java.

Тестирование правил маршрутизации#

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

Удаление правила маршрутизации#

Правила маршрутизации можно удалить, нажав кнопку «Удалить правило маршрутизации». Чтобы удаление прошло успешно, правило не должно быть назначено ни одному репозиторию.

Назначение правила репозиторию#

При редактировании прокси-репозитория есть раздел «Правило маршрутизации», который позволяет пользователю выбрать ранее созданное правило маршрутизации для использования в репозитории. Ввод текста в поле позволяет выбрать имя правила маршрутизации из отфильтрованного списка правил маршрутизации. Нажмите треугольник справа, чтобы отобразить все параметры.

Управление привилегиями#

Управление настройками привилегий доступно в подразделе «Privileges» раздела «Security» панели глобального администратора.

Типы привилегий#

Тип

Сегменты разрешений

Применимые действия

Описание

Application

nexus:{name}:{actions}

create, read, update, delete

Привилегии типа Application являются встроенными привилегиями, которые контролируют доступ к определенным областям функций продукта в пользовательском интерфейсе администрирования

Repository Admin

nexus:repository-admin:{format}:{repository}:{actions}

browse, read, edit, add, delete

Привилегии администратора репозитория контролируют администрирование конфигурации для  определенных репозиториев или форматов репозитория (Maven, npm, Raw и т.д.). Эти привилегии не контролируют доступ к содержимому репозитория

Repository Content Selector

nexus:repository-content-selector:{selector}:{format}:{repository}:{actions}

browse, read, edit, add, delete

Привилегии Repository Content Selector обеспечивают детальный контроль над доступом к содержимому репозиториев с помощью content selector

Repository View

nexus:repository-view:{format}:{repository}:{actions}

browse, read, edit, add, delete

Привилегии Repository View контролируют общий доступ ко всему содержимому в определенных репозиториях или форматах репозитория. Эти привилегии не позволяют изменять конфигурацию репозитория

Script

nexus:script:{script name}:{actions}

browse, read, edit, add, delete, run

Привилегии Script контролируют доступ к использованию REST API, связанных с Groovy Script. Эти привилегии не контролируют общий доступ к REST API

Wildcard

*

*

Привилегии Wildcard позволяют построить строку привилегий с использованием серии сегментов произвольной формы. Все остальные типы привилегий являются более конкретными формами wildcard привилегии. По умолчанию включена только одна привилегия wildcard с именем nx-all с разрешением nexus:*, которая дает доступ ко всем функциям

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

  • одно текстовое значение;

  • список текстовых значений, разделенных запятыми;

  • звездочка * для представления всех значений в этом сегменте.

Алгоритм сопоставления внутренних сегментов использует подстановочные разрешения Apache Shiro.

Создание привилегий#

При создании новых привилегий необходимо назначить одно действие или комбинацию действий с разделителями-запятыми. Под действиями подразумеваются: add, browse, create, delete, edit, read, update и *.

Чтобы создать новую привилегию, нажмите кнопку «Create privilege» на панели «Privileges» и выберите «Repository View». При создании привилегии будет загружена форма «Create Repository View Privilege». Эта форма принимает имя привилегии (Name), описание привилегии (Description), формат целевого репозитория (Format), имя целевого репозитория (Repository) и действия (Actions).

create-rep-view

Задание требований к паролю#

Администратор может установить минимальные требования к паролям для пользователей, управляемых в локальных областях, используя свойства конфигурации в файлах $data-dir/nexus/etc/nexus.properties.

  • nexus.password.validator принимает регулярное выражение, условия которого должны быть выполнены для изменения пароля.

  • nexus.password.validator.message - это сообщение, которое будет показано, если введенный пароль не соответствует требованиям. Если сообщение не указано в свойствах, будет использоваться стандартное сообщение.

В этом примере показано, как указать, что пароль должен содержать латинские буквы в нижнем и верхнем регистре и цифры, и вывести сообщение в случае несоответствия:

nexus.password.validator=^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).+$
nexus.password.validator.message=Passwords must contain a lowercase letter, an uppercase letter and a digit

Подготовка резервной копии#

Репозиторий Artifactory хранит данные в хранилищах BLOB-объектов. Резервное копирование должно быть выполнено для следующих объектов:

  1. Хранилища BLOB-объектов

    Для хранилищ BLOB-объектов создайте резервную копию каталога, в котором хранятся BLOB-объекты.
    Для типовой конфигурации каталог будет следующим: $data-dir/blobs.

  2. Идентификатор узла

    Каждый экземпляр репозитория Artifactory связан с отдельным идентификатором. Необходимо создать резервную копию этого идентификатора, чтобы показатели хранилища больших двоичных объектов (размер и количество больших двоичных объектов на диске) и отчеты брандмауэра Artifactory работали в случае восстановления. Файлы для резервного копирования идентификатора узла находятся в следующем расположении: $data-dir/keystores/node/.

Выполнение операций с артефактами#

Загрузка артефактов#

Для загрузки артефакта требуется:

  1. Перейти в созданный репозиторий.

  2. Нажать кнопку "Upload component".

  3. На открывшейся странице заполнить обязательные поля: "Файл", "Расширение", "Group ID", "Artifact ID", "Version".

  4. Нажать кнопку "Upload".

Скачивание артефактов#

Для скачивания артефакта требуется:

  1. Перейти к нужному артефакту (в подразделе "Просмотр" выбрать репозиторий и в структуре иерархии развернуть соответствующую группу).

  2. Левой кнопкой мыши нажать название нужного артефакта.

  3. В боковом окне, в разделе "Summary" левой кнопкой мыши нажать путь артефакта. Начнется скачивание артефакта.

Поиск артефактов#

Для поиска артефакта требуется:

  1. Перейти в подраздел "Поиск".

  2. В параметрах поиска указать необходимые значения. Результаты поиска будут доступны ниже на странице.

Просмотр артефактов#

Для просмотра артефакта требуется:

  1. Перейти в подраздел "Просмотр".

  2. Перейти в репозиторий, содержащий нужный артефакт.

  3. В структуре иерархии выбрать группу и далее нужный артефакт.