소개
SecretSpec은 개발자가 다양한 비밀 저장소(secret provider)를 선언적인 방식으로 관리할 수 있도록 돕는 오픈소스 명령줄 도구입니다. secretspec.toml 파일에 필요한 비밀값의 정의를 작성하면, SecretSpec이 선택한 백엔드(예: 시스템 키체인, Bitwarden, Vault 등)에서 실제 값을 가져와 환경 변수로 주입합니다. 이를 통해 코드베이스에 비밀값을 하드코딩하지 않고도 안전하게 관리할 수 있습니다.
상세정보
SecretSpec이란?
SecretSpec은 개발 워크플로우에서 비밀값(API 키, 데이터베이스 자격 증명 등)을 안전하게 관리하기 위한 선언적 인터페이스를 제공하는 오픈소스 명령줄 도구입니다. secretspec.toml 파일에 필요한 비밀값의 이름과 설명을 정의하면, SecretSpec이 선택한 백엔드(예: 시스템 키체인, Bitwarden, Vault 등)에서 실제 값을 가져와 환경 변수로 주입합니다. 이를 통해 코드베이스에 비밀값을 하드코딩하지 않고도 안전하게 관리할 수 있습니다.
주요 기능
- 선언적 구성:
secretspec.toml파일에 비밀값의 스키마를 정의하고, 프로필별로 다른 값을 지정할 수 있습니다. - 다양한 백엔드 지원: 시스템 키체인(keyring), KeePass(KDBX), Bitwarden, HashiCorp Vault, OpenBao, Azure Key Vault, AWS Secrets Manager, Google Cloud Secret Manager 등 여러 비밀 저장소를 지원합니다.
- 환경 변수 주입:
secretspec run -- your-command명령으로 비밀값을 환경 변수로 설정한 상태에서 명령을 실행할 수 있습니다. - 기존 .env 파일 가져오기:
secretspec init명령으로 기존 .env 파일을 분석해secretspec.toml을 생성할 수 있습니다. - SDK 제공: Python, Ruby, Go, Node, Haskell, Rust 등 다양한 언어용 SDK를 제공하여 코드에서 직접 비밀값을 해석할 수 있습니다.
지원 환경
SecretSpec은 Windows, macOS, Linux에서 동작하는 명령줄 도구입니다. 일부 백엔드(예: Bitwarden Secrets Manager)는 공식 CLI가 별도로 필요할 수 있습니다.
기본 사용법
secretspec init명령으로secretspec.toml파일을 생성합니다. 기존 .env 파일이 있으면 자동으로 비밀값을 감지합니다.secretspec config global init명령으로 기본 백엔드(예: keyring)와 프로필을 설정합니다.secretspec check명령으로 모든 비밀값이 설정되었는지 확인합니다.secretspec run -- your-command명령으로 비밀값을 환경 변수로 주입한 상태에서 명령을 실행합니다.
제한 사항 및 참고 사항
- 일부 백엔드는 특정 버전 이상에서만 지원됩니다. 예를 들어 Bitwarden Password Manager는 0.18+에서 지원됩니다.
- Bitwarden Secrets Manager를 사용하려면 공식
bwsCLI가 필요합니다. - 비밀값의 실제 값은 백엔드에 저장되며,
secretspec.toml에는 정의만 포함됩니다.
자주 묻는 질문
SecretSpec은 무료인가요?
네, SecretSpec은 오픈소스 프로젝트로 무료로 사용할 수 있습니다.
기존 .env 파일을 사용 중인데 전환할 수 있나요?
네, secretspec init 명령으로 기존 .env 파일을 분석해 secretspec.toml을 생성할 수 있습니다.
어떤 비밀 저장소를 지원하나요?
시스템 키체인, KeePass, Bitwarden, Vault, OpenBao, Azure Key Vault, AWS Secrets Manager, Google Cloud Secret Manager 등 다양한 백엔드를 지원합니다. 자세한 목록은 공식 문서를 참고하세요.
시스템 요구사항
Windows, macOS, Linux에서 동작하는 명령줄 도구입니다. 일부 백엔드(예: Bitwarden Secrets Manager)는 공식 CLI가 별도로 필요할 수 있습니다.


