Snowflake CoCo 托管设置:统一所有开发机的AI策略
DataHot 速览
Snowflake 为 CoCo CLI 和 CoCo Desktop 推出托管设置(managed settings),IT 管理员可通过一个系统路径下的 JSON 策略文件,在组织内所有开发机上强制执行 CoCo 行为。该文件位于 macOS 的 /Library/Application Support/Cortex/managed-settings.json、Linux/WSL 的 /etc/cortex/managed-settings.json 或 Windows 的 %ProgramData%\Cortex\managed-settings.json,需要管理员/root 权限才能写入,且优先级高于用户级配置。管理员可通过 Jamf、Intune、SCCM 或 Ansible、Chef、Puppet 等现有工具部署。部分键仅适用于 CLI,例如沙箱、连接文件和账户限制,Desktop 会读取但不强制账户限制。
为什么值得关注:数据平台管理员可在所有开发机上统一实施AI策略,避免用户配置绕过安全控制;这是企业级部署AI Agent时需要掌握的关键运维能力。
译文
AI 逐段翻译
托管设置让IT管理员能够在整个组织中强制执行Snowflake CoCo行为,而MDM则将控制提升到了一个新的水平。
控制CoCo在开发人员机器上的行为过去意味着要信任每个开发人员自己的配置。用户级设置文件只是一个建议。任何人都可以编辑它,用环境变量覆盖它,或者传递一个撤销它的标志。安全团队审查该设置时,被要求将请求视为控制。
托管设置是一个单一的JSON策略文件,部署到用户无法写入的系统拥有的路径,CoCo CLI和CoCo Desktop都会读取,优先于所有用户级配置。
这正在改变数据团队首先获得AI编码工具批准的方式。这里有五件事需要了解。
一个文件,两种界面
大多数企业控制会在第二个界面上崩溃。你锁定了CLI,然后有人安装了桌面应用,你又得从头开始。
CoCo CLI和CoCo Desktop从相同的系统路径读取相同的managed-settings.json。将其放置在您的操作系统的平台目录中:
- macOS:/Library/Application Support/Cortex/managed-settings.json
- Linux和WSL:/etc/cortex/managed-settings.json
- Windows:%ProgramData%\Cortex\managed-settings.json
这些位置需要管理员或root权限才能写入,这正是关键所在。托管设置不能被用户配置文件、环境变量或命令行参数覆盖,除非明确记录。如果文件不存在,CoCo以非托管方式运行,应用正常的用户默认值。
管理员通常使用他们已有的工具进行部署:MDM平台如Jamf、Intune或SCCM,配置管理如Ansible、Chef或Puppet,或在设备配置期间手动部署。
一些键仅适用于CLI,在Desktop中无效:required.minimumVersion(Desktop有自己的自动更新)、settings.forceSandboxEnabled和settings.forceSandboxMode、files.connectionsFile和files.mcpFile、defaults下的所有内容以及account()。Desktop读取它但不强制实施,因此账户限制仅限CLI。权限块其余部分、settings.forceNoHistoryMode和ui键适用于两者。
权限:允许列表、拒绝列表以及优先级
"代理是否可以运行shell命令"是错误的粒度。真正的策略比这更具体,而优先级模糊不清是配置错误发生的原因。
权限块接受onlyAllow列表、deny列表、defaultMode和dangerouslyAllowAll标志。模式有两种形式:简单名称如read或bash,或过滤名称如bash(git:*)或account(myorg-prod)。两者都支持*和?通配符,匹配不区分大小写。
{
"version": "1.0",
"permissions": {
"deny": [
"bash(rm:*)", "bash(curl:*)", "bash(wget:*)",
"skill(remote:*)"
],
"defaultMode": "allow",
"dangerouslyAllowAll": false
}
}优先级已定义而不是留待偶然。托管拒绝首先出现,不能被配置文件或用户设置覆盖。然后是配置文件拒绝。然后是托管onlyAllow:如果设置了它且没有匹配项,则阻止访问。然后是配置文件onlyAllow,它限于类型范围,仅限制其命名的类型。其余部分落入defaultMode。
对策略审查至关重要的保证:配置文件不能授予托管设置拒绝的访问权限,也不能扩展允许列表。配置文件只会缩小范围。
强制执行你不能留作可选的设置
有些要求不是偏好。如果你的合规态势表明对话历史永远不写入磁盘,那么用户可以切换的设置不是答案。
设置块强制用户无法覆盖的运行时行为。forceNoHistoryMode禁用所有对话历史持久化,因此永远不会写入会话文件,这是为高安全性和合规环境而构建的。forceSandboxEnabled和forceSandboxMode强制在CLI中启用文件系统沙箱,在沙箱边界内定期提示新路径和autoAllow允许所有内容。请注意,沙箱是一个实验性功能。
在真正的部署中,还有两个部分很重要。files将CoCo指向管理员提供的connections.toml或mcp.json,这样你可以预配置Snowflake连接并附上一组经批准的MCP服务器,而无需要求任何人设置它们。required.minimumVersion使CLI在低于版本下限时以错误退出,这是确保安全修复实际存在的方法。
UI块较小但功能实在。showManagedBanner和bannerText告诉用户为什么某些内容受限制以及联系谁,hideDangerousOptions从帮助输出和菜单中隐藏危险选项。
当托管设置存在时,CoCo在启动时显示横幅,表明它正在托管模式下运行。在CLI中,你可以使用cortex managed-settings直接检查活动策略。
故障模式:损坏的策略文件不会开放失败
任何策略文件的潜在风险是,打字错误静默禁用强制执行,直到审计时才注意到。
如果managed-settings.json存在但包含无效JSON或未通过模式验证,CLI不会忽略它并继续执行。它应用限制性回退配置,并显示横幅:“强制配置错误——受限模式”。畸形的策略文件不能静默授予不受限制的访问。
文件必须包含版本字段设置为“1.0”。每个顶层部分都是可选的。
受管理macOS上的设备管理强制
仅存在于配置文件中的策略仍然假定设备本身是受信任的。
CoCo Desktop v1.21.0在macOS上添加了企业设备管理强制。在受管理的macOS设备上,Desktop在应用版本、连接和推理关卡强制执行组织的MDM策略,包括每个账户允许的认证方法。不受管理的设备不受影响。
这仅限于macOS(截至v1.21.0)。如果你的设备群是混合的,请计划将托管设置作为跨平台控制,并将MDM关卡强制视为额外的macOS层,而不是替代。
下一步是什么?
从最小的策略开始,以解除审批:一个受管横幅,dangerouslyAllowAll 设为 false,以及一个版本下限。在了解团队实际需求后,添加账户限制(CLI)和工具允许列表。
查阅文档了解更多:https://docs.snowflake.com/en/user-guide/cortex-code/managed-settings
在每台开发者机器上强制执行统一的 AI 策略 最初发布在 Snowflake Builders Blog: Data Engineers, App Developers, AI, & Data Science 在 Medium 上,人们在那里通过高亮和回复这个故事来继续对话。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏