From db1a93c3feba9d2ad8a3ad2979f941732cd63f7b Mon Sep 17 00:00:00 2001 From: Enmanuel Date: Thu, 9 Apr 2026 22:05:32 +0000 Subject: [PATCH] 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) --- security/agent-groups.yaml | 18 ++++++++++++++++-- security/permissions.yaml | 13 ++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/security/agent-groups.yaml b/security/agent-groups.yaml index 8287cc1..be0ee50 100644 --- a/security/agent-groups.yaml +++ b/security/agent-groups.yaml @@ -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 diff --git a/security/permissions.yaml b/security/permissions.yaml index 112eb1c..4917909 100644 --- a/security/permissions.yaml +++ b/security/permissions.yaml @@ -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:" = comandos, "tool:" = tools +# Politicas de permisos: para cada grupo de agentes, que acciones tiene cada grupo de usuarios +# Actions: "*" = todo, "ask" = chat libre, "command:" = comandos, "tool:" = 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: ["*"]