UStackUStack
AxKeyStore icon

AxKeyStore

AxKeyStore는 보안 오픈소스 CLI로, 비밀과 비밀번호를 클라이언트에서 암호화해 개인 GitHub 저장소에 암호화 데이터만 저장합니다.

AxKeyStore

AxKeyStore란?

AxKeyStore는 비밀, 키, 비밀번호를 관리하는 보안 오픈소스 명령줄 인터페이스(CLI) 도구입니다. 핵심 목적은 개인 GitHub 저장소를 암호화 저장소로 사용하면서 GitHub를 신뢰할 수 없는 저장소로 취급하는 것입니다.

AxKeyStore에서는 클라이언트 측에서 암호화가 이루어집니다. 원격 GitHub 저장소에 저장되는 것은 암호화된 데이터이며, 저장소에 평문 비밀이 보관되지 않습니다. 이 도구는 로컬 파일 시스템에 비밀, 마스터 키, 비밀번호를 암호화되지 않은 형태로 저장하지 않습니다.

주요 기능

  • GitHub 개인 저장소를 암호화 백엔드로 사용: 사용자가 제어하는 개인 저장소에 암호화된 바이너리 블롭으로 비밀을 저장합니다.
  • 모든 비밀 처리에 클라이언트 측 암호화: 업로드 전에 로컬 머신에서 비밀을 암호화합니다. 평문 비밀이 네트워크로 전송되지 않습니다.
  • 제로 트러스트 / 다층 암호화 모델: 로컬 구성(예: GitHub 액세스 토큰 및 저장소 이름)을 암호화하는 Local Master Key(LMK)와 실제 저장된 비밀을 암호화하는 Remote Master Key(RMK)를 사용합니다.
  • 현대적 인증 암호화 및 키 유도: LMK 암호화는 Argon2id와 XChaCha20-Poly1305를 사용합니다. 3단계 체계로 GitHub에 도달하는 것은 암호화된 아티팩트만입니다.
  • GitHub Apps 및 Device Flow를 통한 통합 인증: GitHub Apps와 Device Flow를 함께 사용하여 안전하게 인증합니다.
  • 초기화 및 작업을 위한 CLI 워크플로: 로그인, 저장소 초기화, 간단한 명령 세트로 비밀 관리 명령을 포함합니다.
  • 계층적 카테고리 구성: api/production/internal 같은 카테고리로 비밀을 구성합니다.
  • 다중 프로필 지원: 서로 다른 로그인, 마스터 비밀번호, GitHub 저장소로 여러 볼트 관리.

AxKeyStore 사용 방법

  1. CLI 설치: macOS/Linux에서는 제공된 셸 설치 스크립트를 실행합니다. Windows에서는 PowerShell 설치 스크립트를 실행합니다. 스크립트는 바이너리를 다운로드하여 $HOME/.axkeystore/bin에 배치하고 PATH를 구성합니다.
  2. GitHub 계정으로 로그인: axkeystore login을 실행합니다. 첫 로그인 시 Master Password를 설정합니다. 이 비밀번호는 민감한 로컬 GitHub 액세스 토큰을 암호화하는 데 사용됩니다.
  3. 필수 GitHub App 설치: 로그인 중 CLI가 사용자 또는 조직용 GitHub App 설치 링크를 제공합니다. 저장소 액세스 권한을 부여하려면 앱을 설치해야 합니다.
  4. 저장소 초기화: axkeystore init --repo <repo-name>을 실행합니다(또는 my-org/my-secret-store처럼 조직/소유자를 포함). 다른 머신에서 이전에 초기화된 경우 초기화 과정에서 프롬프트가 나타납니다.

초기화 후 CLI를 사용하여 개인 GitHub 저장소에 암호화된 블롭으로 저장 및 검색할 수 있습니다.

사용 사례

  • 평문으로 보관하지 않고 GitHub 호스팅 자격 증명 저장: API 키, 비밀번호, 기타 비밀을 암호화된 데이터만 저장되는 개인 저장소에 보관합니다.
  • 카테고리로 환경 또는 도메인별 비밀 분리: api/production/internal 같은 계층적 카테고리로 다른 환경을 쉽게 탐색할 수 있도록 구성합니다.
  • 여러 GitHub 저장소 간 다중 볼트 관리: 여러 프로젝트 또는 조직 작업 시 유용한 별도 프로필, 저장소, 마스터 비밀번호 유지.
  • 로컬 자격 증명 저장 잠금: GitHub 액세스 토큰과 저장소 이름(로컬 자격 증명)을 Local Master Key로 암호화하고 사용자 Master Password로 보호.
  • 신뢰할 수 없는 원격 저장소로 크로스 머신 사용: 다른 머신에서 동일한 암호화 저장소 초기화(초기화 시 프롬프트)로 원격에 암호화 블롭만 보관하고 각 클라이언트가 암호화 처리.

자주 묻는 질문

  • AxKeyStore가 GitHub에 비밀을 암호화하지 않고 저장하나요? 아니요. 비밀은 클라이언트 측에서 암호화되며, 개인 GitHub 저장소에는 암호화된 바이너리 블롭만 저장됩니다.

  • 암호화 키나 마스터 비밀번호가 네트워크로 전송되나요? 프로젝트 설명에 따라 평문 비밀, 마스터 키, 비밀번호가 네트워크에 노출되지 않습니다. 암호화는 순수하게 로컬 머신에서 이루어집니다.

  • AxKeyStore가 어떤 인증을 사용하나요? GitHub Apps와 Device Flow를 사용하여 인증합니다.

  • AxKeyStore가 로컬 데이터를 어떻게 보호하나요? Master Password로 Argon2id와 XChaCha20-Poly1305를 사용하여 Local Master Key(LMK)를 암호화하고, LMK로 GitHub 액세스 토큰 및 저장소 이름 같은 로컬 구성을 암호화합니다.

  • 설치 지원 운영 체제는? 저장소에서 macOS/Linux(install.sh) 및 Windows(install.ps1)용 설치 스크립트를 제공합니다.

대안

  • 클라이언트 측 암호화를 지원하는 다른 CLI 기반 비밀 관리 도구: 로컬에서 비밀을 암호화한 후 원격 백엔드(비슷한 신뢰되지 않는 저장 모델)에 암호문만 저장하는 도구를 찾으세요. 일반적으로 S3, Git 또는 기타 저장소를 사용합니다.
  • 전용 비밀번호 관리자(볼트 기반 앱): 암호화와 동기화를 관리하는 로컬 앱이나 데스크톱/모바일 볼트를 사용하세요. 워크플로가 다릅니다. 백엔드가 비밀번호 관리자가 관리하는 반면 AxKeyStore는 사용자가 제어하는 개인 GitHub 저장소를 사용합니다.
  • 암호화 도구를 사용한 Git 기반 비밀 저장: 일부 방법은 Git에 암호화된 파일을 저장하고 암호화 도구에 의존합니다. AxKeyStore와 비교해 암호화 워크플로를 직접 관리해야 하며 전용 CLI와 키 모델을 사용하지 않습니다.
  • 관리형 암호화를 제공하는 클라우드 비밀 관리 서비스: 관리형 시스템에 비밀을 저장하는 서비스입니다. AxKeyStore의 설명된 모델과 달리 클라이언트 측 신뢰되지 않는 저장 접근 방식이 주요 설계 패턴이 아닐 수 있습니다.
AxKeyStore | UStack