Sandbox für Cortex Code-CLI¶
Die Cortex Code-CLI kann Shell-Befehle innerhalb einer Sandbox ausführen, um den Zugriff auf das Dateisystem, den Netzwerkzugriff und die Verarbeitungsmöglichkeiten einzuschränken. Sandboxing fügt eine Isolationsebene hinzu, sodass der Agent nicht versehentlich Dateien ändern oder auf Ressourcen außerhalb Ihres Projekts zugreifen kann.
Wichtig
Die Unterstützung dieses Features ist experimentell und kann sich ändern.
Plattformunterstützung¶
Die Sandbox verwendet die integrierten Isolationsfeatures des Betriebssystems, um Befehle einzuschränken.
Plattform |
Implementierung |
Abhängigkeiten |
|---|---|---|
macOS |
|
|
Linux |
|
|
Windows |
Native eingeschränkte Token |
Keine |
Installieren von Abhängigkeiten¶
macOS:
Debian / Ubuntu:
Fedora / RHEL:
Aktivieren der Sandbox¶
Verwenden Sie den Schrägstrich-Befehl /sandbox in der Cortex Code-CLI:
Sie können die Sandbox auch in Ihrer Einstellungsdatei aktivieren. Fügen Sie ein sandbox-Objekt in ~/.snowflake/cortex/settings.json (Benutzerebene) oder .snowflake/cortex/settings.json (Projektebene) ein:
Der Standardberechtigungsmodus ist "regular". Um den automatischen Zulassungsmodus zu verwenden, legen Sie "mode": "autoAllow" explizit fest. Siehe Berechtigungsmodi.
Berechtigungsmodi¶
Die Sandbox verfügt über zwei Berechtigungsmodi, die steuern, wie Befehle genehmigt werden:
Modus |
Einstellungswert |
Verhalten |
|---|---|---|
Automatisches Zulassen |
|
Befehle, die in einer Sandbox ausgeführt werden können, werden automatisch ohne Aufforderung ausgeführt. Befehle, die nicht in einer Sandbox ausgeführt werden können (z. B. solche, die den Netzwerkzugriff auf nicht zulässige Domänen erfordern), greifen auf den normalen Berechtigungsablauf zurück. |
Regulär |
|
Alle Befehle erfordern eine Genehmigung, auch wenn sie innerhalb der Sandbox ausgeführt werden. |
Legen Sie den Modus mit dem /sandbox-Befehl oder in den Einstellungen fest:
Dateisystemeinschränkungen¶
Die Sandbox steuert, auf welche Pfade Befehle zugreifen und in welche sie schreiben dürfen.
Standardverhalten¶
Arbeitsverzeichnis: Für Lese- und Schreibvorgänge immer zulässig.
Skills-Verzeichnis (
~/.snowflake/cortex/skills): Zulässig.Kontextverzeichnis (
~/.snowflake/cortex/.ctx): Zulässig, wennctxAvailableaktiviert ist.
Geschützte Pfade (für Schreibvorgänge immer verweigert)¶
Die folgenden Pfade sind immer geschützt, unabhängig von Ihrer Konfiguration:
Shell-Konfigurationsdateien:
~/.bashrc,~/.bash_profile,~/.zshrc,~/.zprofile,~/.profile,~/.bash_login,~/.bash_logoutGit-Hooks:
~/.git/hooks,.git/hooksSSH-Konfiguration:
~/.ssh/authorized_keys,~/.ssh/configVerzeichnisse und Dateien für verwaltete Einstellungen:
/Library/Application Support/Cortex/(macOS),/etc/cortex/(Linux),%ProgramData%\Cortex\(Windows)
Kundenspezifische Dateisystemregeln¶
Konfigurieren Sie den Dateisystemzugriff in den Einstellungen:
Einstellung |
Standard |
Beschreibung |
|---|---|---|
|
|
Pfade, die die Sandbox lesen kann. Ein leeres Array bedeutet, dass alle Pfade zulässig sind (außer die in``denyRead``). |
|
|
Pfade, die die Sandbox nicht lesen kann. Hat Vorrang vor |
|
|
Pfade, in die die Sandbox schreiben kann. |
|
|
Pfade, in die die Sandbox nicht schreiben kann. Hat Vorrang vor |
Wichtig
Ablehnungsregeln haben immer Vorrang vor Zulassungsregeln. Wenn ein Pfad sowohl allowWrite als auch denyWrite entspricht, wird der Pfad abgelehnt.
Netzwerkeinschränkungen¶
Die Sandbox kann einschränken, auf welche Domänen Befehle über das Netzwerk zugreifen können.
Einstellung |
Standard |
Beschreibung |
|---|---|---|
|
|
Domänen, auf die die Sandbox zugreifen kann. Ein leeres Array bedeutet, dass alle Domänen zulässig sind (außer die in``deniedDomains``). Unterstützt Platzhalter ( |
|
|
Domänen, auf die die Sandbox nicht zugreifen kann. Hat Vorrang vor |
|
|
Gibt an, ob Sandbox-Befehle lokale Ports binden können. |
Fallback für Befehle, die außerhalb der Sandbox ausgeführt werden¶
Einige Befehle sind möglicherweise nicht mit der Sandbox kompatibel. Die Einstellung allowUnsandboxedCommands steuert, was passiert, wenn ein Befehl nicht innerhalb der Sandbox ausgeführt werden kann.
Einstellung |
Verhalten |
|---|---|
|
Der Agent kann anfordern, dass der Befehl auf dem Host ausgeführt wird. Sie werden aufgefordert, dies zu genehmigen. |
|
Die Befehle müssen innerhalb der Sandbox ausgeführt werden oder in |
Ausgeschlossene Befehle¶
Sie können Befehle angeben, die immer auf dem Host außerhalb der Sandbox ausgeführt werden sollen:
Ausgeschlossene Befehle umgehen die Sandbox und folgen dem normalen Berechtigungsablauf.
Einstellungsreferenz¶
Die vollständige sandbox-Einstellungsobjekt:
Einstellung |
Standard |
Beschreibung |
|---|---|---|
|
|
Aktivieren oder Deaktivieren der Sandbox. |
|
|
Berechtigungsmodus: |
|
|
Zulassen des Fallbacks für eine Ausführung auf dem Host, wenn ein Befehl nicht in einer Sandbox ausgeführt werden kann. |
|
|
Befehle, die immer auf dem Host außerhalb der Sandbox ausgeführt werden. |
|
|
Zulassungsregeln für allgemeine Berechtigungen. Unterstützt Muster wie |
|
|
Ablehnungsregeln für allgemeine Berechtigungen. Gleiche Mustersyntax wie |
|
|
Zulassungsliste für Netzwerkdomänen (leer = alle zulassen). Unterstützt Platzhalter. |
|
|
Ablehnungsliste für Netzwerkdomänen Hat Vorrang vor Zulassungsliste. |
|
|
Zulassen, dass Sandbox-Befehle lokale Ports binden können. |
|
|
Lesen der Zulassungsliste (leer = alle zulassen außer ‚deny‘). |
|
|
Lesen der Ablehnungsliste. Hat Vorrang. |
|
|
Schreiben der Zulassungsliste. |
|
|
Schreiben der Ablehnungsliste. Hat Vorrang. |
|
|
Erlauben des Sandbox-Zugriffs auf das Kontextverzeichnis ( |
Konfigurationsbereiche¶
Sandbox-Einstellungen folgen der gleichen Priorität wie andere Cortex Code-Einstellungen:
Projektebene (höchste Priorität):
.snowflake/cortex/settings.jsonBenutzerebene:
~/.snowflake/cortex/settings.jsonVerwaltet/erzwungen: Admins können die Sandbox-Richtlinie über die Datei für verwaltete Einstellungen durchsetzen. Siehe Verwaltete Einstellungen (Organisationsrichtlinie).