Внешние сервисы — это механизм, позволяющий настраивать параметры авторизации для внешних инфраструктурных систем (например, 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.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <BASE64_CREDENTIALS> |
X-ClickHouse-User | <USERNAME> |
X-ClickHouse-Key | <PASSWORD> |
Пример Basic Authentication:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo -n "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <BASE64_CREDENTIALS>Пример с заголовками ClickHouse:
X-ClickHouse-User: <USERNAME>
X-ClickHouse-Key: <PASSWORD>DefectDojo
Тип авторизации: API v2 Key Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Token <TOKEN> |
Пример:
Authorization: Token <DEFECTDOJO_API_KEY>Bitbucket
Тип авторизации: Bearer Token (Personal Access Token).
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <TOKEN> |
Пример:
Authorization: Bearer <BITBUCKET_TOKEN>Docker Registry
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <BASE64_CREDENTIALS> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo -n "username:password" | base64. - Добавьте заголовок:
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.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <TOKEN> |
Пример:
Authorization: Bearer <GITHUB_TOKEN>Токен создаётся в настройках GitHub: «Settings» → «Developer settings» → «Personal access tokens».
Harbor
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <BASE64_CREDENTIALS> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo -n "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <BASE64_CREDENTIALS>Jenkins
Тип авторизации: Basic Authentication (Username/Password).
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <BASE64_CREDENTIALS> |
Пример:
- Сформируйте строку
username:password, где:username— имя пользователя в Jenkins.password— пароль пользователя.
- Закодируйте её в Base64:
echo -n "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <BASE64_CREDENTIALS>Jira
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <BASE64_CREDENTIALS> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo -n "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <BASE64_CREDENTIALS>Kaiten
Тип авторизации: API Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <TOKEN> |
Пример:
Authorization: Bearer <KAITEN_API_TOKEN>Kubernetes
Тип авторизации: Bearer Token (Service Account Token или User Token).
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <TOKEN> |
Пример:
Authorization: Bearer <KUBERNETES_TOKEN>Nexus
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <BASE64_CREDENTIALS> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo -n "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <BASE64_CREDENTIALS>OpenSearch
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <BASE64_CREDENTIALS> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo -n "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <BASE64_CREDENTIALS>Prometheus
Тип авторизации: Bearer Token или Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <TOKEN> или Basic <BASE64_CREDENTIALS> |
Пример Bearer Token:
Authorization: Bearer <TOKEN>Пример Basic Authentication:
Authorization: Basic <BASE64_CREDENTIALS>SonarQube
Тип авторизации: Bearer Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <TOKEN> |
Пример:
Authorization: Bearer <TOKEN>Svacer
Тип авторизации: Bearer Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <TOKEN> |
Пример:
Authorization: Bearer <TOKEN>Vault
Тип авторизации: Token Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
X-Vault-Token | <TOKEN> |
Пример:
X-Vault-Token: <VAULT_TOKEN>