El problema fundamental que resuelve PrivacyLib es la gestión y aplicación consistente de políticas de privacidad en un entorno de datos distribuido y heterogéneo a escala de hyperscaler. Históricamente, cada nuevo requisito de privacidad implicaba una implementación ad-hoc en cada sistema de datos, lo que resultaba en un esfuerzo de ingeniería insostenible y una alta latencia para la adopción de nuevas políticas. La necesidad de una solución centralizada y eficiente se agudiza con la evolución de los sistemas (ej., agentes de IA) y la creciente complejidad regulatoria.
PrivacyLib aborda esto desacoplando la integración del sistema de la implementación del requisito. Al integrar los sistemas de datos una sola vez con una API común, y luego implementar los requisitos de privacidad como módulos plug-in, se logra una agilidad sin precedentes. Este enfoque permite que las políticas de privacidad evolucionen y se desplieguen rápidamente sin requerir cambios en cada sistema cliente, lo que es crítico para mantener el ritmo con la innovación de productos y las demandas de cumplimiento en un entorno dinámico.
Arquitectura del Sistema
PrivacyLib se implementa como una biblioteca que se ejecuta in-process dentro de los clientes de los sistemas de datos y procesamiento de Meta. Esta arquitectura de 'biblioteca en el cliente' es clave para mantener la latencia baja y acceder a un contexto de solicitud enriquecido. Los sistemas se integran con PrivacyLib una vez, mapeando sus APIs nativas a un conjunto de cinco operaciones comunes de PrivacyLib: Read, Write, RPC, Request Entry e Inline Execution. Cada operación puede tener módulos 'enforcing' (que bloquean el acceso) u 'observing' (que registran el acceso).
Para garantizar la cobertura, PrivacyLib se integra tanto en bibliotecas cliente tipadas (donde tiene contexto completo) como en límites de red inferiores para rutas RPC directas. La eficiencia se logra compilando los requisitos en su forma evaluable más simple en tiempo de construcción y utilizando caches in-process (por solicitud y por host) para evitar llamadas de red en el hot path. La fiabilidad se asegura mediante un proceso de despliegue de cambios que incluye simulaciones de flujos de datos observados y un control de rollout por porcentaje en tiempo de ejecución para los módulos, permitiendo reversiones rápidas sin un rollback de toda la flota. Para la telemetría, utiliza Bloom filters y muestreo adaptativo para gestionar el volumen de eventos. En el caso de agentes de IA, AgentLib propaga el contexto de la sesión del agente hasta PrivacyLib, permitiendo que los módulos evalúen el acceso a datos con el contexto completo del agente.
Flujo de Verificación de Acceso a Datos con PrivacyLib
- 1 Servicio Cliente Intenta acceder a datos (ej. escribir en Logger)
- 2 PrivacyLib (in-process) Recibe solicitud de operación (ej. 'write') y contexto
- 3 Caches (in-process) Verifica si el resultado de la política está en cache (per-request/per-host)
- 4 Módulos PrivacyLib Ejecuta módulos configurados (ej. Policy Zones, Agent Observability)
- 5 Policy Zones (Enforcing) Evalúa condiciones: contexto permitido, anotación de destino
- 6 Resultado de Módulos Combina resultados. Si hay denegación, detiene la operación
- 7 Telemetry Logging (Observing) Registra eventos de evaluación (Bloom filters, muestreo)
- 8 Sistema de Datos Si se permite, el cliente procede con la operación de datos
| Capa | Tecnología | Justificación |
|---|---|---|
| security | PrivacyLib | Biblioteca centralizada para la aplicación de políticas de privacidad en el punto de acceso a datos. vs Enforcement ad-hoc por sistema, Gateway de políticas centralizado (proxy) Módulos configurables (enforcing/observing), mapeo de operaciones nativas a operaciones comunes de PrivacyLib. |
| security | Policy Zones | Módulo enforcing de PrivacyLib para la limitación de propósito y control de flujo de información. Utiliza ZoneDataType para identificar el tipo de datos (ej. LOGGER). |
| security | Privacy Probes | Módulo observing de PrivacyLib para el descubrimiento de flujos de datos en tiempo de ejecución. |
| security | Agent Observability | Módulo observing de PrivacyLib para monitorear el acceso a datos de agentes de IA. Registra identificadores de sesión y llamadas a herramientas. |
| data-processing | Logger | Biblioteca cliente para escribir metadatos en data warehouses, integrada con PrivacyLib. LoggerConfig para describir registros y anotaciones de privacidad. |
| networking | ServiceRouter | Capa RPC que valida tokens criptográficamente firmados de PrivacyLib para solicitudes directas sin cliente integrado. Fallback a verificación más estricta si no hay token. |
| orchestration | Hack (Meta's typed PHP) | Lenguaje de programación utilizado para implementar clientes de Logger y configuraciones de PrivacyLib. |
| orchestration | C++ / Python | Lenguajes de programación para otros clientes de Logger y servicios que interactúan con PrivacyLib. |
Trade-offs
Ganancias
- ▲▲ Tiempo de implementación de nuevos requisitos de privacidad
- ▲ Consistencia en la aplicación de políticas de privacidad
- ▲ Agilidad para evolucionar sistemas y requisitos
- ▲ Visibilidad de flujos de datos y cumplimiento
Costes
- △ Propagación de cambios de política
- △ Complejidad de integración inicial por sistema
final class MetadataTraceLoggerConfig extends LoggerConfigBase {
use MessagingTrafficMetadataPolicyTrait;
public function configure(
LoggerFieldDefiner $fd,
): LoggerFieldDefiner {
$this->annotateWithTableLevelPolicy();
// Field and destination definitions
}
}$config->libraryConfig()->enablePrivacyLib(
PrivacyLibOperation::write()
->input(
PrivacyLibInput::instance(
nameof ILoggerInputPrivacyLibPayloadProvider,
),
)
->enforcements(
PrivacyLibWriteEnforcement::zones(
ZoneDataType::LOGGER,
)
->withPropagation()
->enabled(),
PrivacyLibWriteEnforcement::telemetryLogging()->enabled(),
// Other modules
),
);Fundamentos Teóricos
El problema de la aplicación de políticas de seguridad y privacidad en sistemas distribuidos tiene raíces profundas en la investigación de control de flujo de información (Information Flow Control - IFC). Trabajos seminales como los de Denning (1976) sobre modelos de seguridad de flujo de información y los sistemas de tipo de seguridad, o más recientemente los sistemas de tipo de seguridad de flujo de información implícito, han explorado cómo garantizar que la información sensible no fluya a ubicaciones no autorizadas. PrivacyLib, con sus 'Policy Zones' y la propagación de contexto, es una aplicación práctica a gran escala de estos principios de IFC, donde el 'flujo' de datos se monitorea y controla en tiempo de ejecución.
Además, la arquitectura de PrivacyLib, que se basa en la ejecución de lógica de política en el cliente (o 'edge' del sistema de datos), se alinea con el concepto de 'enforcement points' distribuidos, un patrón común en la seguridad de sistemas distribuidos. La idea de tener un 'motor de políticas' centralizado que genera artefactos de política para ser evaluados localmente por 'puntos de aplicación' distribuidos es una extensión de los principios de diseño de sistemas de autorización como XACML, pero optimizado para la latencia y la escala de un hyperscaler. La gestión de la consistencia y el despliegue de políticas en un entorno distribuido también se relaciona con los desafíos de consistencia en sistemas distribuidos, aunque en este caso, la consistencia se refiere a la aplicación de políticas en lugar de la consistencia de datos transaccionales.