Внешние сервисы — это механизм, позволяющий настраивать параметры авторизации для внешних инфраструктурных систем (например, GitLab, Kubernetes, DefectDojo и др.).
Настройка внешних сервисов осуществляется в разделе «Администрирование» → «Внешние сервисы».
Конфигурация
Конфигурация внешнего сервиса включает следующие параметры:
| Название параметра | Описание |
|---|---|
| Название | Название внешнего сервиса — отображается в интерфейсе |
| Идентификатор | Уникальный человекочитаемый идентификатор (slug) |
| Владелец | Пользователь, ответственный за внешний сервис |
| Команда-владелец | Команда, которой принадлежит внешний сервис |
| URL | Базовый URL для обращения к внешнему сервису |
| Учётные данные | Список доступных учётных данных (например, токенов), которые могут быть подставлены в запросы |
| Заголовки | HTTP-заголовки, автоматически добавляемые к запросам |
| Отключить проверку SSL | Отключение проверки SSL-сертификата внешнего сервиса (например, при использовании самоподписанных сертификатов). Рекомендуется вместо этого добавить нужные сертификаты в «доверенные» |
| Системная учётная запись | Учётная запись, которая будет использоваться для периодически запускаемых заданий: источников данных, проверок статуса и т.д. |
Использование внешних сервисов
Внешние сервисы могут быть подключены к различным объектам платформы:
- действиям,
- виджетам,
- источникам данных,
- проверкам статуса сущностей.
Подключение сервиса выполняется на вкладке «Авторизация» в настройках соответствующего объекта.
Для каждого объекта можно в явном виде переопределить параметры, заданные во внешнем сервисе.
Например, если внешний сервис содержит токен авторизации, но в конкретном действии используются другие учетные данные — можно указать альтернативные значения. В этом случае будет переопределён только указанный параметр, остальные значения будут взяты из конфигурации внешнего сервиса.
Особенности подключения к объектам
Действия
- К одному действию можно подключить несколько внешних сервисов.
- Можно выбрать сервис по умолчанию.
- Параметр системная учетная запись не используется в действиях.
- При запуске действия можно выбрать, для какого внешнего сервиса оно будет запускаться. Если ни один сервис не выбран, будет использоваться сервис по умолчанию. Если сервис по умолчанию не задан, то будет использоваться первый внешний сервис в списке.
Виджеты
- Для одного виджета также поддерживается подключение нескольких внешних сервисов.
- Один из них может быть выбран как используемый по умолчанию.
- В последующих релизах будет добавлена возможность изменения сервиса во время просмотра виджета.
- Параметр системная учетная запись не используется в виджетах.
Источники данных
- Поддерживается подключение только одного внешнего сервиса.
- Если в сервисе задана системная учётная запись, она используется по умолчанию при синхронизации.
Проверки статуса
- Проверке может быть назначен один внешний сервис.
- Если у него указана системная учётная запись — она используется при запуске автоматических проверок.
Заголовки авторизации для внешних сервисов
При настройке внешних сервисов необходимо указать соответствующие HTTP-заголовки для авторизации. Ниже приведен список внешних сервисов, поддерживаемых платформой, с указанием типа авторизации и необходимых заголовков.
Приведенные ниже примеры демонстрируют возможные способы авторизации для каждого сервиса. В некоторых сервисах могут использоваться другие механизмы. Платформа поддерживает все варианты, которые можно передать через HTTP-заголовки.
CodeScoring
Тип авторизации: API Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | <токен> |
Пример:
Authorization: <ваш-api-token>DefectDojo
Тип авторизации: API v2 Key Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Token <токен> |
Пример:
Authorization: Token <ваш-defectdojo-api-v2-key>Bitbucket
Тип авторизации: Bearer Token (Personal Access Token).
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <токен> |
Пример:
Authorization: Bearer <ваш-bitbucket-personal-access-token>Docker Registry
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <base64-encoded-credentials> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo "username:password" | base64. - Добавьте заголовок:
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.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <токен> |
Пример:
Authorization: Bearer <ваш-github-token>Токен создаётся в настройках GitHub: «Settings» → «Developer settings» → «Personal access tokens».
Harbor
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <base64-encoded-credentials> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>Jenkins
Тип авторизации: Basic Authentication (Username/Password).
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <base64-encoded-credentials> |
Пример:
- Сформируйте строку
username:password, где:username— имя пользователя в Jenkins.password— пароль пользователя.
- Закодируйте её в Base64:
echo "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>Jira
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <base64-encoded-credentials> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>Kaiten
Тип авторизации: API Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <токен> |
Пример:
Authorization: Bearer <ваш-kaiten-api-token>Kubernetes
Тип авторизации: Bearer Token (Service Account Token или User Token).
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <токен> |
Пример:
Authorization: Bearer <ваш-kubernetes-token>Nexus
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <base64-encoded-credentials> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>OpenSearch
Тип авторизации: Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Basic <base64-encoded-credentials> |
Пример:
- Сформируйте строку
username:password. - Закодируйте её в Base64:
echo "username:password" | base64. - Добавьте заголовок:
Authorization: Basic <base64-encoded-credentials>Prometheus
Тип авторизации: Bearer Token или Basic Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <токен> или Basic <base64-encoded-credentials> |
Пример Bearer Token:
Authorization: Bearer <ваш-токен>Пример Basic Authentication:
Authorization: Basic <base64-encoded-credentials>SonarQube
Тип авторизации: Bearer Token.
Заголовки:
| Заголовок | Формат значения |
|---|---|
Authorization | Bearer <токен> |
Пример:
Authorization: Bearer <ваш-токен>Vault
Тип авторизации: Token Authentication.
Заголовки:
| Заголовок | Формат значения |
|---|---|
X-Vault-Token | <токен> |
Пример:
X-Vault-Token: <ваш-vault-token>