Корневая URL-адреса ресурса Jenkins не работает (404) с авторизацией на основе проекта

Вопрос или проблема

Jenkins работает на выделенной машине, с SSL, предоставленным Haproxy.

Jenkins запущен внутри внутренней сети, с URL https://jenkins.company.com, https://jenkins-static.company.com настроен на ту же машину.

Настройки Haproxy как в руководстве по Jenkins (отключение Haproxy и переход на прямой HTTP не решает проблему).

При настройке корневого URL ресурса через “Управление Jenkins >> Система”, все URL артефактов преобразуются в https://jenkins-static.company.com/static-files/TOKEN/FILE_PATH, но попытка открыть ссылку всегда приводит к странице “Упс!” 404.

Я не смог найти никакой связанной информации в логах.

Чтобы заставить URL ресурса работать, мне пришлось добавить разрешение “Чтение Работы” для “Аутентифицированных пользователей” в глобальные настройки для стратегии авторизации на основе проектной матрицы. Но это нарушает безопасность моего экземпляра Jenkins, поэтому это решение нельзя применить.

Ответ или решение

Проблема с 404 ошибками при использовании Resource Root URL в Jenkins с настройкой Project-based Matrix Authorization может быть вызвана несколькими факторами, связанными с правами доступа и конфигурацией адреса.

Шаги для устранения проблемы:

  1. Проверьте настройки HAProxy:
    Убедитесь, что ваш HAProxy правильно маршрутизирует запросы на https://jenkins-static.company.com. Проверьте, настроен ли он так, чтобы проксировать все обращения к /static-files/ на соответствующий внутренний ресурс Jenkins. Ваша конфигурация HAProxy может выглядеть примерно так:

    frontend http_front
       bind *:80
       bind *:443 ssl crt /etc/ssl/certs/your_cert.pem
       acl url_static path_beg /static-files/
       use_backend jenkins_static if url_static
       default_backend jenkins
    
    backend jenkins_static
       server jenkins_static_backend 127.0.0.1:8080
    
    backend jenkins
       server jenkins_backend 127.0.0.1:8080
  2. Проверьте настройки Jenkins:
    Убедитесь, что в Jenkins правильно установлены адреса Jenkins URL и Jenkins Static URL. Эти параметры могут находиться в разделе Управление JenkinsНастройки системы. Убедитесь, что они установлены на https://jenkins.company.com и https://jenkins-static.company.com соответственно.

  3. Проверка прав доступа:
    Если вы добавляете разрешение "Job/Read" для "Authenticated Users", это может привести к риску безопасности, так как все аутентифицированные пользователи получат доступ к определённым проектам. Вместо этого:

    • Создайте отдельную роль для пользователей, которым необходимо видеть артефакты.
    • Используйте «Matrix-based security» для более детальной настройки доступа.

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

  4. Проверка логов:
    Даже если вы не увидели явных ошибок в логах Jenkins, посмотрите также логи HAProxy. Возможно, там будут указания на то, почему запросы к https://jenkins-static.company.com/static-files/... проваливаются.

  5. Тестирование без SSL:
    Если проблема сохраняется даже когда HAProxy выключен, попробуйте запустить Jenkins без SSL прямо на локальном сервере (например, на http://localhost:8080) и посмотрите, удастся ли вам получить доступ к статическим файлам. Это поможет определить, является ли проблема локальной или связанной с HAProxy.

  6. Модули и плагины:
    Убедитесь, что все плагины Jenkins обновлены до последней версии. Иногда проблемы могут возникать из-за конфликтов или ошибок в устаревших модулях.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...