시크릿
Kazzle은 API 키, 데이터베이스 자격증명, 토큰 및 앱에 필요한 기타 민감한 값을 저장하기 위한 내장 암호화 저장소를 제공합니다. 시크릿은 KMS로 래핑된 데이터 암호화 키를 사용하여 AES-256-GCM으로 저장 시 암호화되며, 평문 값은 데이터베이스에 절대 저장되지 않습니다.개념
컬렉션은 관련 시크릿을 함께 그룹화합니다(예:stripe-keys, database-credentials). 모든 컬렉션에는 설정 파일과 CLI 명령에서 참조하는 슬러그(소문자, 하이픈 구분)가 있습니다.
환경은 컬렉션 내의 선택적 범위입니다(예: production, staging). 시크릿은 특정 환경으로 범위를 지정하거나 컬렉션 수준에서 기본값으로 남겨둘 수 있습니다.
해석 순서: 주어진 컬렉션 + 환경에 대해 시크릿을 해석할 때, 환경별 시크릿이 같은 이름의 컬렉션 수준 시크릿을 재정의합니다. 이를 통해 대부분의 시크릿을 환경 간에 공유하면서 환경별로 특정 값을 재정의할 수 있습니다.
시크릿 관리
앱에서
설정 > 저장소를 열어 UI를 통해 컬렉션, 환경 및 시크릿을 생성합니다.AI와 함께
AI는 컬렉션을 생성하고, 환경을 생성하고, 시크릿을 저장하고, 범위 간에 이동하고, 삭제할 수 있습니다. AI는 시크릿 이름과 메타데이터는 볼 수 있지만 암호화된 값은 볼 수 없습니다.CLI 사용
앱에서 시크릿 참조
kazzle.config.ts에서 컴포넌트의 env를 시크릿 컬렉션과 환경으로 지정합니다. 해당 범위의 모든 시크릿은 시크릿 이름과 일치하는 이름의 프로세스 환경 변수로 주입됩니다:
env.collection과 env.environment는 슬러그이며, 표시 이름이 아닙니다. env.include를 사용하여 컬렉션의 시크릿 중 일부만 주입합니다:
시크릿이 환경 변수가 되는 방식
컴포넌트에 대해 시크릿이 해석될 때:- 슬러그로 스페이스 내에서 컬렉션을 찾습니다
- 지정된 환경으로 범위가 지정된 시크릿을 로드합니다
- 컬렉션 수준 시크릿(환경 없음)을 기본값으로 포함합니다
- 환경별 시크릿이 같은 이름의 컬렉션 수준 시크릿을 재정의합니다
- 값 내의 시크릿 참조를 해석합니다
- 시크릿 이름을 환경 변수 형식으로 변환합니다: 대문자로 변환, 영숫자가 아닌 문자는 밑줄이 됩니다
Stripe Secret Key라는 이름의 시크릿은 STRIPE_SECRET_KEY가 됩니다.
각 시크릿에는 주입 방식을 결정하는 본문 모드가 있습니다:
string시크릿(API 키, 토큰, URI)은 평문 스칼라 문자열로 주입됩니다json시크릿(구조화된 설정)은 JSON 문자열로 주입됩니다fields시크릿(로그인 자격증명, 타입 지정 필드 모음)은 JSON 문자열로 주입됩니다
시크릿이 주입되는 시점
템플릿 참조
시크릿 값은 Kazzle이 다른 곳에서 사용하는 것과 동일한 구문으로 다른 시크릿 필드를 참조할 수 있습니다:${secret.<uuid>.<field>}— 저장소 참조가 활성화된 시크릿 값 또는 도구 매개변수 내의 특정 필드 또는 JSON 경로.${secret.<uuid>}— 전체 시크릿 본문. 도구가 전체 원본 시크릿을 명시적으로 요청할 때만 사용하며, 앱 env/config에서는 사용하지 마세요.