Получение API-ключа Spirit
Spirit IAM выпускает API-ключи, которые используются для авторизации запросов, отправляющих телеметрию (логи, метрики, трейсы) в Sage. Значение ключа передается в запросе в заголовке Authorization: JWT <SPIRIT_API_KEY>.
API-ключ становится активным примерно через 30 минут после создания. До истечения этого срока запросы с ним будут отклоняться.
Чтобы выпустить ключ Spirit через API, выполните следующие шаги:
- Создайте полномочия (
permissions). - Создайте API-ключ.
- Проверьте его отправкой телеметрии.
Шаг 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, а также требования к их формату описаны в руководстве пользователя. Подробнее см. в статьях Способы загрузки логов, Способы загрузки метрик и Настройка трассировки.