Salvaguardas

Las salvaguardas controlan cómo se pueden usar las credenciales de una máquina (una máquina es un espacio de trabajo, en el editor de ajustes), cómo reacciona la máquina cuando un agente choca contra un muro o se comporta de forma rara, y con cuánto rigor se intercepta su tráfico. Las conexiones que puede abrir su VM se fijan en Política de sandbox. En palabras del propio panel: "Las salvaguardas rigen cómo se usan las credenciales configuradas de este espacio de trabajo. Preguntar antes de usar hace saltar una confirmación en el lado del anfitrión la primera vez que se usa una credencial en una sesión. Una política de escritura despoja o bloquea las operaciones destructivas en el cable — se aplica en el proxy, así que un agente comprometido no puede saltársela. Aquí solo aparecen las credenciales que has configurado."

El panel Salvaguardas de la máquina Web app: la explicación de preguntar antes de usar y de las políticas de escritura, un estado vacío que dice No hay credenciales que guardar, luego No alertar sobre exfiltración de credenciales y la sección Protecciones: Tell the agent when policy blocks it, Agent watchdog, el modo estricto de credenciales, Desactivar la interceptación transparente y el bypass inseguro por petición

El panel tiene dos partes: una fila por credencial, y luego Protecciones — los ajustes comunes a los dos motores de sandbox. (Las reglas de conexiones salientes que estaban aquí pasaron a Política de sandbox en la 5.4.) Todo lo que contiene se aplica a una máquina en marcha en cuanto haces clic en Guardar — sin reinicio. Los mecanismos más profundos están en Detección de inyección de prompts y salvaguardas.

Filas de credenciales

El panel lista cada credencial configurada en Credenciales, en el mismo orden. Cada fila muestra el nombre de la credencial y sus hosts, una casilla Exigir aprobación para usar, y — donde el servicio lo admite — un selector de política de escritura. Sin credenciales, el panel muestra No hay credenciales que guardar y te remite al panel Credenciales.

Exigir aprobación para usar (preguntar antes de usar)

Desactivado por omisión. Cuando está activado, la primera vez que se usa la credencial en una sesión el proxy pone la petición en pausa y pregunta, ofreciendo Permitir 5 minutos, Permitir 1 hora, Permitir el resto de la sesión o No permitir. Las concesiones viven en memoria y acaban con la sesión; Ventana › Aprobaciones de credenciales… lista las actuales. Ver Credenciales y el límite de red.

Mientras una credencial tiene una concesión vigente, su fila muestra el tiempo que queda junto a la casilla — una cuenta atrás naranja (4m, luego 45s) para una concesión temporal, permitido en esta sesión para una que dura el resto de la sesión, y una cuenta atrás roja denegado (o denegado en esta sesión) mientras rige una denegación. Haz clic derecho en la fila para Permitir 5 minutos, Permitir 1 hora o Permitir el resto de la sesión, para Denegar 5 minutos, Denegar 1 hora o Denegar el resto de la sesión (se rechaza sin preguntar), o Revocar — preguntar la próxima vez para borrar cualquiera de ellas y que el siguiente uso vuelva a preguntar. Un permiso o una denegación temporal empieza a contar desde ahora, así que una concesión a punto de agotarse obtiene 5 minutos nuevos. Estas acciones se aplican al instante a la sesión en curso; no hay nada que guardar. (La cuenta atrás aparece en los ajustes propios del espacio de trabajo en el Mac que lo ejecuta, no en Preferencias ni en un cliente remoto.)

Nota: una automatización que use una credencial con la aprobación activada no puede funcionar del todo desatendida: se detiene en el diálogo hasta que respondes en el Mac. El editor de automatizaciones avisa de esto.

Política de escritura

Aparece un selector de política de escritura para:

  • tokens de forjas git (GitHub, GitLab, Bitbucket)
  • credenciales de AWS
  • tokens de DigitalOcean
  • registros de contenedores
  • contextos de Kubernetes
  • puntos finales de bases de datos (MongoDB, ClickHouse, Elasticsearch)
ModoComportamiento
DesactivadoSin filtrado.
Preguntar antes de escribirLas lecturas pasan. Cada escritura se detiene para un diálogo que muestra la operación exacta.
Bloquear las destructivasLos borrados, los descartes y las terminaciones se bloquean; las creaciones y las actualizaciones pasan.
Solo lecturaTodo cambio se bloquea; solo pasan las lecturas.

Las máquinas nuevas usan Preguntar antes de escribir para todos los servicios (heredado de la plantilla Valores predeterminados). Las máquinas creadas antes de que existieran las salvaguardas se cargan en Desactivado.

Nota: una política de escritura es por servicio, no por credencial, como anota el panel: "dos credenciales del mismo servicio (p. ej. dos tokens de GitHub) comparten una política." Cambiar cualquiera de las filas cambia las dos.

Cómo se clasifica cada servicio

ServicioAlcanceClasificación
KubernetesLos servidores de API de los kubeconfigs de esta máquinaGET/HEAD/OPTIONS lectura; DELETE (incluido deletecollection) destructivo; los demás verbos escritura. Las llamadas bloqueadas devuelven un Status 403 de Kubernetes que kubectl muestra con claridad.
AWS*.amazonaws.comEl nombre de la acción (cabecera X-Amz-Target o parámetro Action=) por prefijo: Delete*, Terminate*, Remove*, Purge*, Destroy*, Deregister*, Revoke* destructivos; Get*, List*, Describe* y similares lectura. S3 y las llamadas de estilo REST recurren al método HTTP. Las llamadas bloqueadas devuelven AccessDeniedException.
DigitalOcean*.digitalocean.comDELETE destructivo; GET/HEAD lectura.
Registros de contenedoresLos registros configurados y Docker HubDescargar es lectura; subir es escritura; DELETE es destructivo. Las llamadas bloqueadas devuelven un error DENIED de registro.
GitHub / GitLab / BitbucketLa API REST de la forja y git por HTTPSREST según el método. git push es una escritura (bloqueada en Solo lectura, con pregunta en Preguntar antes de escribir); git fetch es siempre una lectura.

Los puntos finales de bases de datos se clasifican por motor:

MotorLecturaEscrituraDestructivo
MongoDB (Atlas Data API)find, findOne, aggregateinsert, update, replacedeleteOne, deleteMany
ClickHouseSELECT, SHOW, DESCRIBE, EXPLAIN, WITH …INSERT, CREATE, ALTER …DROP, TRUNCATE, DELETE, y ALTER … DELETE / DROP COLUMN / DROP PARTITION / CLEAR
Elasticsearch_search, _msearch, _count, _mget, _sql y otras consultas (incluso por POST)_bulk, _update, la indexaciónDELETE, _delete_by_query

Aparece un aviso naranja cuando una política no tiene a qué aplicarse — un contexto de Kubernetes sin kubeconfig, un punto final de base de datos sin host.

Nota: para ClickHouse, si en la petición no hay texto SQL visible, Solo lectura la bloquea (no se puede demostrar que sea una lectura) mientras que Bloquear las destructivas la deja pasar.

El diálogo de escritura

En Preguntar antes de escribir, una escritura se detiene para ¿Permitir escritura en «alcance» desde el espacio de trabajo «nombre»?, mostrando la operación palabra por palabra — la sentencia SQL, o MÉTODO /ruta. Las opciones:

  • Permitir 15 minutos (por omisión)
  • Permitir una vez — no crea concesión, así que la siguiente escritura vuelve a preguntar.
  • Permitir el resto de la sesión
  • No permitir — el agente recibe el mismo error que devuelven los modos que bloquean. La negativa se recuerda durante 60 segundos, para que un bucle de reintentos no vuelva a preguntar cada segundo.

Las concesiones son por máquina y por alcance: un servidor de API de Kubernetes, AWS en conjunto, un registro, cada forja, o un host de base de datos. Las escrituras idénticas y simultáneas comparten un diálogo. Cuando la máquina se usa sin supervisión por SSH o por la CLI, las mismas opciones se preguntan dentro del tmux de la máquina; no responder significa denegar.

No alertar sobre exfiltración de credenciales

Cuando se ve una credencial camino de un host al que no pertenece, Bromure bloquea la petición, pone la VM en pausa, y muestra una alerta de compromiso con Apagar, Bloquear, Permitir y Guardar para investigación. Permitir confía en ese destino el resto de la sesión. Ver Credenciales y el límite de red.

No alertar sobre exfiltración de credenciales desactiva esa alerta para esta máquina. La fuga se sigue bloqueando y se sigue registrando en la Cronología de seguridad, como "bloqueado — intento de exfiltración (alertas desactivadas, VM no pausada)" — solo desaparece la interrupción. Se aplica en caliente, sin reinicio. Por omisión: desactivado.

Protecciones

La sección Protecciones reúne los ajustes que se aplican a una máquina sea cual sea el motor de sandbox que use. Cada uno se aplica al instante a una máquina en marcha.

Avisar al agente cuando la política lo bloquea

Tell the agent when policy blocks it — "el agente te pregunta en lugar de reintentar o buscar un rodeo". Cuando el cortafuegos, la política de OpenShell, la sandbox del invitado o una salvaguarda rechaza algo que un agente intentó, el agente sabe qué se bloqueó y por qué, y que debe preguntarte en lugar de reintentar o buscar otro camino. Sin esto, un agente solo ve una conexión fallida o "permission denied" y puede seguir intentándolo. Claude Code lee la nota justo después del comando que chocó con el bloqueo. Codex, Grok, Kimi y Oh My Pi la reciben tecleada al terminar su turno. Mientras no elijas, está activado cuando la máquina usa una política de OpenShell. Consulta Avisar al agente.

Vigilante de agentes

Agent watchdog — "señala una sesión que se comporta de forma sospechosa; Quarantine además le corta la red y la pausa". El vigilante observa la sesión en su conjunto, desde fuera de la VM:

  • ráfagas de peticiones bloqueadas;
  • credenciales que no corresponden;
  • señales de manipulación;
  • destinos nuevos una vez asentada la sesión;
  • un volumen saliente muy por encima de la línea base de la propia sesión (contado en el conmutador de red, con independencia del proxy).
ModoCuando la puntuación de la sesión supera el umbral en un minuto
Off (por omisión)Nada.
AlertUna fila Agent watchdog en la Cronología de seguridad ("drift detected"), que también se envía a tu organización en un Mac inscrito.
QuarantineLa red de la VM se corta y la VM se pausa en milisegundos. Una alerta, The agent watchdog quarantined this workspace, enumera luego lo que vio. Apagar detiene la máquina; Keep quarantined la reanuda con la red aún cortada, para que puedas mirar dentro; Release restablece la red.

Cuando la alerta no se puede mostrar en este Mac (un Mac sin pantalla, o una máquina reflejada por un cliente remoto), la pregunta va al cliente remoto, y no responder en tres minutos cuenta como Keep quarantined.

Permitir solo las credenciales que inyecta Bromure (modo estricto)

Only allow credentials Bromure injects (strict mode) — "bloquea cualquier credencial que Bromure no haya puesto ahí él mismo". Con el modo estricto activado, una petición que lleve una credencial que Bromure no inyectó se bloquea y dispara la alerta de compromiso; eso cubre una clave que el agente encontró en un archivo, copió de un registro o trajo consigo. Permitir en la alerta aprueba esa credencial para la sesión. Los tokens que un sitio emite dentro de la VM (una cookie de sesión tras iniciar sesión, por ejemplo) pueden seguir volviendo a ese sitio.

El modo estricto fuerza la interceptación transparente e ignora la lista de no interceptación. El tráfico TCP en crudo no se puede inspeccionar. Cada credencial que configura la máquina necesita antes un filtro de host; el panel nombra las que no lo tienen. Desactivado por omisión; tu organización puede exigirlo.

Desactivar la interceptación transparente

Por omisión, el conmutador virtual desvía las conexiones HTTP y HTTPS de la VM (puertos 80 y 443) al proxy de Bromure en la capa de red, de modo que el proxy las vea incluso cuando un programa ignora los ajustes de proxy.

Activar Desactivar la interceptación transparente detiene solo ese desvío forzado. Los programas que abren conexiones en crudo, y las apps que fijan certificados, llegan entonces a la red — y al certificado real del servidor — directamente. El proxy en sí sigue activo: HTTP_PROXY / HTTPS_PROXY siguen definidos, así que las herramientas que saben usar un proxy (apt, git, pip, curl, node…) y las propias llamadas de API de los agentes siguen pasando por Bromure y conservan el intercambio de credenciales, el trazado y las salvaguardas. Se aplica en caliente, sin reinicio. No disponible mientras el modo estricto esté activado.

Úsalo para una máquina con un cliente que se rompe bajo la interceptación. Mientras está activado, las reglas web del cortafuegos y las políticas de escritura no ven el tráfico de los programas que se saltan los ajustes de proxy.

Permitir el bypass inseguro por petición (X-bromure-insecure)

Una salida de emergencia más estrecha para servidores con certificado autofirmado o de una CA privada. Cuando una petición a un host así falla la validación del certificado, el agente puede reintentarla con la cabecera X-bromure-insecure: yes, y Bromure se salta la validación del certificado de ese servidor para esa petición. La interceptación, el trazado y la guardia contra fugas siguen activos, y Bromure no pone ninguna credencial real en una petición así — solo salen los señuelos de la VM. Cada uso queda registrado en la Cronología de seguridad.

Activado por omisión: solo actúa cuando la VM envía la cabecera de forma explícita. Desactívalo para rechazar la cabecera de plano.

Qué ve el agente cuando se bloquea una llamada

Una llamada bloqueada devuelve un error corriente en el formato propio del servicio — un Status de Kubernetes, una AccessDeniedException de AWS, un DENIED de registro — cuyo mensaje acaba en "blocked by Bromure Guardrails". El agente ve un fallo limpio que puede reportar, no una conexión colgada. (Los bloqueos de cadena de suministro usan HTTP 451 en su lugar, así que los dos se distinguen con facilidad — ver Cadena de suministro.)

Limitaciones

  • Un force-push parece un push normal en el cable, así que Bloquear las destructivas no lo detiene; Solo lectura y Preguntar antes de escribir sí filtran los pushes. Los borrados a través de la API REST de la forja sí se capturan.
  • Las políticas de Kubernetes y de registros solo cubren hosts venidos de los kubeconfigs y los registros de esta máquina; una política de base de datos necesita el host del punto final.
  • Los demás hosts se rigen por las reglas de host, puerto y método de la Política de sandbox, no por una clasificación a nivel de servicio.

Referencia de ajustes

AjusteTipoPor omisión
Exigir aprobación para usarCasilla por credencialDesactivado
Política de escrituraDesactivado / Preguntar antes de escribir / Bloquear las destructivas / Solo lectura, por servicioPreguntar antes de escribir para máquinas nuevas
No alertar sobre exfiltración de credencialesConmutadorDesactivado
Tell the agent when policy blocks itConmutadorActivado mientras la máquina use una política de OpenShell
Agent watchdogOff / Alert / QuarantineOff
Only allow credentials Bromure injects (strict mode)ConmutadorDesactivado
Desactivar la interceptación transparenteConmutadorDesactivado
Permitir el bypass inseguro por petición (X-bromure-insecure)ConmutadorActivado

Capítulos relacionados