feat: ACL admin-only para father-bot via grupo privileged

Reestructura los grupos de seguridad para soportar agentes privilegiados:

- Nuevo grupo 'privileged' con father-bot (solo admins)
- Reemplaza grupo 'all' (wildcard) con 'general' (lista explicita)
  para evitar que el ACL union otorgue permisos de everyone a father-bot
- Documenta en YAML que el ACL es acumulativo y por que privileged
  y general deben ser mutuamente excluyentes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-09 22:05:32 +00:00
parent be88c6ce7e
commit db1a93c3fe
2 changed files with 28 additions and 3 deletions
+16 -2
View File
@@ -1,9 +1,23 @@
# Grupos de agentes del sistema
# Agents: lista de agent IDs (del campo agent.id en config.yaml), o "*" para todos
# Grupos de agentes del sistema
# Agents: lista de agent IDs (del campo agent.id en config.yaml), o "*" para todos
#
# IMPORTANTE: no usar "*" en grupos que se asignan a permisos amplios si existen
# agentes privilegiados. El ACL es union: si un agente aparece en dos grupos,
# recibe los permisos de ambos. Usar "general" para agentes de acceso abierto.
groups:
assistants:
agents:
- assistant-bot
- asistente-2
all:
agents: ["*"]
privileged:
agents:
- father-bot
general:
agents:
- assistant-bot
- asistente-2
- meteorologo
- test-personality
- test-bot
+12 -1
View File
@@ -1,7 +1,18 @@
# Políticas de permisos: para cada grupo de agentes, qué acciones tiene cada grupo de usuarios
# Actions: "*" = todo, "ask" = chat libre, "command:<name>" = comandos, "tool:<name>" = tools
# Politicas de permisos: para cada grupo de agentes, que acciones tiene cada grupo de usuarios
# Actions: "*" = todo, "ask" = chat libre, "command:<name>" = comandos, "tool:<name>" = tools
#
# IMPORTANTE: el ACL es union (acumulativo). Si un agente aparece en multiples grupos,
# recibe los permisos de TODOS. Por eso "privileged" y "general" son mutuamente excluyentes.
policies:
- agent_group: all
# Agentes privilegiados (father-bot): solo admins
- agent_group: privileged
permissions:
- user_group: admins
actions: ["*"]
# Agentes generales: acceso abierto a todos
- agent_group: general
permissions:
- user_group: admins
actions: ["*"]