Секрети
Kazzle має вбудований зашифрований сейф для зберігання API ключів, облікових даних баз даних, токенів та інших конфіденційних значень, які потребує ваш додаток. Секрети зашифровані в спокої за допомогою AES-256-GCM з ключами шифрування даних, обгорнутими KMS — значення у відкритому вигляді ніколи не потрапляють до бази даних.Концепції
Колекції групують пов’язані секрети разом (наприкладstripe-keys, database-credentials). Кожна колекція має slug (малі літери, через дефіс), на який ви посилаєтесь у файлах конфігурації та командах CLI.
Середовища — це необов’язкові області видимості в межах колекції (наприклад production, staging). Секрети можуть бути обмежені конкретним середовищем або залишатися на рівні колекції як значення за замовчуванням.
Порядок розв’язання: при розв’язанні секретів для заданої колекції + середовища, секрети, специфічні для середовища, перевизначають секрети на рівні колекції з тим же ім’ям. Це дозволяє вам ділитися більшістю секретів між середовищами, перевизначаючи конкретні значення для кожного середовища.
Управління секретами
У додатку
Відкрийте Параметри > Сейф, щоб створювати колекції, середовища та секрети через інтерфейс.З 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 (компонент процесу) | Так | Додається як змінні середовища виконання у виробництві |
| Deploy (компонент UI) | Частково | Лише секрети з префіксом VITE_* передаються під час збірки |
CLI (kazzle run) | Так | Інжектується в середовище команди |
CLI (secrets.export) | Так | Експортується як рядки KEY=value |
| Попередній перегляд розробки | Ще ні | Стартер попереднього перегляду ще не розв’язує env компонента — поки що використовуйте kazzle run |
Посилання на шаблони
Значення секретів можуть посилатися на інші поля секретів з тим же синтаксисом, який Kazzle використовує в інших місцях:${secret.<uuid>.<field>}— конкретне поле або шлях JSON. Використовуйте цей формат для env/конфігурації додатку.${secret.<uuid>}— все тіло секрету. Використовуйте лише коли інструмент явно просить весь сирий секрет; не використовуйте це в env/конфігурації додатку.