UStackUStack
AxKeyStore favicon

AxKeyStore

AxKeyStore는 개인 GitHub 저장소를 암호화된 비신뢰 저장소로 사용하여 비밀 정보, 키 및 암호를 안전하게 관리하는 명령줄 도구입니다.

AxKeyStore

AxKeyStore란 무엇인가요?

AxKeyStore: GitHub 백업을 통한 안전한 비밀 관리

AxKeyStore란 무엇인가요?

AxKeyStore는 개발자와 보안에 민감한 사용자가 민감한 자격 증명, 키 및 암호를 안정적으로 저장하고 관리할 수 있도록 설계된 강력한 오픈 소스 명령줄 인터페이스(CLI) 도구입니다. 이 도구의 핵심 혁신은 기존의 개인 GitHub 저장소를 백엔드 저장 메커니즘으로 활용한다는 점입니다. 이 접근 방식은 보안을 희생하지 않으면서 클라우드 저장소의 이점(접근성, 버전 관리, 안정성)을 제공합니다. 단, GitHub는 엄격하게 비신뢰 저장소로 취급됩니다.

결정적으로, AxKeyStore는 절대적인 클라이언트 측 암호화 원칙에 따라 작동합니다. 비밀 정보 자체와 이를 암호화하는 데 사용되는 키를 포함한 모든 민감한 데이터는 전송 전에 사용자의 로컬 머신에서 완전히 처리됩니다. 결과적으로, 평문 비밀 정보, 마스터 키 또는 암호는 네트워크를 통과하거나 원격 서버 또는 로컬 파일 시스템에 암호화되지 않은 상태로 상주하지 않습니다. 이 제로 트러스트 아키텍처는 올바른 마스터 암호(Master Password)를 가진 사용자만이 볼트 데이터에 액세스하고 해독할 수 있도록 보장합니다.

주요 기능

  • 제로 트러스트 아키텍처: GitHub를 포함한 모든 외부 시스템은 신뢰할 수 없다는 원칙을 기반으로 구축되었습니다. 암호화는 필수이며 다중 계층으로 적용됩니다.
  • 3중 계층 암호화 체계:
    • 비밀 정보 암호화: 비밀 정보는 원격 마스터 키(RMK)를 사용하여 암호화됩니다.
    • RMK 암호화: RMK는 마스터 암호(클라이언트 측 암호화를 통해)를 사용하여 암호화됩니다.
    • 로컬 자격 증명 암호화: GitHub 토큰 및 저장소 이름과 같은 로컬 구성 세부 정보는 마스터 암호로 보호되는 로컬 마스터 키(LMK)를 사용하여 보호됩니다.
  • 고급 암호화: 인증된 암호화를 위해 최신 보안 알고리즘인 XChaCha20-Poly1305와 마스터 암호로부터 강력한 키 파생을 위해 Argon2id를 활용합니다.
  • GitHub를 백엔드 저장소로 사용: 사용자가 제어하는 모든 개인 GitHub 저장소에서 제공하는 무료, 버전 관리, 안정적인 저장소를 활용합니다.
  • 다중 프로필 지원: 각기 다른 로그인, 마스터 암호 및 관련 GitHub 저장소를 사용하여 여러 개의 독립적인 볼트를 쉽게 관리할 수 있습니다.
  • 계층적 구성: 비밀 정보를 카테고리 경로(예: api/production/internal)를 사용하여 논리적으로 구성할 수 있어 검색 및 관리가 향상됩니다.
  • 통합 인증: GitHub 앱과 장치 흐름(Device Flow) 메커니즘을 사용하여 안전하게 인증합니다.

AxKeyStore 사용 방법

AxKeyStore를 시작하려면 간단한 설치 후 초기 로그인 및 설정 프로세스를 거쳐야 합니다. 이 도구는 구성이 완료되면 사용 편의성을 염두에 두고 설계되었습니다.

1. 설치: 제공된 플랫폼별 스크립트를 사용하여 CLI 도구를 설치합니다.

  • macOS/Linux: curl -sSL https://raw.githubusercontent.com/basilgregory/axkeystore/main/install.sh | bash
  • Windows (PowerShell): powershell -c "irm https://raw.githubusercontent.com/basilgregory/axkeystore/main/install.ps1 | iex" 이 스크립트들은 바이너리를 PATH에 자동으로 배치하여 즉시 액세스할 수 있도록 합니다.

2. 초기 로그인 및 설정: 설정 시퀀스를 시작하려면 로그인 명령을 실행합니다. axkeystore login 이 첫 실행 중에 마스터 암호를 생성하고 확인하라는 메시지가 표시됩니다. 이 암호는 볼트 데이터를 해독하고 로컬 구성을 보호하는 궁극적인 키입니다. 암호 설정 후, CLI는 계정 또는 조직에 필요한 GitHub 애플리케이션을 설치하도록 안내하며, AxKeyStore가 지정된 개인 저장소에 읽기/쓰기 권한을 갖도록 허용합니다.

3. 비밀 정보 관리: 로그인 및 구성이 완료되면 간단한 명령을 사용하여 자격 증명을 저장하고 검색할 수 있습니다. 예를 들어, 새 비밀 정보를 저장하려면 카테고리와 키 이름을 지정해야 하며, 검색은 해당 명령을 사용하여 GitHub에서 암호화된 Blob을 가져온 후 로컬에서만 데이터를 해독하도록 보장합니다.

사용 사례

  1. CI/CD 파이프라인 비밀 정보 보호: 개발자는 자동화된 빌드 및 배포에 필요한 민감한 API 키, 배포 토큰 및 환경 변수를 개인 AxKeyStore 볼트에 저장하여 이러한 비밀 정보가 소스 제어에 커밋된 구성 파일에 하드 코딩되거나 노출되지 않도록 할 수 있습니다.
  2. 개인 개발자 자격 증명 관리: 개별 개발자는 모든 SSH 키, 클라우드 공급자 액세스 키(AWS, Azure, GCP) 및 데이터베이스 암호를 중앙 집중화할 수 있습니다. GitHub 저장소를 사용함으로써 자격 증명 로테이션 이벤트에 대한 버전 기록을 확보할 수 있습니다.
  3. 크로스 플랫폼 개발 환경: 저장소가 클라우드 기반(GitHub)이고 도구가 CLI 기반이므로 사용자는 로컬 머신, 개발 서버 또는 임시 워크스테이션 간에 원활하게 전환하며 초기 로그인/설정 후 필요한 비밀 정보에 안전하게 액세스할 수 있습니다.
  4. 소규모 팀 자격 증명 공유 (제한적): 주로 개인 보안을 위해 설계되었지만, 팀은 기본 비프로덕션 자격 증명 공유를 위해 전용 개인 저장소를 활용할 수 있으며, 이는 공유된 마스터 암호 지식에 의존합니다(최대 보안을 위해서는 개별 관리가 권장됨).

FAQ

Q: 마스터 암호를 잊어버리면 어떻게 되나요? A: AxKeyStore는 마스터 암호로 보호되는 강력한 클라이언트 측 다중 계층 암호화 방식을 사용하므로, 이를 잊어버리면 데이터에 영구적으로 액세스할 수 없습니다. 제로 트러스트 보안 모델을 엄격하게 준수하므로 복구 메커니즘은 없습니다.

Q: GitHub가 저장 위치일 때 내 데이터가 정말 안전한가요? A: 예. GitHub는 암호화된 바이너리 Blob만 저장합니다. GitHub가 손상되더라도 공격자는 마스터 암호로 보호되고 로컬 머신을 암호화되지 않은 상태로 벗어나지 않는 해독 키(RMK 및 LMK) 때문에 암호화된 데이터만 검색하게 됩니다.

Q: 저장소로 공개 저장소를 사용할 수 있나요? A: 아니요. AxKeyStore는 명시적으로 개인 GitHub 저장소를 요구합니다. 공개 저장소를 사용하면 모든 암호화된 비밀 정보가 외부에 노출되어 보안 아키텍처의 목적이 무산됩니다.

Q: AxKeyStore는 인증 및 권한 부여를 어떻게 처리하나요? A: 사용자가 설치해야 하는 전용 GitHub 애플리케이션을 사용합니다. 이 애플리케이션은 장치 흐름을 통해 안전한 인증을 촉진하고, 볼트로 지정된 특정 저장소에 대해서만 CLI에 필요한 권한(읽기/쓰기)을 부여합니다.

Q: 이 도구는 비용이 드나요? A: AxKeyStore는 MIT 라이선스에 따라 출시된 오픈 소스 프로젝트입니다. 도구 자체는 무료로 사용할 수 있습니다. 다만, 저장소로 GitHub를 사용하려면 개인 저장소를 무료로 제공하는 GitHub 계정이 필요합니다.

AxKeyStore | UStack