Verwaltete Einstellungen (Organisationsrichtlinie)

Verwaltete Einstellungen erlauben IT-Administratoren, organisationsweites Verhalten für Cortex Code CLI durchzusetzen. Die Einstellungen werden in einer systemeigenen Datei bereitgestellt, die von Benutzern nicht geändert werden kann. Diese Einstellungen haben Vorrang vor allen Konfigurationen auf Benutzerebene.

Wenn verwaltete Einstellungen vorhanden sind, zeigt CLI beim Start ein Banner an, das darauf hinweist, dass es im verwalteten Modus ausgeführt wird.

Funktionsweise von verwalteten Einstellungen

Verwaltete Einstellungen werden von einer JSON-Datei in einem plattformspezifischen Systemverzeichnis gelesen, einem Speicherort, der Administrator- oder Root-Berechtigungen zum Schreiben erfordert. Da Benutzer Dateien an diesen Speicherorten nicht ändern können, können verwaltete Einstellungen nicht durch Benutzerkonfigurationsdateien, Umgebungsvariablen oder Befehlszeilenargumente überschrieben werden (außer wenn dies explizit angegeben ist).

Administratoren stellen die verwaltete Einstellungsdatei normalerweise mit MDM-Tools (Jamf, Intune, SCCM), Konfigurationsverwaltungssystemen (Ansible, Chef, Puppet) oder manuellen Bereitstellungen während der Gerätebereitstellung bereit

Dateispeicherorte

Platzieren Sie die managed-settings.json-Datei im folgenden Systemverzeichnis Ihres Betriebssystems:

Plattform

Path

macOS

/Library/Application Support/Cortex/managed-settings.json

Linux und WSL

/etc/cortex/managed-settings.json

Windows

%ProgramData%\Cortex\managed-settings.json

Wenn die Datei nicht existiert, wird CLI im nicht verwalteten Modus ausgeführt, und es gelten alle Standardeinstellungen auf Benutzerebene.

Bemerkung

Wenn die Datei existiert, aber ungültige JSON enthält oder die Schemavalidierung fehlschlägt, wendet CLI eine restriktive Fallback-Konfiguration an und zeigt ein Banner mit der Aufschrift „Enforcement config error – restricted mode“ an. Dadurch wird verhindert, dass eine fehlerhafte Richtliniendatei stillschweigend uneingeschränkten Zugriff gewährt.

Konfigurationsschema

Die managed-settings.json-Datei muss ein version-Feld enthalten. Alle Abschnitte der obersten Ebene sind optional.

{
  "version": "1.0",
  "permissions": { },
  "settings":    { },
  "required":    { },
  "defaults":    { },
  "files":       { },
  "ui":          { }
}

Das version-Feld muss "1.0" sein.

permissions

Steuert, welche Tools, Fähigkeiten, MCP-Server und Snowflake-Konten CLI verwenden kann. Die vollständige Mustersyntax finden Sie unter Berechtigungsmuster.

{
  "permissions": {
    "onlyAllow": ["read", "write", "bash(git:*)", "skill(bundled:*)"],
    "deny": ["bash(rm:*)", "skill(remote:*)"],
    "defaultMode": "allow",
    "dangerouslyAllowAll": false
  }
}

Feld

Typ

Standard

Beschreibung

onlyAllow

string[]

Zulassungsliste von Berechtigungsmustern. Falls festgelegt, sind nur übereinstimmende Elemente zulässig. Elemente, mit denen kein Muster übereinstimmt, sind blockiert, es sei denn, defaultMode ist``“allow“``.

deny

string[]

Ablehnliste von Berechtigungsmustern. Ablehnen hat Vorrang vor Zulassen. Eine Übereinstimmung blockiert hier immer, unabhängig von onlyAllow.

defaultMode

"allow" oder "deny"

"allow"

Verhalten, wenn kein Muster übereinstimmt. Verwenden Sie "deny" für eine strikte Zulassungsliste.

dangerouslyAllowAll

boolean

false

Steuert, ob Benutzer den --dangerously-allow-all-tool-calls-Flag verwenden können Im verwalteten Modus ist false standardmäßig eingestellt. Setzen Sie nur in ausdrücklich vertrauenswürdigen Umgebungen auf true.

settings

Setzt bestimmte Laufzeitverhalten durch, die von Benutzern nicht überschrieben werden können.

{
  "settings": {
    "forceNoHistoryMode": true,
    "forceSandboxEnabled": true,
    "forceSandboxMode": "regular"
  }
}

Feld

Typ

Standard

Beschreibung

forceNoHistoryMode

boolean

false

Wenn true, deaktiviert die gesamte Persistenz des Konversationsverlaufs. Sitzungsdateien werden nicht auf die Festplatte geschrieben. Verwenden Sie diese Funktion in hochsicheren oder Compliance-Umgebungen, in denen der Chat-Verlauf nicht gespeichert werden darf.

forceSandboxEnabled

boolean

false

Wenn true, erzwingt die Aktivierung der Sandbox unabhängig von den Benutzereinstellungen. Die Sandbox schränkt den Zugriff auf das Dateisystem während der Ausführung des Tools ein.

forceSandboxMode

"regular" oder "autoAllow"

Erzwingt einen bestimmten Sandbox-Modus.``“regular“`` fordert den Benutzer auf, bevor neue Dateisystempfade zugelassen werden.``“autoAllow“`` lässt stillschweigend alle Pfade innerhalb der Sandbox-Grenze zu. Wird nur wirksam, wenn die Sandbox aktiviert ist.

Die Sandbox begrenzt die Verzeichnisse, die CLI während einer Sitzung lesen und schreiben kann. Es wird ein Bestätigungsschritt hinzugefügt, bevor Tools auf Pfade außerhalb des vorab genehmigten Satzes zugreifen. "regular"-Modus erfordert für jedes neue Verzeichnis eine Bestätigung des Benutzers. Der "autoAllow"-Modus vertraut allen Verzeichnissen innerhalb der Arbeitsstruktur ohne Aufforderung. Sandbox ist eine experimentelle Funktion. Weitere Details dazu finden Sie unter Sandbox.

required

Erzwingt eine minimale CLI-Version CLI wird mit einem Fehler beendet, wenn die installierte Version nicht die Anforderung erfüllt.

{
  "required": {
    "minimumVersion": "0.26.0"
  }
}

Feld

Typ

Beschreibung

minimumVersion

string

Minimale CLI-Version im Serverformat (z. B.``“0.26.0“``). Benutzern, die ältere Versionen verwenden, wird ein Fehler angezeigt und sie werden aufgefordert, das Konto zu aktualisieren, bevor sie fortfahren können.

Verwenden Sie dieses Feld, um sicherzustellen, dass alle Benutzer eine Version verwenden, die Sicherheitskorrekturen oder Features unterstützt, von denen Ihre Richtlinie abhängt.

defaults

Legt von der Organisation empfohlene Standardeinstellungen fest, die Benutzer in ihren eigenen settings.json überschreiben können. Im Gegensatz zum Bereich settings handelt es sich dabei um Vorschläge und nicht um eine Durchsetzung.

{
  "defaults": {
    "connectionName": "prod",
    "profileName": "data-analyst",
    "theme": "dark"
  }
}

Feld

Typ

Beschreibung

connectionName

string

Standardmäßiger Name für die Snowflake-Verbindung von connections.toml. Benutzer können dies mit -c überschreiben oder indem sie ihre eigenen Einstellungen ändern.

profileName

string

Standardprofil, das beim Start geladen werden soll.

theme

"dark", "light" oder "pro"

Standardmäßiges UI-Farbthema.

files

Verweist CLI auf die vom Administrator bereitgestellten Konfigurationsdateien. Diese werden zusätzlich zu den oder anstelle der eigenen Äquivalente des Benutzers geladen.

{
  "files": {
    "connectionsFile": "/etc/cortex/connections.toml",
    "mcpFile": "/etc/cortex/mcp.json"
  }
}

Feld

Typ

Beschreibung

connectionsFile

string

Absoluter Pfad zu einer vom Administrator bereitgestellten connections.toml. Verwenden Sie die, um Snowflake-Verbindungen für alle Benutzer vorzukonfigurieren, ohne dass eine individuelle Einrichtung erforderlich ist.

mcpFile

string

Absoluter Pfad zu einer vom Administrator bereitgestellten mcp.json. Verwenden Sie dies, um allen Benutzern von der Organisation genehmigte MCP-Server bereitzustellen.

ui

Passt UI-Elemente an, um einen verwalteten Zustand anzuzeigen.

{
  "ui": {
    "showManagedBanner": true,
    "bannerText": "Managed by Acme IT - support: helpdesk@acme.com",
    "hideDangerousOptions": true
  }
}

Feld

Typ

Standard

Beschreibung

showManagedBanner

boolean

false

Wenn true, wird ein Banner im Willkommensbildschirm angezeigt, das besagt, dass es sich um eine verwaltete Installation handelt. Hilft Benutzern zu verstehen, warum bestimmte Features eingeschränkt sein können.

bannerText

string

"This device is managed by your organization"

Benutzerdefinierter Text für das verwaltete Banner. Verwenden Sie dies, um einen Support-Kontakt oder eine Richtlinienreferenz einzufügen.

hideDangerousOptions

boolean

false

Wenn true, werden schädliche Optionen in der Hilfeausgabe und in UI-Menüs unterdrückt.

Berechtigungsmuster

Die onlyAllow- und deny-Arrays im permissions-Abschnitt akzeptieren Muster in zwei Formen:

  • Einfacher Name: Entspricht einer benannten Tool- oder Feature-Kategorie. Beispiel: "bash" oder "read"

  • Gefilterter Name: type(filter). Entspricht einem bestimmten Toolaufruf oder einer Ressource innerhalb einer Kategorie. Beispiel: "bash(git:*)" oder "account(myorg-prod)"

Beide Formen unterstützen Glob-Platzhalter * (beliebige Zeichen) und ? (Einzelzeichen). Beim Abgleichen wird nicht zwischen Groß- und Kleinschreibung unterschieden.

Musterreferenz

Muster

Was es steuert

"read"

Das read-Tool (Datei lesen)

"write"

Das write-Tool (Dateien schreiben)

"edit"

Das edit-Tool (Datei bearbeiten)

"bash"

Alle Bash-Shell-Aufrufe

"bash(git:*)"

Bash beschränkt auf git-Befehle

"bash(dbt:*)"

Bash beschränkt auf dbt-Befehle

"bash(ls:*)"

Bash beschränkt auf ls-Befehle

"bash(rm:*)"

Bash-rm-Befehle (in der Regel verweigert)

"snowflake_sql_execute"

SQL-Ausführung auf Snowflake

"mcp(*)"

Alle MCP-Server

"mcp(https://*.company.com/*)"

MCP-Server, die mit einer glob URL übereinstimmen

"skill(bundled:*)"

Integrierte (gebündelte) Fähigkeiten

"skill(profile:*)"

Fähigkeiten von eine beliebigen geladenen Profil

"skill(profile:my-profile)"

Fähigkeiten aus einem bestimmten benannten Profil

"skill(user:*)"

Fähigkeiten, die im Stammverzeichnis des Benutzers installiert sind

"skill(project:*)"

Fähigkeiten im .cortex/skills/-Verzeichnis des Projekts

"skill(remote:*)"

Extern installierte Fähigkeiten (über Git oder TAR-Archive)

"plugin(*)"

Alle Plugins

"plugin(bundled:*)"

Nur integrierte Plugins

"account(myorg)"

Exakter Snowflake-Kontoname

"account(myorg-*)"

Snowflake-Konten, die einem Glob entsprechen

bash(command:*)-Filtern

Bei Verwendung von Bash-Filtermustern stimmt der Filter mit dem ersten Token des Shell-Befehls überein. Beispiel: "bash(git:*)" erlaubt git status,``git commit`` und alle anderen git-Unterbefehle, blockiert aber curl,``python`` und alle anderen Befehle.

Bemerkung

Wenn "bash" (ohne Filter) in onlyAllow angezeigt wird, dann ist jeder Bash-Befehl für diese Regel zulässig. Wenn "bash(git:*)" erscheint, aber "bash" nicht, dann sind nur git-Befehle erlaubt und alle anderen Bash-Befehle werden blockiert.

Auswertung der Berechtigung

Wenn CLI entscheidet, ob ein Tool, eine Fähigkeit, ein MCP-Server oder Snowflake-Konto erlaubt ist, werden die folgenden Regeln in der folgenden Reihenfolge ausgewertet:

  1. Verwaltete ``deny``-Übereinstimmungen: Blockieren. Wenn ein Muster im deny-Array der verwalteten Einstellungen übereinstimmt, wird der Zugriff verweigert. Dies kann nicht durch Profile oder Benutzereinstellungen überschrieben werden.

  2. Profil-``deny``-Übereinstimmungen: Blockieren. Wenn ein Muster in der Verweigerungsliste des aktiven Profils übereinstimmt, wird der Zugriff verweigert.

  3. Verwaltete ``onlyAllow`` ist festgelegt und keine Musterübereinstimmungen: Blockieren. Wenn``onlyAllow`` in verwalteten Einstellungen konfiguriert ist und das Element keinem der aufgeführten Muster entspricht, wird der Zugriff verweigert.

  4. Profil ``onlyAllow`` ist für diesen Typ festgelegt und es gibt keine Musterübereinstimmungen: Blockieren. Profil onlyAllow ist typbezogen: Es werden nur explizit aufgeführte Typen eingeschränkt. Wenn das Profil skill(bundled:*) auflistet, aber nichts über bash aussagt, wird der Bash-Zugriff durch das Profil nicht beeinträchtigt.

  5. ``defaultMode`` bestimmt das Ergebnis. Wenn defaultMode "deny" ist, ist der Zugriff gesperrt. Wenn "allow" (die Standardeinstellung), ist der Zugriff erlaubt.

Wichtige Garantien:

  • Ein Profil kann keinen Zugriff gewähren, den verwaltete Einstellungen explizit verweigert haben.

  • Ein Profil kann die Zulassungsliste der verwalteten Einstellungen nicht erweitern.

  • Profile können nur weiter einschränken: Sie arbeiten innerhalb der Grenze, die von verwalteten Einstellungen definiert wird.

Allgemeine Beispiele für Richtlinien

Grundlegende Einrichtung für Unternehmen

Alle Standardtools zulassen, aber den Umgehungsmodus blocken und ein verwaltetes Banner anzeigen.

{
  "version": "1.0",
  "permissions": {
    "dangerouslyAllowAll": false,
    "defaultMode": "allow"
  },
  "required": {
    "minimumVersion": "0.26.0"
  },
  "ui": {
    "showManagedBanner": true,
    "bannerText": "Managed by Corporate IT - helpdesk@example.com"
  }
}

Beschränkt auf genehmigte Snowflake-Konten

Nur Verbindungen zu bestimmten Konten zulassen. Benutzern, die versuchen, eine Verbindung zu einem anderen Konto herzustellen, wird ein Fehler angezeigt.

{
  "version": "1.0",
  "permissions": {
    "onlyAllow": [
      "account(mycompany-prod)",
      "account(mycompany-staging)"
    ],
    "defaultMode": "allow"
  }
}

Auf genehmigte Tools beschränken

Nur Lesen von Dateien, SQL-Ausführung und gebündelte Fähigkeiten zulassen. Sie sämtliche Bash-Zugriffe, MCP sowie vom Benutzer installierte Skills blockieren.

{
  "version": "1.0",
  "permissions": {
    "onlyAllow": [
      "read",
      "write",
      "edit",
      "snowflake_sql_execute",
      "skill(bundled:*)",
      "skill(profile:*)"
    ],
    "defaultMode": "deny"
  }
}

Bash zulassen, jedoch schädliche Befehle blockieren

Bash-Zugriff zulassen, aber rm, curl und wget explizit ablehnen.

{
  "version": "1.0",
  "permissions": {
    "deny": [
      "bash(rm:*)",
      "bash(curl:*)",
      "bash(wget:*)"
    ],
    "dangerouslyAllowAll": false,
    "defaultMode": "allow"
  }
}

Hochsichere Bereitstellung

Kein Verlauf erzwingen, Sandbox erzwingen, Umgehungsmodus blockieren, auf bestimmte Konten und MCP-Server beschränken und die Remote-Skill-Installation blockieren.

{
  "version": "1.0",
  "permissions": {
    "onlyAllow": [
      "read", "write", "edit", "bash", "snowflake_sql_execute",
      "skill(bundled:*)", "skill(profile:*)",
      "mcp(https://*.mycompany.com/*)",
      "account(mycompany-*)"
    ],
    "deny": [
      "bash(rm:*)",
      "bash(curl:*)",
      "skill(remote:*)"
    ],
    "defaultMode": "allow",
    "dangerouslyAllowAll": false
  },
  "settings": {
    "forceNoHistoryMode": true,
    "forceSandboxEnabled": true,
    "forceSandboxMode": "regular"
  },
  "required": {
    "minimumVersion": "0.26.0"
  },
  "files": {
    "connectionsFile": "/etc/cortex/connections.toml",
    "mcpFile": "/etc/cortex/mcp.json"
  },
  "ui": {
    "showManagedBanner": true,
    "bannerText": "Managed by IT Security - policy questions: security@mycompany.com",
    "hideDangerousOptions": true
  }
}

Überprüfung

Um zu prüfen, ob die verwalteten Einstellungen aktiv sind und welche Einschränkungen gelten, prüfen Sie beim Start das Begrüßungsbanner. Wenn verwaltete Einstellungen vorhanden sind und showManagedBanner true ist, wird oben in der Sitzungsausgabe ein Banner angezeigt.

Um den Durchsetzungskonfigurationspfad für Ihre Plattform zu überprüfen, prüfen Sie, ob die Datei unter dem OS-spezifischen Pfad existiert, der in Dateispeicherorte aufgeführt ist.