Cerberus es un agente de seguridad diseñado para gestionar de forma segura sus claves API y credenciales. Proporciona un almacenamiento cifrado y acceso controlado, permitiendo que sus proyectos accedan a las claves de forma automática y segura a través de un servicio HTTP.
- Santuario Cifrado: Almacena claves API en un archivo cifrado (
.santuario_vault
). - Autenticación Segura: Acceso protegido por una contraseña maestra (variable de entorno
CERBERUS_MASTER_PASSWORD
). - Gestión de Claves: Permite añadir, actualizar, revocar y obtener claves de forma segura.
- Integración con Cronos: Registra metadatos de claves y eventos de respaldo en la bitácora de Cronos.
- Respaldo a la Nube: Permite respaldar el Santuario cifrado a Google Drive (requiere
rclone
). - Servicio HTTP: Expone un endpoint seguro para que sus proyectos soliciten claves API.
- Gestión con PM2: Se integra con PM2 para asegurar que el servicio esté siempre activo y se reinicie automáticamente.
Cerberus requiere Python 3 y las librerías cryptography
, rich
, requests
y cronos_manager
.
-
Clonar el Repositorio:
git clone https://github.com/Ingenuslab/cerberus-agent.git cd cerberus-agent
-
Instalar Dependencias:
pip install cryptography rich requests
Asegúrese de que
cronos_manager.py
esté accesible en suPYTHONPATH
o en el mismo directorio.
Para que Cerberus funcione como un servicio en segundo plano, se recomienda usar pm2
.
-
Establecer la Contraseña Maestra de Cerberus: Configure la variable de entorno
CERBERUS_MASTER_PASSWORD
con su contraseña maestra. Esta contraseña se utilizará para cifrar y descifrar el Santuario de claves.export CERBERUS_MASTER_PASSWORD="SuContraseñaMaestra"
-
Configurar el Token de Autenticación HTTP: Configure la variable de entorno
CERBERUS_HTTP_AUTH_TOKEN
con un token secreto que sus proyectos utilizarán para autenticarse con el servicio HTTP de Cerberus.export CERBERUS_HTTP_AUTH_TOKEN="SuTokenSecreto"
-
Configurar PM2: Asegúrese de tener
pm2
instalado (npm install -g pm2
). Luego, cree o actualice su archivoecosystem.config.js
para incluir Cerberus como un servicio. Un ejemplo de configuración se encuentra en el repositoriocronos-manager
.// Ejemplo de entrada en ecosystem.config.js para Cerberus { name: "cerberus-api", script: "cerberus_v1_1.py", interpreter: "python3", args: "--start_server 8081", // Puerto donde escuchará Cerberus env: { "CERBERUS_MASTER_PASSWORD": "SuContraseñaMaestra" }, watch: false, // ... otras configuraciones de PM2 }
-
Iniciar el Servicio con PM2:
pm2 start ecosystem.config.js
O si ya está configurado:
pm2 reload ecosystem.config.js
Una vez que Cerberus esté funcionando como un servicio, sus proyectos pueden obtener claves API enviando solicitudes HTTP GET.
- Endpoint:
http://localhost:8081/get_key/<nombre_de_la_clave>
- Encabezado de Autenticación:
X-Cerberus-Auth: SuTokenSecreto
Ejemplo (usando curl
):
curl -H "X-Cerberus-Auth: SuTokenSecreto" http://localhost:8081/get_key/GITHUB_PAT
Ejemplo (usando Python requests
):
import requests
import os
CERBERUS_HTTP_AUTH_TOKEN = os.getenv("CERBERUS_HTTP_AUTH_TOKEN")
headers = {"X-Cerberus-Auth": CERBERUS_HTTP_AUTH_TOKEN}
key_name = "GITHUB_PAT"
response = requests.get(f"http://localhost:8081/get_key/{key_name}", headers=headers)
if response.status_code == 200:
key_value = response.json().get("key")
print(f"Clave {key_name}: {key_value}")
else:
print(f"Error al obtener la clave: {response.status_code} - {response.text}")
También puede interactuar con Cerberus directamente desde la línea de comandos para gestionar claves o realizar respaldos.
-
Iniciar el Dashboard Interactivo:
python3 cerberus_v1_1.py
-
Obtener una Clave (no interactivo):
export CERBERUS_MASTER_PASSWORD="SuContraseñaMaestra" python3 cerberus_v1_1.py get_key GITHUB_PAT
-
Respaldar el Santuario a la Nube:
export CERBERUS_MASTER_PASSWORD="SuContraseñaMaestra" python3 cerberus_v1_1.py --backup
¡Las contribuciones son bienvenidas! Si desea mejorar Cerberus, por favor, envíe sus pull requests.