Skip to content

Inghenius-Lab/cerberus-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Agente Cerberus - Maestro de Llaves y Guardián Criptográfico del Santuario

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.

Características Principales

  • 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.

Instalación

Cerberus requiere Python 3 y las librerías cryptography, rich, requests y cronos_manager.

  1. Clonar el Repositorio:

    git clone https://github.com/Ingenuslab/cerberus-agent.git
    cd cerberus-agent
  2. Instalar Dependencias:

    pip install cryptography rich requests

    Asegúrese de que cronos_manager.py esté accesible en su PYTHONPATH o en el mismo directorio.

Configuración y Uso como Servicio (con PM2)

Para que Cerberus funcione como un servicio en segundo plano, se recomienda usar pm2.

  1. 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"
  2. 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"
  3. Configurar PM2: Asegúrese de tener pm2 instalado (npm install -g pm2). Luego, cree o actualice su archivo ecosystem.config.js para incluir Cerberus como un servicio. Un ejemplo de configuración se encuentra en el repositorio cronos-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
    }
  4. Iniciar el Servicio con PM2:

    pm2 start ecosystem.config.js

    O si ya está configurado:

    pm2 reload ecosystem.config.js

Interacción con el Servicio HTTP de Cerberus

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}")

Uso Interactivo (CLI)

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

Contribución

¡Las contribuciones son bienvenidas! Si desea mejorar Cerberus, por favor, envíe sus pull requests.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages