Saltar al contenido principal

Funcionalidad

¿Qué es Purpose-based Access Control?

Retrato de Jochen Christ

Jochen Christ

Co-Founder & CTO, Entropy Data ·

Las cosas cambian. Con agentes de IA autónomos ejecutando procesos de negocio, ya no sabemos de antemano a qué datos de negocio necesita acceder el Data Consumer, el agente, para cumplir su tarea. Pero somos, más que nunca, responsables de que los datos de negocio se usen para los fines correctos.

Esto significa que ya no podemos conceder permisos de lectura completos sobre un producto de datos a un único principal. Un acceso total al producto de datos Customer 360, con todos sus atributos PII, sería demasiado amplio y poco específico para el fin. Y tampoco podemos conceder el acceso manualmente para cada consulta.

Purpose-based Access Control

Para la era de los agentes necesitamos un nuevo concepto de control de acceso. Presentamos Purpose-based Access Control (PurBAC).

La idea de Purpose-based Access Control es sencilla: el Data Owner define las condiciones de uso para acceder al producto de datos en un Data Contract: los fines de uso permitidos y las limitaciones. En el momento de la consulta, un componente compara la consulta real y su contexto con las condiciones de uso definidas en el Data Contract, usando un LLM.

Como se apoya en el procesamiento con LLM (derivar el fin, interpretar lenguaje natural, leer consultas SQL), es un enfoque basado en riesgo. Podemos definir el nivel de confianza necesario para las decisiones automáticas y, para algunas decisiones y productos de datos, quizá sigamos queriendo a una persona en el proceso. El grupo de Data Governance puede establecer umbrales y políticas prácticos.

Cómo funciona

Purpose-based Access Control toma prestados los dos componentes básicos de las arquitecturas típicas basadas en políticas: un Policy Enforcement Point (PEP), situado en la ruta de acceso a los datos, que intercepta cada consulta, y un Policy Decision Point (PDP), que decide si la consulta está permitida.

Diagrama de Purpose-based Access Control: un Data Consumer (persona o agente) envía una consulta y su contexto a un Policy Enforcement Point, que envía una petición de autorización a un Policy Decision Point. El PDP evalúa las políticas de fin del Data Contract y devuelve una decisión. Si está permitido, el PEP ejecuta la consulta contra el producto de datos.
Purpose-based Access Control: el Data Contract define los fines aceptables y prohibidos, el Policy Decision Point evalúa cada consulta contra ellos y el Policy Enforcement Point solo ejecuta la consulta si está permitida.

Estos son los componentes principales:

  • El conector de datos, normalmente un servidor MCP, actúa como Policy Enforcement Point (PEP). Intercepta la petición y delega la decisión en el Policy Decision Point.
  • El Policy Decision Point (PDP) evalúa la consulta real, el fin declarado y el contexto, así como el historial de acceso a los datos, los compara con el Data Contract y toma la decisión de permitir o denegar. La decisión queda registrada.

El Policy Decision Point usa un modelo de IA específico para interpretar, por un lado, las condiciones de uso y, por otro, la consulta real y su contexto, derivar el fin y comparar ambos.

Entropy Data implementa ambos. El Policy Enforcement Point es la herramienta MCP execute_query para un producto de datos concreto. Internamente llama a un Policy Decision Point que carga el Data Contract, analiza la consulta SQL y compara ambos para llegar a una decisión.

El Policy Decision Point de Entropy Data expone una Authorization API conforme a OpenID AuthZEN. AuthZEN estandariza la petición de un PEP a un PDP como subject, action y resource, y la respuesta como una decisión de permitir o denegar con motivos opcionales. En Entropy Data, el resource es el Output Port de un producto de datos y la action es can_query, con el SQL y el fin derivado como propiedades. Así que el servidor MCP es solo uno de los puntos de aplicación posibles: tus propios conectores de datos, gateways de consultas o frameworks de agentes pueden llamar al PDP mediante simples llamadas a la API y aplicar Purpose-based Access Control a cada ruta de acceso a los datos, sin pasar por Entropy Intelligence ni por MCP.

Ejemplo

Veamos un ejemplo. Esta es la tarea del agente:

Create a CSV with our top 10000 customers based on customer_lifetime_revenue to import in Mailchimp.

Y este es el Data Contract de nuestro producto de datos de clientes. Las condiciones de uso viven en la sección description del Open Data Contract Standard: un fin, el uso permitido y las limitaciones. Las condiciones de uso resaltadas son aquello contra lo que el PDP evalúa cada consulta.

apiVersion: v3.1.0
kind: DataContract
id: sales_customers_v1
name: Customers
version: 1.0.0
status: active
description:
  purpose: |-
    This data product contains customer information provided by the sales
    department. It includes registered webshop customers and guest customers
    since 2020. It includes customer demographics, contact information,
    order history, and engagement metrics.
  usage: Data can be used for financial reporting and sales analytics.
  limitations: Do not transfer data outside of EU. Do not use for marketing purposes.

schema:
  # omitted for brevity, but important for the agent to build a semantically correct SQL query

Cuando se le pide al agente datos de clientes para una newsletter, puede construir fácilmente una consulta SQL a partir del esquema del Data Contract. Llama a la herramienta execute_query con esa consulta y con el fin que ha derivado de la conversación. El PEP intercepta la llamada y entrega ambos al PDP como una petición de evaluación AuthZEN. El subject es el usuario en cuyo nombre actúa el agente, el producto de datos y el Output Port son el resource, y la consulta y su fin son las propiedades de la action:

POST /api/access/evaluation

{
  "subject": {
    "type": "user",
    "id": "alice@example.com"
  },
  "resource": {
    "type": "dataproduct",
    "id": "sales_customers_v1",
    "properties": {
      "outputPortId": "databricks"
    }
  },
  "action": {
    "name": "can_query",
    "properties": {
      "purpose": "Create a CSV of the top 10,000 customers ranked by customer_lifetime_revenue for Mailchimp import",
      "sql": "SELECT customer_id, email, first_name, last_name, phone, country, total_orders, total_spent AS customer_lifetime_revenue FROM sales_customers_demo.dp_customers_v1.customers WHERE email IS NOT NULL AND TRIM(email) <> '' ORDER BY total_spent DESC NULLS LAST LIMIT 10000"
    }
  }
}

El PDP pasa esta información a su LLM. Por la semántica de «Mailchimp», sabe que se trata de una herramienta de newsletters, lo que convierte la petición en un fin de marketing. Y como Mailchimp es un proveedor estadounidense, exportar los datos también transferiría datos personales de la UE a Estados Unidos.

Así que la decisión es denegar. El PDP responde con la respuesta AuthZEN: la decisión, más un motivo para el usuario y otro más detallado para el administrador:

{
  "decision": false,
  "context": {
    "reasons": [
      {
        "id": "DATA_CONTRACT_TERMS_CONFLICT",
        "reason_user": {
          "en": "Query conflicts with data contract terms: The stated purpose is to create a Mailchimp import, which is a marketing use and violates the contract limitation 'Do not use for marketing purposes'. The query also exports PII (email, name, phone), and transferring it to Mailchimp may constitute transfer outside the EU, violating 'Do not transfer data outside of EU'."
        },
        "reason_admin": {
          "en": "Query violates data contract sales_customers_v1 terms: The stated purpose is to create a Mailchimp import, which is a marketing use (…)"
        }
      }
    ]
  }
}

El agente recibe la denegación junto con el razonamiento, de modo que puede explicar la situación al usuario y proponer alternativas conformes, como un extracto sin PII para analítica interna o un producto de datos distinto aprobado para activación de marketing.

Entropy Intelligence se niega a crear una importación para Mailchimp a partir del producto de datos Customers. El panel de gobernanza muestra la comprobación «Purpose violates the contract» con la explicación del Policy Decision Point, y el agente ofrece alternativas conformes.
Entropy Intelligence explica por qué se bloqueó la consulta y ofrece siguientes pasos conformes. El panel de gobernanza de la derecha muestra ambas comprobaciones: el acceso al producto de datos y la evaluación del fin.

Con el modo de desarrollador activado, puedes inspeccionar la llamada subyacente a la herramienta execute_query, incluido el fin declarado por el agente y el razonamiento de la denegación:

La llamada a la herramienta execute_query en Entropy Intelligence: la entrada muestra el producto de datos, el Output Port, el fin derivado y la consulta SQL; la salida muestra el fallo de la evaluación de acceso con el razonamiento del Policy Decision Point
La llamada a la herramienta execute_query: el agente pasa el producto de datos, el Output Port, el fin y la consulta SQL al PEP, que los reenvía al PDP. El PDP deniega la petición y explica por qué.

Esto no funciona solo en Entropy Intelligence. Funciona en cualquier agente que use Entropy Data como marketplace de datos y Policy Enforcement Point, ya sea Claude, ChatGPT, Microsoft Copilot o tu propio agente conectado a través del servidor MCP de Entropy Data.

¿Qué viene después?

En el ejemplo anterior, el PEP llama al PDP a través de la API conforme a AuthZEN, y el PDP llama a un LLM en el momento de la consulta. Esa llamada al LLM en tiempo de consulta añade coste y latencia. Según la plataforma de datos, el nivel de servicio y la necesidad de decisiones deterministas, son posibles otras implementaciones. Estas están ahora mismo en nuestro backlog:

  • Caché. Guardar en caché las decisiones de consultas similares acelera las peticiones posteriores.
  • Open Policy Agent. El PDP puede actuar como un motor compatible con Open Policy Agent, lo que lo hace disponible para tecnologías con soporte de OPA como Trino y Kubernetes.
  • Tokens de corta duración. Para los casos de uso en los que el cliente necesita acceder directamente a una base de datos, un servicio de autenticación podría emitir tokens de corta duración con permisos sobre las tablas solicitadas para esa sesión. Un servidor de autorización OAuth es la tecnología natural para ello.
  • Drivers JDBC y ODBC. Para aplicaciones legacy, también estamos pensando en un driver JDBC u ODBC que actúe como proxy y realice estas comprobaciones antes de reenviar la consulta a la base de datos.

Las decisiones con una persona en el proceso se implementan hoy por adelantado: antes de que un agente pueda consultar un producto de datos, el Data Consumer solicita acceso con un fin declarado y el Data Product Owner lo aprueba. La comprobación del fin en tiempo de consulta se ejecuta entonces dentro de los límites de ese acceso aprobado, de modo que una consulta individual de un agente nunca llega más lejos de lo que una persona ha concedido.

Conclusión

El control de acceso tradicional se diseñó para un mundo en el que conocíamos de antemano al consumidor y el caso de uso. Los agentes son distintos. Purpose-based Access Control desplaza la pregunta de «¿quién eres?» a «¿qué estás haciendo, y está permitido ese fin?»

Sobre el autor

Retrato de Jochen Christ

Co-Founder & CTO, Entropy Data

Jochen construye herramientas para que los datos, las personas y la IA trabajen juntos. Es autor del sitio Data Mesh Architecture, maintainer de la Data Contract CLI y miembro del TSC del proyecto Bitol de la Linux Foundation, hogar del Open Data Contract Standard.

Habla con Jochen

Preguntas frecuentes

¿Cómo funciona Purpose-based Access Control (PurBAC)?
Purpose-based Access Control es un concepto de control de acceso para la era de los agentes. El Data Owner define los fines de uso permitidos y las limitaciones como condiciones de uso en el Data Contract. En el momento de la consulta, un Policy Decision Point compara la consulta real y su contexto con esas condiciones, usando un LLM, y permite o deniega la petición.
¿En qué se diferencia PurBAC del control de acceso basado en roles o en atributos?
RBAC y ABAC deciden en función de quién es el principal y qué atributos tiene. Conceden acceso a un producto de datos en su conjunto, algo demasiado amplio para un agente de IA que decide en tiempo de ejecución qué datos necesita. PurBAC decide consulta a consulta, según para qué se usan los datos, y compara ese fin con las condiciones de uso que el Data Owner escribió en el Data Contract.
¿Se puede confiar en un LLM para tomar decisiones de acceso?
PurBAC es un enfoque basado en riesgo. Derivar un fin a partir de lenguaje natural y SQL es probabilístico, así que defines el nivel de confianza necesario para las decisiones automáticas y, para los productos de datos sensibles, mantienes a una persona en el proceso. Cada decisión queda registrada. PurBAC complementa, y no sustituye, el flujo existente de solicitud y aprobación de acceso en Entropy Data.
¿Funciona Purpose-based Access Control con cualquier agente de IA?
Sí. El Policy Enforcement Point es la herramienta execute_query del servidor MCP de Entropy Data. Cualquier agente que consulte datos a través de Entropy Data, ya sea Entropy Intelligence, Claude, ChatGPT, Microsoft Copilot o un agente propio, pasa por la misma comprobación en el servidor. El Policy Decision Point también expone una Authorization API conforme a OpenID AuthZEN, de modo que otros puntos de aplicación, como tus propios conectores de datos o gateways de consultas, pueden llamarlo directamente.