Секреты
Kazzle имеет встроенное зашифрованное хранилище для сохранения API-ключей, учетных данных базы данных, токенов и других конфиденциальных значений, необходимых вашему приложению. Секреты зашифрованы в покое с помощью AES-256-GCM с использованием ключей шифрования данных, обернутых KMS — открытые значения никогда не попадают в базу данных.Концепции
Коллекции группируют связанные секреты вместе (напримерstripe-keys, database-credentials). Каждая коллекция имеет slug (строчные буквы, через дефис), на который вы ссылаетесь в файлах конфигурации и командах CLI.
Окружения — это необязательные области видимости в коллекции (например production, staging). Секреты могут быть привязаны к конкретному окружению или оставлены на уровне коллекции как значения по умолчанию.
Порядок разрешения: при разрешении секретов для данной коллекции + окружения секреты, специфичные для окружения, переопределяют секреты уровня коллекции с тем же именем. Это позволяет вам делиться большинством секретов между окружениями, переопределяя конкретные значения для каждого окружения.
Управление секретами
В приложении
Откройте Settings > Vault для создания коллекций, окружений и секретов через интерфейс.С помощью AI
AI может создавать коллекции, создавать окружения, сохранять секреты, перемещать их между областями видимости и удалять их для вас. AI видит имена секретов и метаданные, но не зашифрованные значения.С помощью CLI
Ссылки на секреты из вашего приложения
Укажитеenv компонента на коллекцию секретов и окружение в kazzle.config.ts. Каждый секрет в этой области видимости внедряется как переменная окружения процесса, имя которой совпадает с именем секрета:
env.collection и env.environment — это slugs, а не отображаемые имена. Используйте env.include для внедрения только подмножества секретов коллекции:
Как секреты становятся переменными окружения
Когда секреты разрешаются для компонента:- Коллекция находится по slug в вашем пространстве
- Загружаются секреты, привязанные к указанному окружению
- Секреты уровня коллекции (без окружения) включаются как значения по умолчанию
- Секреты, специфичные для окружения, переопределяют секреты уровня коллекции с тем же именем
- Ссылки на секреты внутри значений разрешаются
- Имена секретов преобразуются в формат переменной окружения: прописные буквы, неалфавитно-цифровые символы становятся подчеркиваниями
Stripe Secret Key становится STRIPE_SECRET_KEY.
Каждый секрет имеет режим тела, который определяет, как он внедряется:
- Секреты
string(API-ключи, токены, URI) внедряются как простые скалярные строки - Секреты
json(структурированная конфигурация) внедряются как JSON-строки - Секреты
fields(учетные данные для входа, типизированные наборы полей) внедряются как JSON-строки
Когда секреты внедряются
| Контекст | Внедрено? | Детали |
|---|---|---|
| Deploy (компонент процесса) | Да | Добавлено как переменные окружения выполнения в production |
| Deploy (компонент UI) | Частично | Только секреты с префиксом VITE_* передаются во время сборки |
CLI (kazzle run) | Да | Внедрено в окружение команды |
CLI (secrets.export) | Да | Экспортировано как строки KEY=value |
| Dev preview | Еще нет | Стартер предпросмотра еще не разрешает компонент env — используйте kazzle run пока |
Ссылки на шаблоны
Значения секретов могут ссылаться на другие поля секретов с использованием того же синтаксиса, который Kazzle использует в других местах:${secret.<uuid>.<field>}— конкретное поле или путь JSON. Используйте этот формат для env/config приложения.${secret.<uuid>}— все тело секрета. Используйте только когда инструмент явно запрашивает весь необработанный секрет; не используйте это в env/config приложения.