Внешние сервисы — это механизм, позволяющий настраивать параметры авторизации для внешних инфраструктурных систем (например, GitLab, Kubernetes, DefectDojo и др.).

Настройка внешних сервисов осуществляется в разделе «Администрирование» → «Внешние сервисы».

Конфигурация

Конфигурация внешнего сервиса включает следующие параметры:

Название параметраОписание
НазваниеНазвание внешнего сервиса — отображается в интерфейсе
ИдентификаторУникальный человекочитаемый идентификатор (slug)
ВладелецПользователь, ответственный за внешний сервис
Команда-владелецКоманда, которой принадлежит внешний сервис
URLБазовый URL для обращения к внешнему сервису
Учётные данныеСписок доступных учётных данных (например, токенов), которые могут быть подставлены в запросы
ЗаголовкиHTTP-заголовки, автоматически добавляемые к запросам
Отключить проверку SSLОтключение проверки SSL-сертификата внешнего сервиса (например, при использовании самоподписанных сертификатов). Рекомендуется вместо этого добавить нужные сертификаты в «доверенные»
Системная учётная записьУчётная запись, которая будет использоваться для периодически запускаемых заданий: источников данных, проверок статуса и т.д.

Использование внешних сервисов

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

  • действиям,
  • виджетам,
  • источникам данных,
  • проверкам статуса сущностей.

Подключение сервиса выполняется на вкладке «Авторизация» в настройках соответствующего объекта.

Для каждого объекта можно в явном виде переопределить параметры, заданные во внешнем сервисе.
Например, если внешний сервис содержит токен авторизации, но в конкретном действии используются другие учетные данные — можно указать альтернативные значения. В этом случае будет переопределён только указанный параметр, остальные значения будут взяты из конфигурации внешнего сервиса.

Особенности подключения к объектам

Действия

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

Виджеты

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

Источники данных

  • Поддерживается подключение только одного внешнего сервиса.
  • Если в сервисе задана системная учётная запись, она используется по умолчанию при синхронизации.

Проверки статуса

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

Заголовки авторизации для внешних сервисов

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

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

CodeScoring

Тип авторизации: API Token.

Заголовки:

ЗаголовокФормат значения
Authorization<токен>

Пример:

Authorization: <ваш-api-token>

DefectDojo

Тип авторизации: API v2 Key Token.

Заголовки:

ЗаголовокФормат значения
AuthorizationToken <токен>

Пример:

Authorization: Token <ваш-defectdojo-api-v2-key>

Bitbucket

Тип авторизации: Bearer Token (Personal Access Token).

Заголовки:

ЗаголовокФормат значения
AuthorizationBearer <токен>

Пример:

Authorization: Bearer <ваш-bitbucket-personal-access-token>

Docker Registry

Тип авторизации: Basic Authentication.

Заголовки:

ЗаголовокФормат значения
AuthorizationBasic <base64-encoded-credentials>

Пример:

  1. Сформируйте строку username:password.
  2. Закодируйте её в Base64: echo "username:password" | base64.
  3. Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>

GitLab

Тип авторизации: Personal Access Token или Project Access Token.

Заголовки:

ЗаголовокФормат значения
Private-Token<токен>

Пример:

Private-Token: <ваш-gitlab-token>

Подробнее о том, как получить GitLab token можно узнать в официальной документации GitLab.

GitHub

Тип авторизации: Personal Access Token.

Заголовки:

ЗаголовокФормат значения
AuthorizationBearer <токен>

Пример:

Authorization: Bearer <ваш-github-token>

Токен создаётся в настройках GitHub: «Settings» → «Developer settings» → «Personal access tokens».

Harbor

Тип авторизации: Basic Authentication.

Заголовки:

ЗаголовокФормат значения
AuthorizationBasic <base64-encoded-credentials>

Пример:

  1. Сформируйте строку username:password.
  2. Закодируйте её в Base64: echo "username:password" | base64.
  3. Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>

Jenkins

Тип авторизации: Basic Authentication (Username/Password).

Заголовки:

ЗаголовокФормат значения
AuthorizationBasic <base64-encoded-credentials>

Пример:

  1. Сформируйте строку username:password, где:
    • username — имя пользователя в Jenkins.
    • password — пароль пользователя.
  2. Закодируйте её в Base64: echo "username:password" | base64.
  3. Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>

Jira

Тип авторизации: Basic Authentication.

Заголовки:

ЗаголовокФормат значения
AuthorizationBasic <base64-encoded-credentials>

Пример:

  1. Сформируйте строку username:password.
  2. Закодируйте её в Base64: echo "username:password" | base64.
  3. Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>

Kaiten

Тип авторизации: API Token.

Заголовки:

ЗаголовокФормат значения
AuthorizationBearer <токен>

Пример:

Authorization: Bearer <ваш-kaiten-api-token>

Kubernetes

Тип авторизации: Bearer Token (Service Account Token или User Token).

Заголовки:

ЗаголовокФормат значения
AuthorizationBearer <токен>

Пример:

Authorization: Bearer <ваш-kubernetes-token>

Nexus

Тип авторизации: Basic Authentication.

Заголовки:

ЗаголовокФормат значения
AuthorizationBasic <base64-encoded-credentials>

Пример:

  1. Сформируйте строку username:password.
  2. Закодируйте её в Base64: echo "username:password" | base64.
  3. Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>

OpenSearch

Тип авторизации: Basic Authentication.

Заголовки:

ЗаголовокФормат значения
AuthorizationBasic <base64-encoded-credentials>

Пример:

  1. Сформируйте строку username:password.
  2. Закодируйте её в Base64: echo "username:password" | base64.
  3. Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>

Prometheus

Тип авторизации: Bearer Token или Basic Authentication.

Заголовки:

ЗаголовокФормат значения
AuthorizationBearer <токен> или Basic <base64-encoded-credentials>

Пример Bearer Token:

Authorization: Bearer <ваш-токен>

Пример Basic Authentication:

Authorization: Basic <base64-encoded-credentials>

SonarQube

Тип авторизации: Bearer Token.

Заголовки:

ЗаголовокФормат значения
AuthorizationBearer <токен>

Пример:

Authorization: Bearer <ваш-токен>

Vault

Тип авторизации: Token Authentication.

Заголовки:

ЗаголовокФормат значения
X-Vault-Token<токен>

Пример:

X-Vault-Token: <ваш-vault-token>