Permisos en servidores

Solo lectura por defecto. Elige un perfil de acceso y permite exactamente las carpetas y servicios que quieras.

Esta página trata de los servidores. Los permisos de un ordenador se eligen en su página del panel: mira Tu ordenador.

Por defecto: solo lectura y sin privilegios

El agente funciona con el usuario de sistema opsgate dentro de un entorno systemd reforzado. De entrada puede:

  • leer lo que puede leer un usuario normal: la configuración de /etc, las carpetas de aplicaciones legibles por todos y los logs (está en los grupos adm y systemd-journal),
  • ejecutar comandos de solo lectura de una lista permitida (ls, df, ps, git status, journalctl…),
  • consultar el estado de los servicios.

No puede escribir archivos, reiniciar servicios ni ejecutar nada como root hasta que lo permitas. Además, siempre están bloqueados: los archivos .env, las claves privadas (*.pem, *.key, id_rsa…), /etc/shadow, los gestores de contraseñas y los archivos del propio agente.

Elige cuánto puede hacer la IA: perfiles de acceso

sudo opsgate access          # un menú: elige lo que puede hacer la IA (también se ofrece al instalar)
sudo opsgate access readonly network    # o nombra los perfiles directamente
Perfil Qué añade Confirmación
readonly (siempre activo) Todo lo que se describe más abajo: leer archivos, logs, servicios y bases de datos. —
network curl para llamar a APIs (GET/POST con el cuerpo escrito en el comando). Sin archivos de salida, sin subidas, sin @archivo, solo http(s). Cada uso
asterisk Recargas de Asterisk: dialplan reload, pjsip reload, module reload… (nunca core restart ni originate). Cada uso
full Una terminal de root (run_shell), como entrar por SSH: cualquier comando, pipes, scripts, mysql con escritura, asterisk -rx. Tu app de IA pregunta antes de cada uso; todas las llamadas quedan en el registro de auditoría

Lo puedes cambiar cuando quieras: cada perfil solo añade a la base de solo lectura, y sudo opsgate access readonly lo quita todo. El acceso completo te pide escribir FULL, añade una regla sudo para el usuario del agente y relaja el entorno protegido del servicio para que una terminal de root funcione con normalidad; al desactivarlo se quitan las dos cosas. Úsalo solo en servidores tuyos y protege el inicio de sesión del conector (sudo opsgate 2fa on).

Dejar que la IA edite archivos de una carpeta

sudo opsgate allow-write /var/www/miapp
sudo opsgate allow-write /etc/nginx/sites-available /etc/nginx/snippets
sudo opsgate deny-write /etc/nginx/snippets

Esto da acceso al usuario opsgate mediante ACL (tus archivos mantienen su propietario y permisos) y abre la carpeta en el entorno systemd. Los archivos secretos de dentro (.env, claves…) reciben una entrada explícita de sin acceso. Los árboles de sistema completos (/, /etc, /usr, /var, /home…) se rechazan: permite carpetas concretas.

Incluso con permiso de escritura, la IA debe mostrarte un diff y obtener tu confirmación antes de cada escritura, y antes se guarda una copia en /var/backups/opsgate.

Dejar que lea una carpeta privada

Si una carpeta no la pueden leer los usuarios normales (por ejemplo /home/deploy/app con modo 700):

sudo opsgate allow-read /home/deploy/app

Dejar que reinicie servicios

sudo opsgate allow-restart nginx miapp
sudo opsgate deny-restart miapp

Cada servicio permitido recibe dos reglas sudo exactas, systemctl restart <nombre> y una recarga suave (HUP al proceso principal), en /etc/sudoers.d/opsgate, validadas con visudo. Nada más puede ejecutarse como root. Los reinicios también necesitan tu confirmación en el chat.

Bases de datos (MySQL / MariaDB)

sudo opsgate db miapp_produccion

Crea el usuario de base de datos opsgate_ro@127.0.0.1 con solo SELECT sobre esa base y configura db_query. Las consultas se limitan a SELECT, SHOW, DESCRIBE y EXPLAIN, una sentencia cada vez.

Asterisk

Si Asterisk está instalado, asterisk_cli puede ejecutar comandos de solo lectura (pjsip show …, core show channels, dialplan show …) a través de un envoltorio de root que vuelve a comprobar cada comando. Con el perfil asterisk también puede ejecutar recargas, cada una tras tu confirmación.

Ver lo que está permitido

sudo opsgate permissions

Ajustes avanzados

sudo opsgate config get
sudo opsgate config set MCP_READ_ROOTS=/opt/app,/var/log,/etc/nginx   # limitar la lectura a estas carpetas
sudo opsgate config set MCP_RUN_ALLOWED="ls,cat,head,tail,grep,df,free,uptime,ps,git status,git log"
sudo opsgate config unset MCP_READ_ROOTS
Ajuste Por defecto Significado
MCP_READ_ROOTS / Carpetas que pueden leer las herramientas (separadas por comas)
MCP_WRITE_ROOTS / Carpetas en las que pueden escribir; el sistema sigue limitando la escritura a las que permitiste
MCP_LOG_ROOTS /var/log Carpetas que puede leer tail_log
MCP_RUN_ALLOWED comandos de lectura Comandos que run_command puede ejecutar sin confirmación
MCP_RUN_CONFIRM git pull,git checkout,cp,mv,mkdir,touch,chmod,ln Comandos que necesitan confirm=true
MCP_RATE_PER_MIN 120 Máximo de llamadas por minuto, por app conectada
MCP_DENY_NAMES .env, claves… Patrones de nombres de archivo que nunca se pueden leer
MCP_MAX_OUTPUT 20000 Máximo de caracteres devueltos por llamada