Перейти к основному содержимому
Версия: 1.12

Получение API-ключа Spirit

Spirit IAM выпускает API-ключи, которые используются для авторизации запросов, отправляющих телеметрию (логи, метрики, трейсы) в Sage. Значение ключа передается в запросе в заголовке Authorization: JWT <SPIRIT_API_KEY>.

Важно

API-ключ становится активным примерно через 30 минут после создания. До истечения этого срока запросы с ним будут отклоняться.

Чтобы выпустить ключ Spirit через API, выполните следующие шаги:

  1. Создайте полномочия (permissions).
  2. Создайте API-ключ.
  3. Проверьте его отправкой телеметрии.

Шаг 1. Создание полномочий​

Запрос регистрирует полномочия на запись телеметрии (sage.logs.write, sage.metrics.write, sage.traces.write), которые далее назначаются API-ключу.

Полномочие API-ключа задается именем с областью действия, которая записывается в виде URN — идентификатора формата urn:область:…. Различают два типа полномочий:

  • Тенант-специфичное полномочие — действует в пределах одного тенанта:

    urn:t:<tenant>:<permission>

    Пример: urn:t:sage:sage.metrics.write — полномочие на запись метрик в тенанте sage.

  • Глобальное полномочие — действует для всех тенантов:

    urn:g:<permission>

Отправьте запрос на хост со Spirit IAM. Узел, на котором развернут Spirit IAM, указан в инвентаре Ansible. Подробнее см. в статье Обзор конфигурации Sage.

curl \
--request PUT \
--url https://<iam-host>:5650/api/v2/api-keys/permissions \
--header 'Content-Type: application/json' \
--data '{
"kind": "Collection",
"contents": [
{
"kind": "Reference",
"resourceKind": "Permission",
"identifier": { "name": "name", "value": "sage.logs.write" }
},
{
"kind": "Reference",
"resourceKind": "Permission",
"identifier": { "name": "name", "value": "sage.metrics.write" }
},
{
"kind": "Reference",
"resourceKind": "Permission",
"identifier": { "name": "name", "value": "sage.traces.write" }
}
]
}'

Шаг 2. Создание API-ключа​

Отправьте следующий запрос, чтобы создать API-ключ в тенанте sage и назначить ему полномочия. В поле permissions укажите полномочия для вашего сценария — на запись логов, метрик и/или трейсов:

curl \
--request POST \
--url https://<iam-host>:5650/api/v2/tenants/sage/api-keys \
--header 'Content-Type: application/json' \
--data '{
"kind": "ApiKey",
"attributes": {
"name": "sage-api-key",
"aud": ["sage"],
"description": "api-key",
"permissions": [
"urn:t:sage:sage.traces.write"
]
}
}'
Примечание

В примере создается ключ с полномочием только на запись трейсов.

Шаг 3. Проверка API-ключа​

Чтобы убедиться, что ключ работает, отправьте тестовые данные того типа телеметрии, для которого ключу выданы полномочия.

Пример — отправка трейса в коллектор трассировки. В заголовке Authorization передайте созданный API-ключ:

curl \
--include \
--insecure \
--request POST \
--url https://<tracing-collector-host>/tracing-collector/v1/traces \
--header 'Content-Type: application/json' \
--header 'Authorization: JWT <SPIRIT_API_KEY>' \
--data @trace2.json

В результате будет создан трейс: тенант sage, сервис sage-service.

Примечание

Способы отправки логов, метрик и трейсов в Sage, а также требования к их формату описаны в руководстве пользователя. Подробнее см. в статьях Способы загрузки логов, Способы загрузки метрик и Настройка трассировки.