Schutzmechanismen

Schutzmechanismen sind die Host-seitige Steuerung von Bromure Agentic Coding darüber, wie die Zugangsdaten eines Arbeitsbereichs verwendet werden dürfen. Wie der Bereich selbst es formuliert: Schutzmechanismen regeln, wie die konfigurierten Zugangsdaten dieses Arbeitsbereichs verwendet werden. Vor Nutzung fragen blendet bei der ersten Verwendung eines Zugangsdatums in einer Sitzung eine Host-seitige Bestätigung ein. Eine Schreibrichtlinie entfernt oder blockiert destruktive Operationen auf der Übertragung — durchgesetzt im Proxy, sodass ein kompromittierter Agent in der VM sie nicht umgehen kann. Hier erscheinen nur Zugangsdaten, die Sie konfiguriert haben.

Der Bereich Schutzmechanismen im Editor der Arbeitsbereich-Einstellungen: eine Zeile pro Zugangsdatum mit ihrem Kontrollkästchen zum Vor-Nutzung-Fragen, darunter der Egress-Firewall-Abschnitt Ausgehende Verbindungen mit seiner Zulassen/Verweigern-Steuerung für nicht zugeordneten Verkehr, der Schaltfläche Regel hinzufügen, dem aufklappbaren pf-Format und dem Schalter Transparentes Abfangen deaktivieren

Der Bereich zeigt eine Zeile pro konfiguriertem Zugangsdatum, in derselben Reihenfolge, in der der Bereich Zugangsdaten sie auflistet. Jede Zeile zeigt den Titel und den bzw. die Hosts des Zugangsdatums und trägt zwei Steuerelemente:

  • Ein Kontrollkästchen Vor Nutzung fragen (auf dem Steuerelement selbst mit Freigabe zur Nutzung erforderlich beschriftet) — das Zustimmungs-Gate pro Zugangsdatum, das vom Bereich Zugangsdaten hierher verschoben wurde.
  • Eine inline eingebettete Auswahl für die Schreibrichtlinie, die nur dort angezeigt wird, wo der Dienst des Zugangsdatums eine solche unterstützt.

Wenn der Arbeitsbereich keine Zugangsdaten hat, zeigt der Bereich einen Leerzustand — Keine Zugangsdaten zum Schützen — der Sie zurück zum Bereich Zugangsdaten verweist. Details zur Durchsetzung, Fehlerformate und Audit-Protokolle werden im Deep Dive zu Prompt-Injection und Schutzmechanismen behandelt.

Vor Nutzung fragen

Jede Zeile hat ein Kontrollkästchen Vor Nutzung fragen, das standardmäßig ausgeschaltet ist. Wenn es eingeschaltet ist, pausiert der Proxy bei der ersten Verwendung dieses Zugangsdatums in einer Sitzung und blendet einen Zustimmungsdialog ein, der zeitlich begrenzte Freigaben anbietet — 5 Minuten, 1 Stunde oder den Rest der Sitzung — oder Nicht zulassen. Freigaben existieren nur im Arbeitsspeicher und werden gelöscht, wenn das Sitzungsfenster geschlossen wird, und jede aktive Entscheidung wird unter Fenster → Zugangsdaten-Freigaben… aufgeführt. Das Zustimmungsmodell, die Zusammenführung gleichzeitiger Prompts und das Freigabe-Fenster werden unter Zugangsdaten und die Übertragungsgrenze behandelt.

Dieses Kontrollkästchen gilt für jedes Zugangsdatum, einschließlich einfacher API-Schlüssel, SSH-Schlüssel und manueller Token — die Zeilen ohne Schreibrichtlinie zeigen nur dieses Steuerelement.

Schreibrichtlinie

Wo der Dienst eines Zugangsdatums seinen eigenen Datenverkehr klassifizieren kann, zeigt die Zeile auch eine Auswahl für die Schreibrichtlinie. Sie erscheint bei:

  • Git-Forges — GitHub-, GitLab-, Bitbucket-Token.
  • AWS-Zugangsdaten.
  • DigitalOcean-Token.
  • Container-Registries (Docker Hub, ghcr.io und andere).
  • Kubernetes-Kontexten.
  • Datenbank-Endpunkten (MongoDB, ClickHouse, Elasticsearch).

Jede Schreibrichtlinie bietet dieselben vier Modi:

ModusVerhalten
AusKeine Filterung.
Vor Schreibvorgang fragenLesevorgänge werden durchgelassen. Jeder Schreibvorgang pausiert für einen Host-seitigen Zustimmungsdialog, der die exakte Operation anzeigt, mit zeitlich begrenzten Freigaben (siehe unten).
Destruktives blockierenLöschungen, Drops und Terminierungen werden blockiert; Erstellungen und Aktualisierungen werden durchgelassen.
Nur lesenJede Mutation wird blockiert; nur Lesevorgänge werden durchgelassen.

Neue Arbeitsbereiche verwenden standardmäßig Vor Schreibvorgang fragen für jeden Dienst, der eine Richtlinie unterstützt (über die Voreinstellungsvorlage). Arbeitsbereiche, die vor der Einführung der Schutzmechanismen erstellt wurden — oder Profile, deren JSON das Feld auslässt — werden als Aus dekodiert.

Hinweis: Die Schreibrichtlinie gilt pro Dienst, nicht pro Zugangsdatum. Zwei Zugangsdaten für denselben Dienst — etwa zwei GitHub-Token — teilen sich eine Richtlinie, sodass eine Änderung der Auswahl in einer der beiden Zeilen sie für beide ändert.

Hinweis: Schutzmechanismen klassifizieren Operationen; sie verbergen keine Zugangsdaten. Das Zugangsdatum selbst wird weiterhin vom Proxy wie unter Zugangsdaten konfiguriert injiziert und ausgetauscht. Kombinieren Sie eine Nur lesen-Schreibrichtlinie mit dem Kontrollkästchen Vor Nutzung fragen derselben Zeile für einen tiefengestaffelten Schutz.

Wie jeder Dienst Aufrufe klassifiziert

DienstGeltungsbereichKlassifizierung
KubernetesDie Kubernetes-API-Server aus den kubeconfigs dieses ArbeitsbereichsGET/HEAD/OPTIONS = Lesen; DELETE = destruktiv (einschließlich deletecollection); andere Verben = Schreiben. Blockierte Aufrufe geben ein Kubernetes-Status-403-JSON zurück, das kubectl sauber darstellt.
AWSAlle *.amazonaws.com-HostsDer Aktionsname aus dem Header X-Amz-Target (Dienste mit JSON-Protokoll wie DynamoDB und Lambda) oder dem Formularparameter Action= (Dienste mit Query-Protokoll wie EC2, IAM, SQS) wird nach Präfix klassifiziert: Delete*/Terminate*/Remove*/Purge*/Destroy*/Deregister*/Revoke* = destruktiv; Get*/List*/Describe* und ähnliche = Lesen. Fällt bei S3 und REST-artigen Anfragen auf die HTTP-Methode zurück. Blockierte Aufrufe geben einen AccessDeniedException-Body zurück.
DigitalOceanapi.digitalocean.com und *.digitalocean.comHTTP-Methode: DELETE = destruktiv; GET/HEAD = Lesen.
Container-RegistriesDie unter Zugangsdaten konfigurierten Registries plus Docker-Hub-EndpunktePull (GET) = Lesen; Push (PUT/POST) = Schreiben; DELETE = destruktiv. Blockierte Aufrufe geben einen Registry-artigen DENIED-Fehler-Body zurück.
GitHubgithub.com-REST-API und Git über HTTPSMethodenbasiert für REST. git push (git-receive-pack) zählt als Schreibvorgang — blockiert bei Nur lesen, abgefragt bei Vor Schreibvorgang fragen; git fetch (git-upload-pack) ist immer ein Lesevorgang.
GitLabgitlab.com-REST-API und Git über HTTPSDieselbe Klassifizierungslogik wie GitHub.
Bitbucketbitbucket.org-REST-API und Git über HTTPSDieselbe Klassifizierungslogik wie GitHub.

Datenbank-Endpunkte klassifizieren nach Engine:

EngineLesenSchreibenDestruktiv
MongoDB (Atlas Data API)find, findOne, aggregateinsert, update, replacedeleteOne, deleteMany
ClickHouseSQL, dessen führendes Schlüsselwort SELECT, SHOW, DESCRIBE, EXPLAIN, WITH … istINSERT, CREATE, ALTER, …DROP, TRUNCATE, DELETE und ALTER … DELETE / DROP COLUMN / DROP PARTITION / CLEAR
Elasticsearch_search, _msearch, _count, _mget, _sql und andere Query-Endpunkte (auch über POST)_bulk, _update, DokumentindizierungDELETE und _delete_by_query

Eine orangefarbene inline eingeblendete Warnung erscheint, wenn eine Richtlinie gesetzt ist, es aber nichts gibt, worauf sie sich beziehen könnte — keine kubeconfigs für einen Kubernetes-Kontext, kein gesetzter Host für einen Datenbank-Endpunkt — da der Schutzmechanismus dann keine Hosts hat, auf die er angewendet werden kann.

Hinweis: Wenn bei ClickHouse kein SQL-Text in der Anfrage sichtbar ist, blockiert Nur lesen die Anfrage (Bromure kann nicht beweisen, dass es ein Lesevorgang ist), während Destruktives blockieren sie durchlässt (es irrt zugunsten des Durchlassens).

Der Zustimmungsdialog (Vor Schreibvorgang fragen)

Im Modus Vor Schreibvorgang fragen werden Lesevorgänge stillschweigend durchgelassen, und jeder Schreibvorgang pausiert für einen Host-Dialog mit dem Titel Allow write on "<scope>" from workspace "<name>"?. Der Dialogtext zeigt die exakte Operation wortwörtlich — die literale SQL-Anweisung für eine Datenbank oder METHOD /path für einen REST-Aufruf — sodass Sie genehmigen, was tatsächlich ausgeführt wird, nicht eine Zusammenfassung. Die Schaltflächen sind:

  • Für 15 Minuten zulassen (die Standardschaltfläche)
  • Einmal zulassen — erzeugt absichtlich keine Freigabe, sodass der nächste Schreibvorgang erneut abgefragt wird. Nützlich, um einen geschwätzigen Agenten Schreibvorgang für Schreibvorgang zu auditieren.
  • Für den Rest der Sitzung zulassen
  • Nicht zulassen — der Agent erhält denselben harten Fehler, den die Blockiermodi erzeugen. Die Ablehnung wird 60 Sekunden lang gemerkt, sodass ein Agent, der denselben Schreibvorgang in einer Schleife wiederholt, nicht jede Sekunde erneut abgefragt wird.

Freigaben gelten pro Arbeitsbereich und pro Protokoll-Geltungsbereich: ein Kubernetes-API-Host, AWS als Ganzes, eine Container-Registry, jede Git-Forge als Ganzes oder ein Datenbank-Host. Das Zulassen von ClickHouse-Schreibvorgängen auf einem Host gewährt nirgendwo sonst etwas. Gleichzeitige identische Schreibvorgänge werden zu einem einzigen Dialog zusammengeführt, und alle Entscheidungen existieren nur im Arbeitsspeicher — sitzungsgebundene Freigaben werden beim Abbau der Sitzung gelöscht.

Wenn der Arbeitsbereich headless über SSH oder die CLI angesteuert wird, werden dieselben vier Optionen als Textprompt innerhalb des tmux des Arbeitsbereichs angeboten; keine Antwort bedeutet Ablehnung.

Hinweis: Schreib-Freigaben der Schutzmechanismen werden in keinem Fenster aufgeführt. Das Fenster Zugangsdaten-Freigaben (Menü Fenster → Zugangsdaten-Freigaben…) zeigt nur Zustimmungsentscheidungen für Zugangsdaten — die Vor Nutzung fragen-Freigaben; eine Schreibrichtlinien-Freigabe läuft nach ihrer eigenen Uhr oder beim Abbau der Sitzung ab.

Die Egress-Firewall

Unterhalb der Zugangsdaten-Zeilen beherbergt der Bereich die Ausgehende Verbindungen-Firewall des Arbeitsbereichs: eine geordnete Regeltabelle, die bestimmt, welche Verbindungen die VM überhaupt öffnen darf — jedes Protokoll, jedes Ziel, nicht nur die Dienste, die Schutzmechanismen klassifizieren. Regeln werden von oben nach unten geprüft, die erste Übereinstimmung gewinnt, und ein segmentiertes Steuerelement Nicht zugeordneter Verkehr wählt den Standard für alles, worauf keine Regel passt: Zulassen (der Standard für neue Arbeitsbereiche) oder Verweigern für eine abgeriegelte Positivlisten-Haltung.

Jede Regel besteht aus fünf Teilen:

SpalteWerteBedeutung
Aktionallow / denyWas mit einem passenden Datenfluss geschieht.
Prototcp / udp / web / anyweb ist HTTP(S) über TCP — das einzige Protokoll, dessen Regeln auch Anfragemethoden einschränken können.
Host / CIDRany, ein Hostname oder ein IPv4-CIDRHostnamen passen per Suffix: example.com umfasst die Apex-Domain und jede Subdomain; *.example.com nur Subdomains. Eine nackte IP entspricht einem /32.
Portsany, ein Port, ein Bereich (8000-8999) oder eine ListeLeer bedeutet jeder Port.
MethodenHTTP-Verben, nur web-RegelnBei allow eine Positivliste (GET,POST — nur diese Verben kommen durch); bei deny eine Sperrliste (PUT,DELETE — diese Verben werden abgelehnt, alles andere kommt durch). read-only ist die Kurzform für GET/HEAD/OPTIONS.

Ein aufklappbarer Bereich am unteren Rand zeigt denselben Regelsatz in seinem kanonischen pf-Format — eine Regel pro Zeile, abschließend mit default allow oder default deny —, so werden die Regeln gespeichert, und das ist es, was die CLI und verwaltete Profile transportieren:

allow tcp api.github.com:443
allow web api.example.com GET,POST     # nur diese Verben erreichen die Site
deny  web api.internal PUT,DELETE      # diese Verben blockieren, den Rest erlauben
deny  udp any:53
deny  any 10.0.0.0/8
default deny

Die Durchsetzung erfolgt Host-seitig und in Schichten, sodass ein kompromittierter Agent sie nicht umgehen kann: Der virtuelle Netzwerk-Switch wendet die Regeln auf jeden Datenfluss anhand der Ziel-IP und des per DNS-Mitschnitt ermittelten Hostnamens an (alle Protokolle, einschließlich einfachem TCP und UDP), und der MITM-Proxy wendet sie erneut anhand des TLS-Servernamens und — bei web-Regeln — anhand der einzelnen HTTP-Methode an. Genau die Methoden-Dimension erlaubt es einem Arbeitsbereich, eine API zu lesen, in die er nicht schreiben darf: allow web api.example.com GET,POST gibt dem Agenten Abfragen ohne Mutationen, auf der Übertragungsstrecke, unabhängig davon, welches Werkzeug innerhalb der VM die Anfrage stellt.

Regeländerungen gelten sofort für laufende Sitzungen — das Speichern des Arbeitsbereichs aktualisiert die aktive Richtlinie ohne Neustart, auch für Headless-Sitzungen. Jedes Urteil wird als Firewall-Zeile im Fenster Sicherheits-Zeitleiste erfasst und auf registrierten Installationen als egress.firewall-Ereignis im Stream der Organisation.

Hinweis: Lokale Inferenz ist konstruktionsbedingt ausgenommen: Eine allow-Regel für den Inferenz-Endpunkt auf dem Host (bromure.llm) wird Ihren Regeln vorangestellt, sodass selbst default deny Agenten nicht von den Lokalen Modellen abschneiden kann. Dieser Verkehr verlässt Ihren Mac nie.

Transparentes Abfangen

Die Firewall wäre nur beratend, wenn die VM den Proxy einfach ignorieren könnte — das kann sie nicht mehr: Der virtuelle Switch leitet die Port-80- und Port-443-Flüsse der VM transparent in den Host-Proxy um — keine Umgebungsvariablen nötig, nichts, was der Gast abschalten kann. Einfaches HTTP auf Port 80 wird genauso abgefangen und untersucht wie HTTPS. Das ist für jeden Arbeitsbereich standardmäßig aktiv.

Die Notausstiegsluke ist der Schalter Transparentes Abfangen deaktivieren unterhalb der Regeltabelle. Ihn einzuschalten hindert den Switch daran, :80/:443 umzuleiten, sodass Schutzmechanismen und die web-Regeln der Firewall nur noch den Verkehr sehen, der die Proxy-Umgebungsvariablen freiwillig nutzt — verwenden Sie ihn nur für einen Arbeitsbereich, der unter dem Abfangen wirklich kaputtgeht (etwa starkes Certificate Pinning, das die eingebaute Passthrough-Liste nicht abdeckt), und betrachten Sie die Firewall als beratend, solange er aktiv ist.

Was der Agent sieht, wenn ein Aufruf blockiert wird

Blockierte Aufrufe geben einen protokollgerechten 403-artigen Fehler-Body zurück — ein Kubernetes-Status-JSON, eine AWS-AccessDeniedException, eine Registry-DENIED-Payload — dessen Nachricht mit „blocked by Bromure Guardrails“ endet. Der Agent sieht einen sauberen, gewöhnlichen API-Fehler, den er melden kann, statt einer hängenden Verbindung. (Blockierungen der Lieferkette verwenden stattdessen HTTP 451, gerade damit die beiden auf einen Blick unterscheidbar sind — siehe Lieferkette.)

Einschränkungen

  • Git-Force-Push kann auf der Übertragung nicht von einem normalen Push unterschieden werden, sodass Destruktives blockieren ihn nicht blockiert — nur Nur lesen und Vor Schreibvorgang fragen kontrollieren Pushes. Explizite Löschungen über die Forge-REST-APIs werden weiterhin erfasst.
  • Kubernetes- und Container-Registry-Richtlinien gelten nur für Hosts, die aus den kubeconfigs und konfigurierten Registries des Arbeitsbereichs abgeleitet werden; Datenbankrichtlinien benötigen den unter Zugangsdaten gesetzten Host des Endpunkts. Ein Schutzmechanismus, der keinen Geltungsbereich hat, filtert nichts (der Bereich warnt Sie inline).
  • Die Schreibrichtlinien decken die oben aufgeführten Dienste ab; Datenverkehr zu anderen Hosts wird über die Host-, Port- und Methodenregeln der Egress-Firewall geregelt statt über semantische Klassifizierung. Für Paket-Downloads siehe Lieferkette, und für den KI-Datenverkehr des Agenten siehe Prompt-Injection.