Ir al contenido

Receta: triaje del least-privilege drift

Objetivo: convertir el resultado de drift — la brecha entre lo que los agentes pueden hacer y lo que se observa que hacen — en decisiones, con una cadencia, hasta que el diff esté en silencio.

En una instalación nueva, accessmap está desactivado. Como administrador, activa accessmap en Settings > Edition & modules, manteniendo los demás módulos seleccionados activos. Para la CLI, inicia sesión primero como administrador en este motor con olivares login y después ejecuta olivares modules on accessmap. Espera a que termine cada reinicio del motor antes de continuar; las sesiones activas se detienen y se pueden reanudar. De lo contrario, estas llamadas a la API devuelven 404 module_not_enabled.

Ventana de terminal
curl -ks "$BASE/v1/m/accessmap/drift" \
-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool

(O en HCL, para revisarlo en un PR: el data source de Terraform olivares_access_edges con include_drift = true — gestionar como código.)

El resultado tiene tres clases, y son problemas distintos:

Clase Significado La pregunta a hacerse
Acceso inesperado observado, pero ninguna concesión lo cubre ¿es una concesión que falta, o una violación real?
Concesión sin uso concedida, nunca observada en ejercicio ¿por qué existe este permiso?
Reconciliación pendiente observada, pero el enlace agente↔identidad está sin resolver un problema de identidad, no (todavía) de seguridad

Acceso inesperado — lee los ejes de honestidad de la arista antes de actuar:

  • attribution_tier: firm + coverage_tier: clean es el hallazgo de mayor calidad que vas a obtener: una identidad concreta tocó un recurso concreto y la propia auditoría del almacén lo clasificó. Decide: si es legítimo, declara la concesión (política o binding) para que el mapa refleje la intención; si no, revoca el acceso subyacente y trátalo como un incidente.
  • Una atribución approximate significa que el acceso ocurrió pero el quién es una credencial compartida. No quemes una investigación en “qué agente fue” — el arreglo duradero es la identidad por agente, y hasta entonces la arista dice honestamente lo que no puede demostrar.
  • Una arista que se apoya solo en una pista mcp_annotation no es evidencia — la pista es no fiable por especificación. Corrobórala con una fuente observada antes de decidir nada.

Las concesiones sin uso son sobreaprovisionamiento encontrado gratis: cada una es una candidata a revocación, con la salvedad de que la ausencia de observación solo es significativa allí donde hay cobertura — comprueba el tier de cobertura del recurso antes de celebrar (cobertura por niveles).

La reconciliación pendiente se enruta al backlog de identidad: cablea o arregla la fuente de roster que debería enlazar esa credencial, y la arista se resuelve en la siguiente pasada.

Toma la decisión donde está gobernada: declara las concesiones como código (Terraform) o vía la API gobernada, protege la dirección arriesgada tras una aprobación, y deja que el ledger registre quién decidió qué. Luego vuelve a extraer el drift: las aristas reconciliadas desaparecen del diff — solo quedan las brechas genuinas. Esa convergencia es justamente el objetivo; el estate de demo lo muestra en miniatura (quickstart).

En la consola, el panel Permitted vs observed del Access map es esta receta renderizada en vivo.

El triaje de drift funciona como un bucle semanal corto más una vía de alerta para la clase de alta señal (escrituras inesperadas firm + clean). Enruta esos hallazgos a tu guardia mediante un destino de notificación en lugar de esperar a la pasada semanal.