UStackUStack
AxKeyStore icon

AxKeyStore

AxKeyStore es una CLI open-source segura que gestiona secretos y contraseñas cifrando en el cliente y guardando solo datos cifrados en tu GitHub privado.

AxKeyStore

¿Qué es AxKeyStore?

AxKeyStore es una herramienta de interfaz de línea de comandos (CLI) segura y de código abierto para gestionar secretos, claves y contraseñas. Su propósito principal es permitirte usar tu propio repositorio privado de GitHub como almacenamiento cifrado, tratando a GitHub como almacenamiento no confiable.

Con AxKeyStore, el cifrado se realiza en el lado del cliente. Solo los datos cifrados se almacenan en el repositorio remoto de GitHub, y los secretos no se guardan en texto plano en el repositorio. La herramienta también evita almacenar secretos, claves maestras o contraseñas en forma no cifrada en el sistema de archivos local.

Características principales

  • Repositorio privado de GitHub como backend cifrado: Almacena secretos en un repositorio privado que controlas, usando blobs binarios cifrados.
  • Cifrado en el lado del cliente para todo el manejo de secretos: Los secretos se cifran en tu máquina antes de la subida; no se envían secretos en texto plano por la red.
  • Modelo de Cero Confianza / cifrado multicapa: Usa una Clave Maestra Local (LMK) para cifrar la configuración local (incluyendo tu token de acceso a GitHub y nombre del repositorio) y una Clave Maestra Remota (RMK) para cifrar los secretos almacenados.
  • Cifrado autenticado moderno y derivación de claves: El cifrado LMK usa Argon2id y XChaCha20-Poly1305; el esquema de tres capas está diseñado para que solo artefactos cifrados lleguen a GitHub.
  • Autenticación unificada vía GitHub Apps y Device Flow: Se autentica de forma segura usando GitHub Apps junto con Device Flow.
  • Flujo de CLI para inicialización y operaciones: Incluye comandos para iniciar sesión, inicializar un repositorio para almacenamiento y gestionar secretos con un conjunto simple de comandos.
  • Organización jerárquica por categorías: Organiza secretos en categorías como api/production/internal.
  • Soporte multiperfil: Gestiona múltiples bóvedas con diferentes inicios de sesión, contraseñas maestras y repositorios de GitHub.

Cómo usar AxKeyStore

  1. Instala la CLI: En macOS/Linux, ejecuta el script de instalación shell proporcionado. En Windows, ejecuta el script de instalación PowerShell proporcionado. Los scripts descargan el binario, lo colocan en $HOME/.axkeystore/bin y configuran tu PATH.
  2. Inicia sesión con tu cuenta de GitHub: Ejecuta axkeystore login. En el primer inicio de sesión, establece una Contraseña Maestra; esta contraseña se usa para cifrar el token de acceso local sensible de GitHub.
  3. Instala la App de GitHub requerida: Durante el inicio de sesión, la CLI proporciona un enlace para instalar la App de GitHub para tu usuario u organización. Debes instalar la app para otorgar acceso al repositorio.
  4. Inicializa un repositorio de almacenamiento: Ejecuta axkeystore init --repo <repo-name> (o incluye una organización/propietario como my-org/my-secret-store). Si el repo se inicializó antes en otra máquina, AxKeyStore te lo indicará durante la inicialización.

Tras la inicialización, puedes usar la CLI para almacenar y recuperar credenciales que viven como blobs cifrados en tu repositorio privado de GitHub.

Casos de uso

  • Almacena credenciales hospedadas en GitHub sin mantenerlas en texto plano: Guarda claves API, contraseñas y otros secretos en un repositorio privado donde solo se almacenan datos cifrados.
  • Separa secretos por entorno o dominio usando categorías: Organiza secretos bajo categorías jerárquicas como api/production/internal para navegar fácilmente entre entornos diferentes.
  • Gestiona múltiples bóvedas en diferentes repos de GitHub: Mantén perfiles separados para diferentes repositorios y contraseñas maestras, útil al trabajar en múltiples proyectos u organizaciones.
  • Bloquea el almacenamiento local de credenciales: Asegura que el token de acceso a GitHub y el nombre del repositorio (credenciales locales) estén cifrados con la Clave Maestra Local y protegidos por la Contraseña Maestra del usuario.
  • Uso entre máquinas con almacenamiento remoto no confiable: Inicializa el mismo repositorio cifrado en otra máquina (indicado durante init) para que el remoto solo contenga blobs cifrados mientras cada cliente maneja el cifrado.

Preguntas frecuentes

  • ¿AxKeyStore almacena secretos sin cifrar en GitHub? No. Los secretos se cifran en el lado del cliente y solo se almacenan blobs binarios cifrados en el repositorio privado de GitHub.

  • ¿Se envían claves de cifrado o contraseñas maestras por la red? El proyecto indica que ningún secreto, clave maestra o contraseña en texto plano toca la red. El cifrado ocurre puramente en tu máquina.

  • ¿Qué autenticación usa AxKeyStore? Usa GitHub Apps y Device Flow para autenticarse.

  • ¿Cómo protege AxKeyStore los datos localmente? Usa una Clave Maestra Local (LMK) cifrada con tu Contraseña Maestra usando Argon2id y XChaCha20-Poly1305, y la LMK cifra la configuración local como el token de acceso a GitHub y el nombre del repositorio.

  • ¿Qué sistemas operativos son compatibles con la instalación? El repositorio proporciona scripts de instalación para macOS/Linux (vía install.sh) y Windows (vía install.ps1).

Alternativas

  • Otros gestores de secretos basados en CLI con cifrado del lado del cliente: Busca herramientas que cifren secretos localmente y almacenen solo el texto cifrado en un backend remoto (modelo similar de almacenamiento no confiable), típicamente usando S3, Git u otro almacenamiento.
  • Gestores de contraseñas dedicados (aplicaciones basadas en vault): Usa una app local o vault de escritorio/móvil que gestione el cifrado y la sincronización; el flujo de trabajo difiere porque el backend lo gestiona el gestor de contraseñas en lugar de un repositorio GitHub privado que controlas.
  • Almacenamiento de secretos basado en Git con herramientas de cifrado: Algunos enfoques almacenan archivos cifrados en Git y dependen de tus herramientas de cifrado; comparado con AxKeyStore, tú gestionarías el flujo de trabajo de cifrado tú mismo en lugar de usar la CLI dedicada y su modelo de claves.
  • Gestores de secretos en la nube con cifrado gestionado: Servicios que almacenan secretos en un sistema gestionado; a diferencia del modelo descrito de AxKeyStore, el enfoque de almacenamiento no confiable del lado del cliente puede no ser el patrón de diseño principal.
AxKeyStore | UStack