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
- 从不提交凭据
将敏感配置文件添加到
.gitignore。echo "~/.snowflake/connections.toml" >> ~/.gitignore
使用环境变量保存凭据和令牌,并使用
${VARIABLE_NAME}语法将它们合并到配置文件。
角色和访问权限¶
- 根据环境使用适当的角色
例如,在生产中使用只读角色,在开发中使用更广泛的角色。
[dev] role = "DEVELOPER" [prod_readonly] role = "ANALYST"
从不使用
ACCOUNTADMIN用于日常操作。授予最低权限。
对话历史记录¶
对话存储在 ~/.snowflake/cortex/conversations/ 中。启动 Cortex Code 时使用 cortex --private,针对敏感工作禁用会话保存。或者,使用 /clear 命令,在退出 Cortex Code CLI 前清除当前会话。
使用模式 700 限制只有您的用户才能访问对话历史记录。
chmod 700 ~/.snowflake/cortex/conversations
MCP 安全¶
- 仅安装受信任的 MCP 服务器
先验证 MCP 服务器的来源和完整性,然后再添加它们。使用以下命令获取服务器列表并移除任何不受信任的服务器:
cortex mcp list cortex mcp remove <server>
- 从不硬编码 MCP 凭据
使用环境变量。首先,在 shell 中设置:
export GITHUB_TOKEN="your_token"
然后,在 MCP 配置中引用它们:
{ "mcpServers": { "github": { "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" } } } }
生产安全¶
- 启用计划模式
使用
/plan命令,在执行前查看预期操作。/plan Drop and recreate the ANALYTICS schema
如果您的个人访问令牌遭到泄露¶
立即在 Snowsight 中撤销 PAT! 然后,生成一个新令牌并开始使用它。请记住,不要在配置文件中使用令牌;请改用环境变量。
查看查询历史记录以识别任何可疑活动。
SHOW QUERIES IN ACCOUNT
托管设置(企业策略)¶
在某些组织中,管理员会部署托管设置,为 Cortex Code CLI 强制执行策略。托管设置可以约束或替换用户级配置(包括权限提示和绕过行为)。
有关更多信息,请参阅 托管设置(组织策略)。
权限¶
Cortex Code 具有三种操作模式:
模式 |
指标 |
斜杠命令 |
描述 |
|---|---|---|---|
确认操作 |
蓝色 ⏵⏵ |
默认模式 |
在执行潜在危险操作之前提示征得许可。 |
计划 |
橙色 ⏸ |
|
在采取任何行动之前提出计划。 |
绕过 |
红色 >> |
|
所有工具调用均获得批准。 |
在 Cortex Code CLI 中按 Shift-Tab,在这些模式之间循环。
警告
绕过模式会禁用所有确认提示。仅在受信任的环境中使用它。
权限类型¶
以下权限级别适用于 Cortex Code 工具调用:
类型 |
描述 |
|---|---|
EXECUTE_COMMAND |
运行 bash/shell 命令 |
FILE_READ |
读取文件内容 |
FILE_WRITE |
创建/修改文件 |
FILE_EDIT |
编辑现有文件 |
WEB_ACCESS |
Web 搜索/提取操作 |
信任模型¶
Cortex Code 按风险对命令和操作进行分类,如下表所示:
级别 |
示例 |
行为 |
|---|---|---|
SAFE |
|
自动批准 |
LOW |
创建新文件(例如 |
通常自动批准 |
MEDIUM |
编辑文件(例如 |
确认模式下的提示 |
HIGH |
|
始终提示 |
CRITICAL |
|
额外确认 |
Shell 和 SQL 命令根据其潜在影响进行分类。
Shell 命令¶
分析命令以了解常见风险因素。
- 高风险命令
rm、sudo、curl、wget、sshsystemctl、chmod、chowngit push --force、git 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"
}
]
}
]
}
}
此钩子可能会返回如下 JSON 响应,以自动批准 bash 命令。
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Approved by policy"
}
}
权限提示和缓存¶
当 Cortex Code 需要您的许可才能继续执行操作时,它会提示您提供有关请求的详细信息。您可以选择批准或拒绝请求。您还可以选择记住您的选择,以便将来提出类似请求:
“始终允许(此会话)”会记住,直到您退出 Cortex Code CLI。
“始终允许(持久)”会无限期记住。
这些响应将根据需要进行缓存,并限定为项目目录、工具类型或命令模式。
持久权限存储在 ~/.snowflake/cortex/permissions.json 中。以下是示例缓存:
{
"/path/to/project": {
"Bash": {
"npm test": "allow",
"make build": "allow"
},
"Write": {
"*": "allow"
}
}
}
删除此文件以重置所有持久权限。要重置特定项目的权限,请删除相应的条目。
要重置会话缓存,请使用 /new 命令,这将开始一个新会话,或者退出并重新启动 Cortex Code CLI。
配置¶
设置如下所述的环境变量以控制权限行为:
变量 |
描述 |
|---|---|
|
设置会话权限缓存的默认超时(以秒为单位)。 |
|
如果设置为 |
安全检查清单¶
使用 PATs,有效期最多 90 天
将文件权限设置为 600/700
切勿将凭据提交到 git
使用最低权限角色
从不使用 ACCOUNTADMIN 进行日常工作
为生产启用规划模式,为受信任的环境启用预留旁路模式
仅安装受信任的 MCP 服务器
将凭据存储在环境变量中
通过自动执行自定义安全检查,使用钩子来执行策略
定期审计权限