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 gruposadmysystemd-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 |