Hubris

Аутентификация

API-ключи Hubris в формате sk-gw-, заголовок Bearer, безопасное хранение и ротация.

Аутентификация

Все запросы к Hubris авторизуются API-ключом в заголовке Authorization: Bearer sk-gw-<32-hex>. Это совместимо с OpenAI SDK и большинством ML-инструментов.

Создание ключа

  1. Войдите в /keys.
  2. Нажмите «Новый ключ», задайте описательное имя (например, «production-bot», «dev-laptop»).
  3. Скопируйте ключ сразу — он показывается один раз. Hubris хранит только хеш ключа (sha256), восстановить полное значение невозможно.
  4. Сохраните в менеджер паролей или переменную окружения HUBRIS_API_KEY.

Формат ключа

sk-gw- + 32 шестнадцатеричных символа (16 байт случайных данных). Пример:

sk-gw-a1b2c3d4e5f6789012345678901234ab

В UI показывается префикс sk-gw-a1b2...34ab — этого достаточно, чтобы отличить ключи между собой, но недостаточно для использования.

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

Заголовок: Authorization: Bearer sk-gw-.... Например, через cURL:

curl https://api.hubris.pw/v1/models \
  -H "Authorization: Bearer sk-gw-..."

В OpenAI SDK ключ передаётся через параметр api_key или env-переменную:

from openai import OpenAI
client = OpenAI(api_key="sk-gw-...", base_url="https://api.hubris.pw/v1")
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "sk-gw-...", baseURL: "https://api.hubris.pw/v1" });

Что делать, если ключ скомпрометирован

  1. Откройте /keys.
  2. Найдите подозрительный ключ по префиксу или имени.
  3. Нажмите «Отозвать» — ключ немедленно перестаёт работать.
  4. Создайте новый ключ и обновите его во всех местах использования.

Безопасное хранение

  • Никогда не коммитьте ключи в git — добавьте .env файлы в .gitignore.
  • Не отправляйте ключи в логи, аналитику или error-tracking. Hubris не логирует содержимое запросов, но сторонние сервисы могут.
  • Ротируйте ключи при смене работы, выходе сотрудника, передаче кода подрядчику. Это секунда работы — старый отозвать, новый создать.
  • Один ключ — одна цель. Отдельные ключи на dev / staging / production упрощают аудит и быструю ревокацию при инциденте.

Лимиты на ключе

В стандартном тарифе у пользовательских ключей нет искусственных лимитов — расход ограничен только балансом аккаунта. Служебные ключи (CI, скрипты) могут получить дневной лимит в копейках при создании — это страховка от утечки. Подробнее — в разделе про rate limits (готовится).

Ошибки аутентификации

GET/v1/models

Без заголовка или с невалидным ключом возвращается 401:

{
  "error": {
    "message": "Missing API key",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}

Если ключ был отозван — то же самое: 401 с code: "invalid_api_key".

Что дальше