Cortex Code CLI 的安全最佳实践

Cortex Code 的基本安全实践 CLI 包括使用安全的身份验证方法、保护配置文件、适当管理角色和访问、安全地处理对话历史记录、确保 MCP 服务器完整性,以及遵循生产安全协议。

重要

在托管环境中,您的组织可能会部署一个系统级托管设置文件来强制执行策略(例如,限制工具访问、限制允许的账户或禁用绕过功能)。托管设置(组织策略) 是 Web 令牌 ()、 令牌或 编程访问令牌 。有关详细信息,请参阅 托管设置(组织策略)

凭据

尽可能使用基于浏览器的身份验证。

Cortex Code CLI 的默认身份验证方法是基于浏览器的身份验证。在您的 connections.toml 文件中使用 authenticator = "externalbrowser",以手动设置此选项。

当尝试将访问范围限定为特定角色时,使用编程访问令牌 (PATs)。

在 Snowsight 中生成专用 PATs(请参阅 用于身份验证的编程访问令牌)。将过期时间设置为 ≤ 90 天,使用描述性名称,并定期轮换。

保护配置文件

对配置文件使用模式 600,对目录使用 700,仅限您的用户访问。

chmod 600 ~/.snowflake/connections.toml
chmod 700 ~/.snowflake/cortex
Copy
从不提交凭据

将敏感配置文件添加到 .gitignore

echo "~/.snowflake/connections.toml" >> ~/.gitignore
Copy

使用环境变量保存凭据和令牌,并使用 ${VARIABLE_NAME} 语法将它们合并到配置文件。

角色和访问权限

根据环境使用适当的角色

例如,在生产中使用只读角色,在开发中使用更广泛的角色。

[dev]
role = "DEVELOPER"

[prod_readonly]
role = "ANALYST"
Copy

从不使用 ACCOUNTADMIN 用于日常操作。授予最低权限。

对话历史记录

对话存储在 ~/.snowflake/cortex/conversations/ 中。启动 Cortex Code 时使用 cortex --private,针对敏感工作禁用会话保存。或者,使用 /clear 命令,在退出 Cortex Code CLI 前清除当前会话。

使用模式 700 限制只有您的用户才能访问对话历史记录。

chmod 700 ~/.snowflake/cortex/conversations
Copy

MCP 安全

仅安装受信任的 MCP 服务器

先验证 MCP 服务器的来源和完整性,然后再添加它们。使用以下命令获取服务器列表并移除任何不受信任的服务器:

cortex mcp list
cortex mcp remove <server>
Copy
从不硬编码 MCP 凭据

使用环境变量。首先,在 shell 中设置:

export GITHUB_TOKEN="your_token"
Copy

然后,在 MCP 配置中引用它们:

{
   "mcpServers": {
      "github": {
         "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
      }
   }
}
Copy

生产安全

启用计划模式

使用 /plan 命令,在执行前查看预期操作。

/plan
Drop and recreate the ANALYTICS schema
Copy

如果您的个人访问令牌遭到泄露

立即在 Snowsight 中撤销 PAT! 然后,生成一个新令牌并开始使用它。请记住,不要在配置文件中使用令牌;请改用环境变量。

查看查询历史记录以识别任何可疑活动。

SHOW QUERIES IN ACCOUNT
Copy

托管设置(企业策略)

在某些组织中,管理员会部署托管设置,为 Cortex Code CLI 强制执行策略。托管设置可以约束或替换用户级配置(包括权限提示和绕过行为)。

有关更多信息,请参阅 托管设置(组织策略)

权限

Cortex Code 具有三种操作模式:

模式

指标

斜杠命令

描述

确认操作

蓝色 ⏵⏵

默认模式

在执行潜在危险操作之前提示征得许可。

计划

橙色 ⏸

/plan/plan-off

在采取任何行动之前提出计划。

绕过

红色 >>

/bypass/bypass-off

所有工具调用均获得批准。

在 Cortex Code CLI 中按 Shift-Tab,在这些模式之间循环。

警告

绕过模式会禁用所有确认提示。仅在受信任的环境中使用它。

权限类型

以下权限级别适用于 Cortex Code 工具调用:

类型

描述

EXECUTE_COMMAND

运行 bash/shell 命令

FILE_READ

读取文件内容

FILE_WRITE

创建/修改文件

FILE_EDIT

编辑现有文件

WEB_ACCESS

Web 搜索/提取操作

信任模型

Cortex Code 按风险对命令和操作进行分类,如下表所示:

级别

示例

行为

SAFE

lscatechogrep

自动批准

LOW

创建新文件(例如 touch file.txt)

通常自动批准

MEDIUM

编辑文件(例如 nano file.txt)、适度 bash

确认模式下的提示

HIGH

rmcurlwgetsudo

始终提示

CRITICAL

rm -rf、破坏性操作

额外确认

Shell 和 SQL 命令根据其潜在影响进行分类。

Shell 命令

分析命令以了解常见风险因素。

高风险命令
  • rmsudocurlwgetssh

  • systemctlchmodchown

  • git push --forcegit reset --hard

危险标志
  • -rf--force--recursive

  • --no-preserve-root

危险模式
  • 管道到 shell:curl | bash

  • 下载并执行

  • 隐藏的文件访问权限(. 前缀)

  • 系统路径访问权限(/etc/var/usr

SQL 查询

SQL 按操作类型分类:

类别

操作

行为

READ_ONLY

SELECT、 SHOW、 DESCRIBE

自动批准

WRITE

INSERT、UPDATE、DELETE、CREATE

提示

USE_ROLE

USE ROLE、USE WAREHOUSE

提示

沙盒权限

启用沙盒后:

沙盒模式

权限行为

容器 + 自动

自动批准的沙盒命令

容器 + 常规

所有命令提示

OS + 自动

自动批准的沙盒命令

OS + 常规

所有命令提示

钩子集成

您可以使用钩子自定义权限策略。以下是预执行钩子示例,该钩子自动批准 bash 命令:

{
   "hooks": {
      "PreToolUse": [
         {
         "matcher": "Bash",
         "hooks": [
            {
               "type": "command",
               "command": "bash .claude/hooks/auto-approve.sh"
            }
         ]
         }
      ]
   }
}
Copy

此钩子可能会返回如下 JSON 响应,以自动批准 bash 命令。

{
   "hookSpecificOutput": {
      "hookEventName": "PreToolUse",
      "permissionDecision": "allow",
      "permissionDecisionReason": "Approved by policy"
   }
}
Copy

权限提示和缓存

当 Cortex Code 需要您的许可才能继续执行操作时,它会提示您提供有关请求的详细信息。您可以选择批准或拒绝请求。您还可以选择记住您的选择,以便将来提出类似请求:

  • “始终允许(此会话)”会记住,直到您退出 Cortex Code CLI。

  • “始终允许(持久)”会无限期记住。

这些响应将根据需要进行缓存,并限定为项目目录、工具类型或命令模式。

持久权限存储在 ~/.snowflake/cortex/permissions.json 中。以下是示例缓存:

{
   "/path/to/project": {
      "Bash": {
         "npm test": "allow",
         "make build": "allow"
      },
      "Write": {
         "*": "allow"
      }
   }
}
Copy

删除此文件以重置所有持久权限。要重置特定项目的权限,请删除相应的条目。

要重置会话缓存,请使用 /new 命令,这将开始一个新会话,或者退出并重新启动 Cortex Code CLI。

配置

设置如下所述的环境变量以控制权限行为:

变量

描述

CORTEX_PERMISSION_CACHE_TTL_SECONDS

设置会话权限缓存的默认超时(以秒为单位)。

COCO_DANGEROUS_MODE_REQUIRE_SQL_WRITE_PERMISSION=true

如果设置为 1,始终提示 SQL 写入操作,即使在旁路模式下也是如此

安全检查清单

  • 使用 PATs,有效期最多 90 天

  • 将文件权限设置为 600/700

  • 切勿将凭据提交到 git

  • 使用最低权限角色

  • 从不使用 ACCOUNTADMIN 进行日常工作

  • 为生产启用规划模式,为受信任的环境启用预留旁路模式

  • 仅安装受信任的 MCP 服务器

  • 将凭据存储在环境变量中

  • 通过自动执行自定义安全检查,使用钩子来执行策略

  • 定期审计权限