Skip to content
BotServBotServ
PermisosControl de accesoLeast PrivilegeSeguridadTool Permissions

Permisos de Agentes: Control de Acceso para IA

Permisos de agentes IA: control de herramientas, acceso a sistemas, least privilege y mejores prácticas.

S

schutzgeist

5 min read
Permisos de Agentes: Control de Acceso para IA

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

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

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?

Control de acceso para agentes de IA: qué herramientas, qué sistemas, qué datos, qué acciones pueden usar. Least Privilege: solo los permisos necesarios para la tarea.

¿Qué es Least Privilege?

Principio: otorga solo los permisos necesarios. Un agente de investigación necesita lectura, no escritura. Un agente administrativo requiere más, pero solo para sus tareas específicas.

¿Qué tipos de permisos existen?

Acciones: read, write, delete, execute. Alcances: rutas (sistema de archivos), tablas (base de datos), endpoints (API). Además: requires_approval para acciones críticas.

¿Cada agente necesita permisos diferentes?

Sí, cada agente debe tener sus propios permisos. Research: solo lectura. Writer: lectura y escritura. Admin: acceso total con aprobación para acciones críticas.

¿Cuáles son las acciones críticas?

Eliminación, ejecución de sistema, actualizaciones de base de datos, envío de correos electrónicos, llamadas a API externas. Estas deberían requerir aprobación humana o validación adicional.

¿Puede el agente eludir los permisos?

No, si está implementado correctamente. Los permisos se validan en el servidor, no en el cliente. Prompt Injection puede intentar eludirlos, pero no debería funcionar.

¿Cómo registró los permisos?

Audit-Log: ¿quién usó qué permiso y cuándo? Para violaciones: enviar alerta, bloquear acción, registrar en log. Necesario para cumplimiento y trazabilidad.

¿Cuáles son los permisos estándar?

Para la mayoría de agentes: lectura y escritura en áreas permitidas. Sin eliminación, sin ejecución, sin permisos de sistema. Para acciones críticas: aprobación humana.

Referencias y lecturas complementarias

Volver al blog
Share:

Entradas relacionadas