Chuyển đến nội dung chính

Bí mật

Kazzle có một kho lưu trữ được mã hóa tích hợp để lưu trữ khóa API, thông tin xác thực cơ sở dữ liệu, token và các giá trị nhạy cảm khác mà ứng dụng của bạn cần. Bí mật được mã hóa khi lưu trữ bằng AES-256-GCM sử dụng khóa mã hóa dữ liệu được bao bọc bởi KMS — các giá trị văn bản thuần túy không bao giờ chạm vào cơ sở dữ liệu.

Khái niệm

Bộ sưu tập nhóm các bí mật liên quan với nhau (ví dụ: stripe-keys, database-credentials). Mỗi bộ sưu tập có một slug (chữ thường, có dấu gạch ngang) mà bạn tham chiếu trong các tệp cấu hình và lệnh CLI. Môi trường là các phạm vi tùy chọn trong một bộ sưu tập (ví dụ: production, staging). Bí mật có thể được giới hạn trong một môi trường cụ thể hoặc để ở cấp bộ sưu tập dưới dạng mặc định. Thứ tự phân giải: khi phân giải bí mật cho một bộ sưu tập + môi trường nhất định, bí mật dành riêng cho môi trường sẽ ghi đè bí mật cấp bộ sưu tập có cùng tên. Điều này cho phép bạn chia sẻ hầu hết bí mật trên các môi trường trong khi ghi đè các giá trị cụ thể cho từng môi trường.

Quản lý bí mật

Trong ứng dụng

Mở Cài đặt > Vault để tạo bộ sưu tập, môi trường và bí mật thông qua giao diện người dùng.

Với AI

AI có thể tạo bộ sưu tập, tạo môi trường, lưu trữ bí mật, di chuyển chúng giữa các phạm vi và xóa chúng cho bạn. AI nhìn thấy tên bí mật và siêu dữ liệu nhưng không nhìn thấy các giá trị được mã hóa.

Với CLI

# Chạy lệnh với bí mật được tiêm dưới dạng biến env
kazzle run --collection=stripe-keys --env=production -- bun run server.ts

# Xuất bí mật dưới dạng dòng KEY=value
kazzle secrets.export --collection=stripe-keys --env=production

Tham chiếu bí mật từ ứng dụng của bạn

Trỏ env của một thành phần tới một bộ sưu tập bí mật và môi trường trong kazzle.config.ts. Mỗi bí mật trong phạm vi đó được tiêm dưới dạng biến env quy trình có tên khớp với tên bí mật:
import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    {
      name: 'API Server',
      type: 'process',
      path: './server',
      env: {
        collection: 'stripe-keys',
        environment: 'production'
      }
    }
  ]
});
env.collectionenv.environmentslug, không phải tên hiển thị. Sử dụng env.include để tiêm chỉ một tập hợp con các bí mật của bộ sưu tập:
env: {
  collection: 'stripe-keys',
  environment: 'production',
  include: ['STRIPE_SECRET_KEY']
}

Cách bí mật trở thành biến env

Khi bí mật được phân giải cho một thành phần:
  1. Bộ sưu tập được tìm thấy theo slug trong không gian của bạn
  2. Bí mật được giới hạn trong môi trường được chỉ định được tải
  3. Bí mật cấp bộ sưu tập (không có môi trường) được bao gồm dưới dạng mặc định
  4. Bí mật dành riêng cho môi trường ghi đè bí mật cấp bộ sưu tập có cùng tên
  5. Tham chiếu bí mật bên trong các giá trị được phân giải
  6. Tên bí mật được chuyển đổi thành định dạng biến env: chữ hoa, các ký tự không phải chữ và số trở thành dấu gạch dưới
Một bí mật có tên Stripe Secret Key trở thành STRIPE_SECRET_KEY. Mỗi bí mật có một chế độ nội dung xác định cách nó được tiêm:
  • Bí mật string (khóa API, token, URI) được tiêm dưới dạng chuỗi vô hướng thuần túy
  • Bí mật json (cấu hình có cấu trúc) được tiêm dưới dạng chuỗi JSON
  • Bí mật fields (thông tin xác thực đăng nhập, túi trường được nhập) được tiêm dưới dạng chuỗi JSON

Khi bí mật được tiêm

Bối cảnhĐược tiêm?Chi tiết
Triển khai (thành phần quy trình)Được thêm dưới dạng biến môi trường thời gian chạy trong sản xuất
Triển khai (thành phần UI)Một phầnChỉ bí mật có tiền tố VITE_* được chuyển tại thời gian xây dựng
CLI (kazzle run)Được tiêm vào môi trường của lệnh
CLI (secrets.export)Được xuất dưới dạng dòng KEY=value
Xem trước phát triểnChưaTrình khởi động xem trước không phân giải env thành phần chưa — sử dụng kazzle run hiện tại

Tham chiếu mẫu

Giá trị bí mật có thể tham chiếu các trường bí mật khác bằng cú pháp tương tự mà Kazzle sử dụng ở nơi khác:
postgresql://${secret.123e4567-e89b-12d3-a456-426614174000.username}:${secret.123e4567-e89b-12d3-a456-426614174000.password}@db.example.com:5432/mydb
Các định dạng được hỗ trợ:
  • ${secret.<uuid>.<field>} — trường cụ thể hoặc đường dẫn JSON. Sử dụng định dạng này cho env/cấu hình ứng dụng.
  • ${secret.<uuid>} — toàn bộ nội dung bí mật. Chỉ sử dụng khi một công cụ yêu cầu rõ ràng toàn bộ bí mật thô; không sử dụng trong env/cấu hình ứng dụ