Skip to main content

Секреты

Kazzle имеет встроенное зашифрованное хранилище для сохранения API-ключей, учетных данных базы данных, токенов и других конфиденциальных значений, необходимых вашему приложению. Секреты зашифрованы в покое с помощью AES-256-GCM с использованием ключей шифрования данных, обернутых KMS — открытые значения никогда не попадают в базу данных.

Концепции

Коллекции группируют связанные секреты вместе (например, stripe-keys, database-credentials). Каждая коллекция имеет slug (строчные буквы, через дефис), на который вы ссылаетесь в файлах конфигурации и командах CLI. Окружения — это необязательные области видимости в коллекции (например, production, staging). Секреты могут быть привязаны к конкретному окружению или оставлены на уровне коллекции как значения по умолчанию. Порядок разрешения: при разрешении секретов для данной коллекции + окружения секреты, специфичные для окружения, переопределяют секреты уровня коллекции с тем же именем. Это позволяет вам делиться большинством секретов между окружениями, переопределяя конкретные значения для каждого окружения.

Управление секретами

В приложении

Откройте Settings > Vault для создания коллекций, окружений и секретов через интерфейс.

С помощью ИИ

ИИ может создавать коллекции, создавать окружения, сохранять секреты, перемещать их между областями видимости и удалять их для вас. ИИ видит имена секретов и метаданные, но не зашифрованные значения.

С помощью CLI

Ссылки на секреты из вашего приложения

Укажите env компонента на коллекцию секретов и окружение в kazzle.config.ts. Каждый секрет в этой области видимости внедряется как переменная окружения процесса, имя которой совпадает с именем секрета:
env.collection и env.environment — это slugs, а не отображаемые имена. Используйте env.include для внедрения только подмножества секретов коллекции:

Как секреты становятся переменными окружения

Когда секреты разрешаются для компонента:
  1. Коллекция находится по slug в вашем пространстве
  2. Загружаются секреты, привязанные к указанному окружению
  3. Секреты уровня коллекции (без окружения) включаются как значения по умолчанию
  4. Секреты, специфичные для окружения, переопределяют секреты уровня коллекции с тем же именем
  5. Ссылки на секреты внутри значений разрешаются
  6. Имена секретов преобразуются в формат переменной окружения: прописные буквы, неалфавитно-цифровые символы становятся подчеркиваниями
Секрет с именем Stripe Secret Key становится STRIPE_SECRET_KEY. Каждый секрет имеет режим тела, который определяет, как он внедряется:
  • Секреты string (API-ключи, токены, URI) внедряются как простые скалярные строки
  • Секреты json (структурированная конфигурация) внедряются как JSON-строки
  • Секреты fields (учетные данные для входа, типизированные наборы полей) внедряются как JSON-строки

Когда внедряются секреты

Ссылки на шаблоны

Значения секретов могут ссылаться на другие поля секретов с использованием того же синтаксиса, который Kazzle использует в других местах:
Поддерживаемые форматы:
  • ${secret.<uuid>.<field>} — конкретное поле или путь JSON внутри значений секретов или параметров инструмента, где включены ссылки на хранилище.
  • ${secret.<uuid>} — все тело секрета. Используйте только когда инструмент явно запрашивает весь необработанный секрет; не используйте это в конфигурации/окружении приложения.
Ссылки разрешаются после загрузки секретов. Циклические или неработающие ссылки приводят к ошибке вместо молчаливого отката.