Permisos de agentes: control de acceso para agentes de IA
Qué cubre este artículo sobre permisos de agentes
- Cómo funcionan los permisos para agentes de IA.
- Cómo implementar el principio de menor privilegio en agentes.
- Cómo controlar permisos de herramientas, sistemas y datos.
- Ejemplos prácticos para diferentes roles de agentes.
- Mejores prácticas de seguridad y cumplimiento normativo.
Introducción: permisos de agentes explicados
Los permisos de agentes definen qué puede hacer un agente de IA: qué herramientas, qué sistemas, qué datos, qué acciones. No se trata de “todo para todos”, sino de “solo lo necesario para la tarea”. Menor privilegio para agentes.
Este artículo está dirigido a usuarios que quieren configurar permisos para agentes. Encontrarás conceptos fundamentales en Permisos de herramientas y Permisos de MCP.
¿Por qué necesito permisos de agentes?
Imagina que tu agente tiene acceso a todos los sistemas. Podría eliminar archivos, exfiltrar datos, manipular sistemas. Con permisos: solo puede leer lo que necesita, solo escribir donde debe, solo ejecutar lo permitido.
Permisos de agentes en resumen
Permisos = ¿Qué puede hacer el agente? Herramientas (lectura/escritura/ejecución), sistemas (sistema de archivos, BD, API), datos (qué tablas, qué rutas). Menor privilegio: solo permisos necesarios.
La idea central es: controla lo que puede hacer el agente.
¿Para quién es este artículo?
- Conscientes de seguridad, que quieren asegurar agentes.
- Administradores, que implementan control de acceso.
- Desarrolladores, que construyen agentes seguros.
- Responsables de cumplimiento, que aplican políticas.
Términos clave
- Menor privilegio - Permisos mínimos. Cuándo es útil: para seguridad.
- Permisos de herramientas - Acceso a herramientas. Cuándo es útil: para utilidades.
- Permisos de MCP - Acceso a MCP. Cuándo es útil: para herramientas MCP.
- Inyección de prompts - Ataques. Cuándo es útil: para riesgos.
- Registro de auditoría - Registro. Cuándo es útil: para cumplimiento.
Modelo de permisos para agentes
# Permisos para diferentes roles de agentes
agent_permissions = {
"research_agent": {
"description": "Solo investigación, sin cambios",
"permissions": {
"filesystem": {"read": True, "write": False, "delete": False},
"database": {"read": True, "insert": False, "update": False, "delete": False},
"web_search": {"search": True},
"api": {"get": True, "post": False}
}
},
"writer_agent": {
"description": "Puede leer y escribir",
"permissions": {
"filesystem": {"read": True, "write": True, "delete": False},
"database": {"read": True, "insert": True, "update": False, "delete": False},
"api": {"get": True, "post": True}
}
},
"admin_agent": {
"description": "Control total (con aprobación para acciones críticas)",
"permissions": {
"filesystem": {"read": True, "write": True, "delete": True},
"database": {"read": True, "insert": True, "update": True, "delete": True},
"api": {"get": True, "post": True, "put": True, "delete": True},
"system": {"execute": True}
},
"requires_approval": ["delete", "system.execute"]
}
}
Ejemplo práctico 1: permisos de herramientas
class AgentPermissions:
"""Permisos para agentes"""
def __init__(self, role):
self.role = role
self.permissions = self.load_permissions(role)
def can_use_tool(self, tool_name, action):
"""¿Puede el agente usar la herramienta?"""
if tool_name not in self.permissions:
return False
if action not in self.permissions[tool_name]:
return False
return self.permissions[tool_name][action]
def check_tool_permission(self, tool_name, action, context=None):
"""Verificar permiso (con contexto)"""
# Permiso base
if not self.can_use_tool(tool_name, action):
raise PermissionError(f"Agent '{self.role}' cannot use '{tool_name}.{action}'")
# Verificación basada en contexto
if context:
# Restricciones de rutas para sistema de archivos
if tool_name == "filesystem" and "path" in context:
if not self.is_path_allowed(context["path"]):
raise PermissionError(f"Path '{context['path']}' not allowed")
# Restricciones de tablas para base de datos
if tool_name == "database" and "table" in context:
if not self.is_table_allowed(context["table"]):
raise PermissionError(f"Table '{context['table']}' not allowed")
return True
Ejemplo práctico 2: restricciones de rutas
def is_path_allowed(self, path):
"""Verificar permiso de ruta"""
allowed_paths = self.permissions.get("allowed_paths", [])
denied_paths = self.permissions.get("denied_paths", [])
# Verificar denegados primero
for denied in denied_paths:
if path.startswith(denied):
return False
# Verificar permitidos
for allowed in allowed_paths:
if path.startswith(allowed):
return True
return False # Por defecto: denegar
Ejemplo práctico 3: acciones críticas con aprobación
def execute_with_approval(self, action, params):
"""Ejecutar acción crítica con aprobación humana"""
if action in self.permissions.get("requires_approval", []):
# Solicitar aprobación
approval = self.request_approval(action, params)
if not approval["approved"]:
raise PermissionError(f"Action '{action}' requires approval")
# Registro para auditoría
self.log_approval(action, params, approval)
# Ejecutar acción
return self.execute(action, params)
Recomendaciones de seguridad
- Menor privilegio: Solo permisos necesarios. Consulta Permisos de herramientas.
- Restricciones de rutas: Para sistema de archivos: solo rutas permitidas.
- Restricciones de tablas: Para base de datos: solo tablas permitidas.
- Aprobación humana: Para acciones críticas (eliminar, ejecutar sistema).
- Auditoría: Registra todas las violaciones de permisos. Consulta Registro de auditoría.
- Inyección de prompts: Los agentes pueden intentar eludir permisos. Consulta Inyección de prompts.
Trampas comunes
- Demasiados permisos: El agente no debería tener todos los permisos.
- Sin restricciones de rutas: El agente no debería acceder a todas las rutas.
- Sin aprobación para acciones críticas: Eliminar y ejecutar sistema deberían requerir aprobación.
- Permisos no verificados: Verificar antes de cada acción.
- Sin auditoría: Las violaciones de permisos deberían registrarse.
Enlaces de referencia
- Permisos de herramientas - Acceso a herramientas.
- Permisos de MCP - Acceso a MCP.
- Seguridad de agentes - Descripción general.
- Inyección de prompts - Ataques.
- Registro de auditoría - Registro.
- Aprobación humana - Aprobación.
Key Takeaways:
- Permisos de agentes: menor privilegio para herramientas, sistemas, datos.
- Diferentes roles: research (solo lectura), writer (lectura+escritura), admin (control total con aprobación).
- Restricciones de rutas para sistema de archivos, restricciones de tablas para base de datos.
- Las acciones críticas necesitan aprobación humana.
- Registro de auditoría para todas las violaciones de permisos.
Preguntas frecuentes
¿Qué son los permisos de agentes?
¿Qué es Least Privilege?
¿Qué tipos de permisos existen?
¿Cada agente necesita permisos diferentes?
¿Cuáles son las acciones críticas?
¿Puede el agente eludir los permisos?
¿Cómo registró los permisos?
¿Cuáles son los permisos estándar?
Referencias y lecturas complementarias
- Least Privilege - Principio de seguridad.
- RBAC - Role-Based Access Control.


