Перейти к содержанию

Установка Track.Plugin в Jfrog Artifactory

Прежде чем приступить к использованию системы, ее необходимо интегрировать с менеджером репозиториев Nexus Repository Manager/JFrog Artifactory, используя входящий в комплект поставки Track.Plugin.

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

  1. Полученный плагин в виде zip-архива необходимо распаковать в директорию $JFROG_HOME/artifactory/var/etc/artifactory/plugins, где $JFROG_HOME — это корневая папка инсталляции JFrog Artifactory. Подробная инструкция по установке плагинов приведена в документации JFrog Artifactory.

  2. Отредактируйте конфигурационный файл плагина appsec-track-plugin.properties для настройки его работы в JFrog Artifactory.

    Настройки конфигурационного файла плагина задаются администратором. Они позволяют указывать настройки соединения с сервером, использования прокси, а также определять, к каким репозиториям применяется или не применяется проверка со стороны системы.

    Параметр Описание
    API configuration
    firewall.enabled Включение/выключение плагина.
    Возможные значения: true — плагин включен, false — плагин выключен
    firewall.reload-config-interval Интервал обновления настроек плагина (в секундах)
    firewall.api.url URL сервера, включая фрагмент /api/
    firewall.api.token Токен авторизации плагина в AppSec.Track
    Примечание: Не используется в версии 0.1
    firewall.api.sslCertificatePath Путь к SSL-сертификату в PEM-формате
    firewall.http.proxyHost Если используется подключение через прокси, необходимо указать имя или IP-адрес хоста
    firewall.http.proxyPort Если используется подключение через прокси, необходимо указать порт на хосте
    firewall.http.proxy.username Если используется подключение через прокси, необходимо указать логин пользователя
    firewall.http.proxy.password Если используется подключение через прокси, необходимо указать пароль пользователя
    firewall.api.trustAllCertificates Включение/выключение доверия всем сертификатам.
    Возможные значения: true — доверять всем сертификатам, false — проверка сертификатов включена
    firewall.api.timeout Время ожидания ответа от системы на запрос, по умолчанию — 60 секунд (задается в миллисекундах)
    Scanner configuration
    firewall.scanner.block-on-api-failure Включение/выключение разрешения загрузки в случае ошибок API. Если этот параметр имеет значение true, то при наличии ошибок в ответе на запрос загрузка пакета будет запрещена
    firewall.scanner.use-result-cache Включение/выключение разрешения использования кэша результатов оценки/проверки компонента.
    Возможные значения: true — кэш включен, false — использование кэша отключено
    firewall.global.mode Режим блокировки загрузок из всех поддерживаемых репозиториев по умолчанию. Может принимать одно из значений: audit, quarantine или disabled. Данный параметр может быть переопределен другими параметрами фильтрации
    firewall.filter.mode Режим блокировки репозиториев по регулярным выражениям (regEx). Может принимать одно из значений: audit, quarantine или disabled
    firewall.filter.regex Регулярное выражение (regEx) для блокировки репозиториев
    firewall.repo.<repo-name>.mode Режим блокировки репозиториев по имени. Может принимать одно из значений: audit, quarantine или disabled

    Ниже приведен неполный пример настроек конфигурационного файла плагина.

    Фрагмент конфигурационного файла
    firewall.enabled = <True|False>
    firewall.api.url = http://<AppSec.Track_IP_address>:8000/api/
    
    ## Required
    ## Mode for all repos
    firewall.global.mode = <audit|quarantine|disabled>
    
    ## Filter section, optional
    ## Allow to activate (audit|quarantine) or deactivate (disabled) **firewall for** repos by regex.
    ## Replace value set by **firewall.global**.mode.
    firewall.filter.mode = <audit|quarantine|disabled>
    firewall.filter.regex = regex
    
    ## Custom section, optional
    ## Allow to activate (audit|quarantine) or deactivate (disabled) **firewall for** specific repos by name
    ## Replace value set by **firewall.global**.mode and **firewall.filter**.mode
    ## Exmaple: 
    ##   firewall.repo.maven-central = audit
    ##   firewall.repo.pypi = quarantine
    firewall.repo.<repo-name>.mode = <audit|quarantine|disabled>
    

    С помощью настроек конфигурационного файла можно гибко регулировать работу плагина.

    Так, глобальный режим, при котором система отключена и не будет проверять никаких пакетов, задается с помощью присвоения значения disabled параметру firewall.global.mode:

    firewall.global.mode = disabled
    

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

    firewall.global.mode = audit
    

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

    firewall.global.mode = quarantine
    

    Заданный таким образом глобальный режим работы может быть переопределен для пакетов из отдельных репозиториев с помощью других параметров фильтрации, таких как firewall.filter.regex и firewall.filter.mode:

    firewall.filter.mode = audit
    firewall.filter.regex = npm-.*
    

    или для пакетов из конкретного репозитория с помощью параметра firewall.repo.<repo-name>.mode:

    firewall.repo.java-apps.mode = audit
    
  3. После установки и редактирования конфигурационного файла плагина необходимо перезапустить JFrog Artifactory.

    Чтобы убедиться в успешном старте плагина, проверьте содержимое файла $JFROG_HOME/artifactory/var/log/artifactory-service.log после перезапуска JFrog Artifactory. В нем должен присутствовать следующий фрагмент:

    ==============Plugins Status================
    #   appsec-track-plugin.groovy   -->  Loaded
    ============================================
    

    Примечание

    Лог плагина записывается в файл $JFROG_HOME/artifactory/var/log/artifactory-service.log. Включение в логе уровня DEBUG производится через редактирование файла $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml:

    <logger name="com.swordfishsecurity.sca.plugins.artifactory" level="debug"/>
    <logger name="com.swordfishsecurity.sca.sdk" level="debug"/>
    
  4. Дальнейшие обновления плагина происходят автоматически по принципу «Live Reload» и регулируются параметром интервала обновления artifactory.plugin.scripts.refreshIntervalSecs в файле $JFROG_HOME/artifactory/var/etc/artifactory/artifactory.system.properties, например:

    artifactory.plugin.scripts.refreshIntervalSecs=10
    

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

  5. Для проверки работоспособности установленного плагина запросите какой-либо компонент (например: http://адрес_артифактори:8085/ui/native/maven-central/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar) и убедитесь, что он отображается в логе запросов AppSec.Track. Для этого выберите пункт меню Репозитории, выберите ваш менеджер репозиториев и перейдите на вкладку История запросов.