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

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

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

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

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

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

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

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

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

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

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

Действия

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

Виджеты

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

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

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

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

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

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

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

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

CodeScoring

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

Заголовки:

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

Пример:

Authorization: <API_TOKEN>

ClickHouse

Тип авторизации: Basic Authentication или заголовки X-ClickHouse-User / X-ClickHouse-Key.

Заголовки:

ЗаголовокФормат значения
AuthorizationBasic <BASE64_CREDENTIALS>
X-ClickHouse-User<USERNAME>
X-ClickHouse-Key<PASSWORD>

Пример Basic Authentication:

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

Пример с заголовками ClickHouse:

X-ClickHouse-User: <USERNAME>
X-ClickHouse-Key: <PASSWORD>

DefectDojo

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

Заголовки:

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

Пример:

Authorization: Token <DEFECTDOJO_API_KEY>

Bitbucket

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

Заголовки:

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

Пример:

Authorization: Bearer <BITBUCKET_TOKEN>

Docker Registry

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

Заголовки:

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

Пример:

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

GitLab

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

Заголовки:

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

Пример:

Private-Token: <GITLAB_TOKEN>

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

GitHub

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

Заголовки:

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

Пример:

Authorization: Bearer <GITHUB_TOKEN>

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

Harbor

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

Заголовки:

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

Пример:

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

Jenkins

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

Заголовки:

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

Пример:

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

Jira

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

Заголовки:

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

Пример:

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

Kaiten

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

Заголовки:

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

Пример:

Authorization: Bearer <KAITEN_API_TOKEN>

Kubernetes

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

Заголовки:

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

Пример:

Authorization: Bearer <KUBERNETES_TOKEN>

Nexus

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

Заголовки:

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

Пример:

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

OpenSearch

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

Заголовки:

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

Пример:

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

Prometheus

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

Заголовки:

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

Пример Bearer Token:

Authorization: Bearer <TOKEN>

Пример Basic Authentication:

Authorization: Basic <BASE64_CREDENTIALS>

SonarQube

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

Заголовки:

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

Пример:

Authorization: Bearer <TOKEN>

Svacer

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

Заголовки:

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

Пример:

Authorization: Bearer <TOKEN>

Vault

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

Заголовки:

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

Пример:

X-Vault-Token: <VAULT_TOKEN>