Skip to main content

openclaw policy

openclaw policy wird vom gebündelten Policy-Plugin bereitgestellt. Es handelt sich um eine unternehmensweite Konformitätsschicht über den bestehenden OpenClaw-Einstellungen, nicht um ein zweites Konfigurationssystem. Sie definieren Anforderungen in policy.jsonc; OpenClaw erfasst den aktiven Workspace als Nachweis; Policy meldet Abweichungen über doctor --lint. Policy erzwingt keine Tool-Aufrufe und schreibt das Laufzeitverhalten nicht zum Anfragezeitpunkt um. Außerdem attestiert es keine agentenspezifischen Anmeldedatenspeicher wie auth-profiles.json. Policy prüft konfigurierte Kanäle, MCP-Server, Modell-Provider, die Netzwerk-SSRF- Sicherheitslage, den Ingress-/Kanalzugriff, die Gateway-Exposition und die Befehlslage von Nodes, definierte Nachrichten-Routing-Sonden, den Zugriff auf Agenten-Workspaces, die Sandbox-Sicherheitslage, die Datenverarbeitungslage, die Sicherheitslage von Secret-Providern/Authentifizierungsprofilen sowie kontrollierte Tool-Metadaten (TOOLS.md). Verwenden Sie es, wenn ein Workspace eine dauerhafte, überprüfbare Aussage benötigt, etwa „Telegram darf nicht aktiviert sein“ oder „kontrollierte Tools müssen Risiko- und Eigentümermetadaten deklarieren“. Wenn Sie lediglich lokales Verhalten ohne Attestierung oder Abweichungserkennung benötigen, reicht die normale Konfiguration aus.

Schnellstart

Das Plugin bleibt auch dann aktiviert, wenn policy.jsonc fehlt, sodass Doctor das fehlende Artefakt melden kann, anstatt Prüfungen stillschweigend zu überspringen. Erstellen Sie policy.jsonc manuell; es wird nicht aus den aktuellen Einstellungen generiert. Jeder Abschnitt der obersten Ebene ist ein Regel-Namespace: Eine Prüfung wird nur ausgeführt, wenn darin eine konkrete Regel vorhanden ist (nicht unterstützte Abschnitte oder Schlüssel führen zu policy/policy-jsonc-invalid, anstatt stillschweigend ignoriert zu werden). Minimales Beispiel, das jeden unterstützten Abschnitt abdeckt:
Abschnittsübergreifende Hinweise, die aus den nachstehenden Regeltabellen nicht unmittelbar hervorgehen:
  • Wenn gateway.bind bei gleichzeitigem Verbot von Bindungen außerhalb der Loopback-Schnittstelle weggelassen wird, akzeptieren Sie den Laufzeitstandard; legen Sie gateway.bind: "loopback" für strikte Konformität fest.
  • Legen Sie für einen schreibgeschützten Agenten den Sandbox-Wert mode in den entsprechenden Standardwerten bzw. für den entsprechenden Agenten auf all oder non-main und workspaceAccess auf none oder ro fest. Ein fehlender oder auf off gesetzter Sandbox-Modus erfüllt keine Schreibschutzrichtlinie.
  • agents.workspace.denyTools akzeptiert exec, process, write, edit, apply_patch. Die Tool-Verweigerungsgruppen der Konfiguration group:fs (Dateiänderungen) und group:runtime (Shell/Prozess) erfüllen die entsprechende Sicherheitslage.
  • Prüfungen der Ausführungsgenehmigungen lesen das aktive Artefakt exec-approvals.json nur, wenn eine Regel execApprovals vorhanden ist; ein fehlendes oder ungültiges Artefakt ist nicht beobachtbarer Nachweis und kein künstlich erzeugter Erfolg.
  • Nachweise zu Secrets und Authentifizierungsprofilen erfassen nur die Provider-/Quellenlage und SecretRef-Metadaten, niemals Rohwerte. Policy liest oder attestiert keine agentenspezifischen Anmeldedatenspeicher wie auth-profiles.json.
  • Nachweise zur Datenverarbeitung stellen lediglich die Sicherheitslage auf Konfigurationsebene dar (Schwärzungsmodus, Umschalter für Telemetrieerfassung, Sitzungswartungsmodus, Einstellung zur Transkriptindizierung). Sie untersuchen keine Protokolle, Telemetrieexporte, Transkripte oder Speicherdateien, und ein einwandfreies Ergebnis beweist nicht, dass darin keine personenbezogenen Daten oder Secrets vorhanden sind.
  • Routing-Sonden verwenden den Laufzeit-Bindungsresolver von OpenClaw erneut. Routing-Nachweise erfassen nur die Sonden-ID, den aufgelösten Agenten, die Übereinstimmungsart und geschwärzte Bindungsmetadaten. Sie erfassen niemals Kennungen von Peers, Konten, Guilds, Teams oder Rollen. Das Hinzufügen eines Routing-Abschnitts ändert bewusst die Policy- und Attestierungs- Hashes; Policies ohne Routing behalten ihre bestehende Nachweisstruktur bei.

Referenz der Policy-Regeln

Jede nachstehende Regel ist optional; eine Prüfung wird nur ausgeführt, wenn die Regel vorhanden ist. Der beobachtete Zustand entspricht der bestehenden OpenClaw-Konfiguration oder den Workspace-Metadaten.

Bereichsbezogene Overlays

Verwenden Sie scopes.<scopeName>, wenn bestimmte Agenten oder Kanäle eine strengere Policy als die Baseline der obersten Ebene benötigen. Der Bereichsname ist lediglich eine Bezeichnung; die Übereinstimmung verwendet den Selektor innerhalb des Bereichs. Overlays sind additiv: Die globale Regel wird weiterhin ausgeführt, und die bereichsbezogene Regel kann für denselben Nachweis einen eigenen Befund hinzufügen. Wenn ein Eintrag agentIds nicht in agents.entries.* vorhanden ist, wertet OpenClaw die bereichsbezogene Regel anhand der geerbten globalen/standardmäßigen Sicherheitslage für die ID dieses Laufzeitagenten aus, anstatt sie zu überspringen.
Derselbe Agent kann in mehreren Bereichen vorkommen, wenn jeder Bereich ein anderes Feld kontrolliert, wie oben gezeigt. Ein wiederholtes bereichsbezogenes Feld für denselben Agenten muss gleich oder stärker einschränkend sein; eine schwächere doppelte Vorgabe wird abgelehnt (Positivlisten sind Teilmengen, Sperrlisten sind Obermengen, erforderliche boolesche Werte sind festgelegt). Regeln zur Container-Sicherheitslage (sandbox.containers.*) werden nur anhand von Nachweisen geprüft, die das Sandbox-Backend des übereinstimmenden Agenten bereitstellen kann. Wenn ein Backend eine dafür aktivierte Regel nicht beobachten kann, meldet Policy policy/sandbox-container-posture-unobservable, anstatt die Prüfung als bestanden zu werten; beschränken Sie Container-Regeln auf die Agentengruppen, die ein Backend verwenden, das sie bereitstellen kann. ingress.session.requireDmScope auf oberster Ebene bleibt global; session.dmScope ist kein einem Kanal zuordenbarer Nachweis und kann daher nicht über channelIds eingeschränkt werden. Jeder in policy.jsonc vorhandene Bereich muss gültig und durchsetzbar sein.

Kanäle

MCP-Server

Modell-Provider

Netzwerk

Nachrichtenrouting

Prüf-IDs müssen eindeutig sein. Eine Route unterstützt channel, optional accountId, peer, parentPeer, guildId, teamId und memberRoleIds. Peer-Arten sind direct, group und channel. matchedBy kann eine oder mehrere Laufzeit- Übereinstimmungsarten enthalten, darunter binding.peer, binding.account, binding.channel oder default. Routingprüfungen sind ausschließlich Konformitätsprüfungen. Sie ändern weder den Startvorgang noch die Nachrichtenzustellung, die Bindungspriorität oder das Fallback-Verhalten. Befunde erfordern eine Überprüfung durch den Betreiber, da die automatische Änderung einer Bindung private Nachrichten umleiten könnte.

Eingangs- und Kanalzugriff

Gateway

gateway.nodes.denyCommands ist eine exakte, groß-/kleinschreibungssensitive Superset-Regel für Richtlinienverweigerungen. Verwenden Sie sie, wenn die Richtlinie nachweisen muss, dass privilegierte Node-Befehle durch die OpenClaw-Konfiguration ausdrücklich verweigert werden. Bei einer Bereitstellung, die einen privilegierten Node-Befehl absichtlich zulässt, sollte policy.jsonc nach der Überprüfung aktualisiert werden, statt sich allein auf gateway.nodes.commands.allow zu verlassen.

Agenten-Arbeitsbereich

Sandbox-Sicherheitslage

Die Richtlinie behandelt ein fehlendes sandbox.mode als dessen impliziten Standardwert off, sodass sandbox.requireMode eine neue oder nicht konfigurierte Sandbox als außerhalb einer Zulassungsliste wie ["all"] meldet.

Datenverarbeitung

Geheimnisse

Ausführungsgenehmigungen

Prüfungen der Ausführungsgenehmigungen lesen das Laufzeitartefakt exec-approvals.json: standardmäßig ~/.openclaw/exec-approvals.json oder $OPENCLAW_STATE_DIR/exec-approvals.json, wenn OPENCLAW_STATE_DIR gesetzt ist. Sicherheitslageregeln unter execApprovals.defaults.* oder execApprovals.agents.* verlangen lesbare Artefaktnachweise; ein fehlendes oder ungültiges Artefakt wird als nicht beobachtbarer Nachweis gemeldet und nicht nach bestem Bemühen als bestanden gewertet. Sobald das Artefakt lesbar ist, übernehmen ausgelassene Felder die Laufzeitstandardwerte: Ein fehlendes defaults.security entspricht full, und eine fehlende Agentensicherheit übernimmt diesen Standardwert. Der Nachweis umfasst defaults, agents.*, agents.*.allowlist[].pattern, optional argPattern, die effektive autoAllowSkills-Sicherheitslage und die Eintragsquelle – niemals Socket-Pfad/-Token, commandText, lastUsedCommand, aufgelöste Pfade oder Zeitstempel. Beispiel: Das Genehmigungsartefakt verlangen, permissive Standardwerte ablehnen und nur die geprüfte Ausführungs-Genehmigungshaltung für ausgewählte Agenten zulassen.

Authentifizierungsprofile

Tool-Metadaten

Tool-Haltung

Prüfungen ausführen

Während der Erstellung ausschließlich Richtlinienprüfungen ausführen:
policy check führt nur den Satz von Richtlinienprüfungen aus und gibt Nachweise, Befunde und Attestierungshashes aus. Dieselben Befunde erscheinen auch in openclaw doctor --lint, wenn das Richtlinien-Plugin aktiviert ist. Eine Betreiber-Richtliniendatei mit einer erstellten Baseline vergleichen:
policy compare prüft die Syntax der Richtliniendatei gegen die Syntax der Richtliniendatei; dabei werden weder Laufzeitzustand noch Nachweise, Anmeldedaten oder Geheimnisse untersucht. Es werden dieselben Regelmetadaten verwendet, die bereichsspezifische Überlagerungen steuern: Zulassungslisten müssen gleich bleiben oder enger werden, Sperrlisten müssen gleich bleiben oder breiter werden, erforderliche boolesche Werte müssen ihren Wert beibehalten, geordnete Zeichenfolgen dürfen sich nur zum strengeren Ende der konfigurierten Reihenfolge bewegen und exakte Listen müssen übereinstimmen. Die Baseline kann eine von der Organisation erstellte Richtlinie sein; die geprüfte Richtlinie darf strengere Werte oder zusätzliche Regeln hinzufügen. Eine geprüfte Regel auf oberster Ebene kann eine bereichsspezifische Baseline-Regel erfüllen, wenn sie gleich oder stärker einschränkend ist. Bereichsnamen müssen zwischen den Dateien nicht übereinstimmen; der Vergleich erfolgt anhand von Selektor (agentIds/channelIds) und Feld. Bei Routing-Prüfungen muss jede Baseline-Prüfungs-ID mit derselben Route und demselben erwarteten Agenten bestehen bleiben. Eine geprüfte Richtlinie darf Prüfungen hinzufügen oder matchedBy einschränken, aber das Entfernen einer Prüfung, das Ändern ihrer Route oder ihres Agenten oder das Erweitern ihrer akzeptierten Übereinstimmungsarten ist schwächer. Erfolgreicher Vergleich (--json):
Eine erfolgreiche policy check --json-Ausgabe enthält stabile Hashes, die ein Betreiber oder eine Aufsichtsperson aufzeichnen kann:

Richtlinie konfigurieren

Die Richtlinienkonfiguration befindet sich unter plugins.entries.policy.config.
plugins.entries.policy.config.enabled auf false setzen, um Richtlinienprüfungen für einen Arbeitsbereich zu deaktivieren, während das Plugin installiert bleibt.

Richtlinienzustand akzeptieren

Beispielhafte JSON-Ausgabe:
attestation.policy.hash identifiziert das erstellte Regelartefakt. evidence zeichnet den beobachteten OpenClaw-Zustand auf, den die Prüfungen verwenden, und workspace.hash identifiziert diese Evidenznutzlast. findingsHash identifiziert den exakten Befundsatz. checkedAt zeichnet auf, wann die Prüfung ausgeführt wurde. attestationHash identifiziert die stabile Aussage (Richtlinien-Hash, Evidenz-Hash, Befund-Hash und sauberer/geänderter Zustand) und schließt checkedAt bewusst aus, sodass derselbe Richtlinienzustand stets denselben Attestierungs-Hash erzeugt. Zusammen bilden diese vier Werte das Audit-Tupel für eine Richtlinienprüfung. Wenn ein Gateway oder Supervisor Richtlinien verwendet, um eine Laufzeitaktion zu blockieren, zu genehmigen oder mit Anmerkungen zu versehen, sollte er den Attestierungs-Hash der letzten sauberen Prüfung aufzeichnen. checkedAt verbleibt für Audit-Protokolle in der JSON-Ausgabe, ist jedoch kein Bestandteil des stabilen Hashs. Lebenszyklus zum Akzeptieren des Richtlinienzustands:
  1. Erstellen oder prüfen Sie policy.jsonc.
  2. Führen Sie openclaw policy check --json aus.
  3. Wenn die Prüfung sauber ist, zeichnen Sie attestation.policy.hash als expectedHash auf.
  4. Zeichnen Sie attestation.attestationHash als expectedAttestationHash auf.
  5. Führen Sie openclaw doctor --lint in der CI oder in Release-Gates erneut aus.
Wenn Richtlinienregeln absichtlich geändert werden, aktualisieren Sie beide akzeptierten Hashs anhand einer sauberen Prüfung. Wenn sich nur die Workspace-Einstellungen ändern (die Richtlinie bleibt unverändert), ändert sich normalerweise nur expectedAttestationHash. Das Aktivieren oder Aktualisieren von agents.workspace-Regeln fügt agentWorkspace-Evidenz zum Workspace-Hash und zum Attestierungs-Hash hinzu; prüfen Sie die neue Evidenz und aktualisieren Sie nach der Aktivierung die akzeptierten Attestierungs-Hashes. Das Aktivieren oder Aktualisieren von Regeln für die Tool-Sicherheitskonfiguration fügt auf dieselbe Weise toolPosture-Evidenz hinzu. openclaw policy watch führt die Prüfung erneut aus und meldet, wenn die aktuelle Evidenz nicht mehr mit expectedAttestationHash übereinstimmt:
Verwenden Sie --once in der CI oder in Skripten, die eine einmalige Driftbewertung benötigen. Ohne --once wird standardmäßig alle zwei Sekunden abgefragt; verwenden Sie --interval-ms, um das Intervall zu ändern.

Befunde

Ein Befund kann sowohl target (das beobachtete Element im Arbeitsbereich, das nicht konform ist) als auch requirement (die definierte Regel, durch die es zu einem Befund wurde) enthalten. Beide sind derzeit oc://-Adresszeichenfolgen, die Feldnamen beschreiben jedoch die Rolle in der Richtlinie und nicht das Adressformat. Beispielbefunde:

Reparatur

doctor --lint und policy check sind schreibgeschützt. doctor --fix bearbeitet richtlinienverwaltete Arbeitsbereichseinstellungen nur, wenn workspaceRepairs ausdrücklich aktiviert ist; andernfalls melden die Prüfungen, was sie reparieren würden, und lassen die Einstellungen unverändert. In dieser Version kann die Reparatur durch channels.denyRules verweigerte Kanäle deaktivieren und die unten aufgeführten automatischen Einschränkungsreparaturen anwenden. Aktivieren Sie workspaceRepairs erst, nachdem die Richtliniendatei überprüft wurde, da eine gültige Regel die Arbeitsbereichskonfiguration ändern kann:
  • tools.elevated.enabled=false festlegen, wenn eine globale Richtlinie erweiterte Tools verbietet
  • fehlende Tool-IDs für obligatorische Verweigerungen zu tools.deny oder agents.entries.*.tools.deny hinzufügen, wenn die Richtlinie die Verweigerung dieser Tools verlangt
  • unsichere gateway.controlUi.*-Umschalter auf false setzen
  • gateway.mode=local festlegen, wenn die Richtlinie den Remote-Gateway-Modus verweigert
  • gemeldete gateway.http.endpoints.*.enabled-Pfade auf false setzen, wenn die Richtlinie Gateway-HTTP-API-Endpunkte verweigert
  • gemeldete groupPolicy-Pfade für eingehenden Kanalverkehr auf allowlist setzen, wenn die Richtlinie offenen Gruppenzugriff verweigert
  • gemeldete requireMention-Pfade für eingehenden Kanalverkehr auf true setzen, wenn die Richtlinie Gruppenerwähnungen verlangt
  • logging.redactSensitive=tools festlegen, wenn die Richtlinie die Schwärzung sensibler Protokolldaten verlangt
  • diagnostics.otel.captureContent=false oder diagnostics.otel.captureContent.enabled=false für objektbasierte Einstellungen zur Telemetrieerfassung festlegen, wenn die Richtlinie die Erfassung von Telemetrieinhalten verweigert
Bereichsbezogene Reparaturen für erweiterte Tools dienen nur der Erkennung. Bereichsbezogene Reparaturen zur Datenverarbeitung werden ebenfalls übersprungen, wenn der Befund eine gemeinsam verwendete Protokollierungs- oder Telemetriekonfiguration meldet, da eine Änderung der gemeinsam verwendeten Einstellung mehr als das bereichsbezogene Richtlinienziel betreffen würde. Bereichsbezogene Reparaturen obligatorischer Verweigerungen werden übersprungen, wenn der Befund geerbtes Root-tools.deny meldet, da das Hinzufügen des erforderlichen Tools zur Root-Konfiguration mehr als das bereichsbezogene Richtlinienziel betreffen würde. Agent-lokale Reparaturen obligatorischer Verweigerungen können den gemeldeten agents.entries.*.tools.deny-Pfad aktualisieren. Bereichsbezogene Reparaturen des eingehenden Kanalverkehrs werden übersprungen, wenn der Befund geerbtes channels.defaults.* meldet, da eine Änderung des gemeinsam verwendeten Kanalstandards mehr als das bereichsbezogene Richtlinienziel betreffen würde. Befunde zur Positivliste für den HTTP-URL-Abruf des Gateways bleiben manuell zu bearbeiten, da die automatische Reparatur nicht die korrekten URL-Werte der Endpunkt-Positivliste auswählen kann. Befunde zur Gateway-Bindung und zu Node-Befehlen bleiben überprüfungspflichtig. Wenn policy/gateway-non-loopback-bind oder policy/gateway-node-command-denied einem Konfigurationspfad zugeordnet werden können, meldet doctor --fix die vorgeschlagene Änderung von gateway.bind oder gateway.nodes.commands.deny als übersprungene Vorschauhinweise. Die Änderung wird nicht angewendet, und der Befund gilt erst dann als repariert, wenn ein Operator die Konfiguration oder Richtlinie überprüft und aktualisiert.

Exitcodes

Verwandte Themen