docs: documentar control de acceso en creating-agents.md
Añadir sección de control de acceso con los tres niveles: - Nivel 1: allowlist de usuarios (allowed_users) - Nivel 2: invite gating (auto-join restringido) - Nivel 3: RBAC por acción (security.roles) Incluye tabla de acciones disponibles y nota de retrocompatibilidad. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -345,6 +345,59 @@ openssl rand -hex 32 # → guardar como PICKLE_KEY_<AGENT> en .env
|
||||
tail -f run/<id>.log
|
||||
```
|
||||
|
||||
## Control de acceso
|
||||
|
||||
El sistema de control de acceso permite restringir quién puede interactuar con cada agente. Tiene tres niveles independientes:
|
||||
|
||||
### Nivel 1 — Allowlist de usuarios
|
||||
|
||||
Restringe qué usuarios pueden enviar mensajes al bot. Si la lista está vacía, todos pueden hablar (comportamiento por defecto).
|
||||
|
||||
```yaml
|
||||
matrix:
|
||||
filters:
|
||||
allowed_users:
|
||||
- "@admin:matrix-af2f3d.organic-machine.com"
|
||||
- "@enmanuel:matrix-af2f3d.organic-machine.com"
|
||||
unauthorized_response: silent # silent (default) | explicit
|
||||
```
|
||||
|
||||
- `silent`: ignora mensajes de usuarios no autorizados (como si el bot no existiera)
|
||||
- `explicit`: responde con "No tienes permisos para interactuar con este agente"
|
||||
|
||||
### Nivel 2 — Invite gating
|
||||
|
||||
Si `allowed_users` está configurado, el bot solo acepta invites a salas de usuarios en la lista. Invites de usuarios no autorizados se ignoran silenciosamente.
|
||||
|
||||
### Nivel 3 — RBAC por acción
|
||||
|
||||
Conecta los roles de `security.roles` para controlar qué acciones puede ejecutar cada usuario:
|
||||
|
||||
```yaml
|
||||
security:
|
||||
roles:
|
||||
admin:
|
||||
users: ["@admin:matrix-af2f3d.organic-machine.com"]
|
||||
actions: ["*"] # acceso total
|
||||
user:
|
||||
users: ["*"] # todos los demás
|
||||
actions: ["ask", "help", "command:help", "command:ping"]
|
||||
```
|
||||
|
||||
**Acciones disponibles:**
|
||||
|
||||
| Acción | Qué protege |
|
||||
|--------|-------------|
|
||||
| `*` | Todo (wildcard) |
|
||||
| `ask` | Hablar con el LLM (mensajes de texto libre) |
|
||||
| `command:*` | Todos los comandos `!xxx` |
|
||||
| `command:<name>` | Un comando específico (ej: `command:tool`) |
|
||||
| `tool:*` | Todas las tools vía LLM |
|
||||
| `tool:<name>` | Una tool específica (ej: `tool:ssh_command`) |
|
||||
| `help` | Comandos informativos (`!help`, `!info`, `!status`) |
|
||||
|
||||
**Retrocompatibilidad:** si no se configura `allowed_users` ni `security.roles`, el agente funciona en modo abierto (como siempre).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Causa | Solución |
|
||||
|
||||
Reference in New Issue
Block a user