Codex 安全与企业管理
Codex 提供多层次的安全机制和企业管理功能,保障数据安全并支持团队协作。
安全机制概述
Codex 安全设计分为多个层级:
| 层级 | 机制 | 作用 |
|---|---|---|
| 沙箱隔离 | Sandbox 模式 | 限制文件和命令访问范围 |
| 审批策略 | Approval Policy | 控制操作执行前的确认 |
| 规则引擎 | Rules | 定义命令执行权限 |
| 网络控制 | 网络访问设置 | 限制外部网络访问 |
| 数据保护 | 企业功能 | 审计日志、数据驻留 |
Sandbox 沙箱模式
Sandbox 是 Codex 的核心安全机制,限制 Agent 的操作范围。
三种沙箱模式
| 模式 | 文件修改 | 命令执行 | 网络访问 | 适用场景 |
|---|---|---|---|---|
| read-only | 禁止 | 禁止 | 禁止 | 代码审查、分析 |
| workspace-write | 仅工作区 | 允许 | 禁止 | 日常开发(推荐) |
| danger-full-access | 允许 | 允许 | 允许 | 特殊场景(谨慎使用) |
设置沙箱模式
沙箱配置
# CLI 中指定
codex --sandbox read-only
codex --sandbox workspace-write
codex --sandbox danger-full-access
# 配置文件
[mycode4 type="toml"]
# ~/.codex/config.toml
sandbox = "workspace-write"
[/mycode4]
codex --sandbox read-only
codex --sandbox workspace-write
codex --sandbox danger-full-access
# 配置文件
[mycode4 type="toml"]
# ~/.codex/config.toml
sandbox = "workspace-write"
[/mycode4]
沙箱边界
- 工作区边界:workspace-write 模式只允许修改项目目录内文件
- 命令边界:read-only 禁止所有命令执行
- 网络边界:默认禁止 Agent 阶段的网络访问
建议默认使用 workspace-write 模式,仅在必要时使用 danger-full-access。
Approval 审批策略
Approval 策略控制 Codex 执行操作前的确认行为。
四种审批模式
| 模式 | 行为 | 风险等级 |
|---|---|---|
| suggest | 仅提供建议,不执行任何操作 | 最低 |
| interactive | 敏感操作前询问确认 | 低 |
| auto-edit | 自动编辑文件,命令需确认 | 中 |
| full-auto | 自动执行所有操作 | 高 |
设置审批策略
审批配置
# CLI 指定
codex --approval-mode interactive
# 会话中切换
/approval suggest
/approval auto-edit
# 配置文件
[mycode4 type="toml"]
approval_policy = "interactive"
[/mycode4]
codex --approval-mode interactive
# 会话中切换
/approval suggest
/approval auto-edit
# 配置文件
[mycode4 type="toml"]
approval_policy = "interactive"
[/mycode4]
Rules 规则引擎
Rules 使用 Starlark 语言定义命令执行策略。
规则类型
| 规则 | 说明 |
|---|---|
| prefix_rule | 匹配命令前缀 |
| glob_rule | 匹配文件路径模式 |
决策类型
| 决策 | 行为 |
|---|---|
allow | 自动批准执行 |
prompt | 询问用户确认 |
forbidden | 禁止执行 |
规则示例
规则定义
# ~/.codex/rules/default.rules
# 允许 Git 命令
prefix_rule(
pattern = ["git"],
decision = "allow",
justification = "Git commands are safe for version control"
)
# 允许 npm install
prefix_rule(
pattern = ["npm", "install"],
decision = "allow",
justification = "Package installation is expected"
)
# 禁止删除根目录
prefix_rule(
pattern = ["rm", "-rf", "/"],
decision = "forbidden",
justification = "Prevent system damage"
)
# 询问 sudo 命令
prefix_rule(
pattern = ["sudo"],
decision = "prompt",
justification = "Elevated privileges need review"
)
# 允许 Git 命令
prefix_rule(
pattern = ["git"],
decision = "allow",
justification = "Git commands are safe for version control"
)
# 允许 npm install
prefix_rule(
pattern = ["npm", "install"],
decision = "allow",
justification = "Package installation is expected"
)
# 禁止删除根目录
prefix_rule(
pattern = ["rm", "-rf", "/"],
decision = "forbidden",
justification = "Prevent system damage"
)
# 询问 sudo 命令
prefix_rule(
pattern = ["sudo"],
decision = "prompt",
justification = "Elevated privileges need review"
)
网络访问控制
控制 Codex 的网络访问能力,防止数据泄露。
云端网络控制
| 阶段 | 默认访问 | 说明 |
|---|---|---|
| 设置脚本 | 允许 | 需要下载依赖 |
| Agent 执行 | 禁止 | 默认禁用,可开启 |
域名白名单
网络配置
# 预设白名单
domain_allowlist = "common-dependencies"
# 包含:github.com, npmjs.com, pypi.org
# 自定义域名
domain_allowlist = [
"github.com",
"api.mycompany.com"
]
# 限制 HTTP 方法
allowed_methods = ["GET", "HEAD", "OPTIONS"]
domain_allowlist = "common-dependencies"
# 包含:github.com, npmjs.com, pypi.org
# 自定义域名
domain_allowlist = [
"github.com",
"api.mycompany.com"
]
# 限制 HTTP 方法
allowed_methods = ["GET", "HEAD", "OPTIONS"]
安全风险
启用 Agent 网络访问可能带来的风险:
- 提示注入:从恶意网页获取指令
- 数据泄露:向外部发送代码或密钥
- 恶意依赖:下载包含恶意代码的包
仅在必要时启用 Agent 网络访问,并使用域名白名单限制。
企业管理功能
Enterprise 计划提供企业级安全和管理功能。
企业功能概览
| 功能 | 说明 |
|---|---|
| SCIM | 自动用户 provisioning |
| SAML SSO | 单点登录集成 |
| MFA | 多因素认证 |
| EKM | 企业密钥管理 |
| RBAC | 基于角色的访问控制 |
| 审计日志 | 完整操作记录 |
| 数据驻留 | 指定数据存储区域 |
托管配置
企业管理员可以下发统一配置。
托管配置优先级
配置合并顺序:
- 托管配置(企业下发)——优先级最高
- 项目配置(.codex/config.toml)
- 用户配置(~/.codex/config.toml)——优先级最低
托管配置示例
企业托管配置
# 企业下发的托管配置
# 强制沙箱模式
sandbox = "workspace-write"
# 强制审批策略
approval_policy = "interactive"
# 禁用的模型
disabled_models = ["gpt-5.4-mini"]
# 网络白名单
domain_allowlist = ["github.com", "internal-api.company.com"]
# 审计配置
audit_logging = true
# 强制沙箱模式
sandbox = "workspace-write"
# 强制审批策略
approval_policy = "interactive"
# 禁用的模型
disabled_models = ["gpt-5.4-mini"]
# 网络白名单
domain_allowlist = ["github.com", "internal-api.company.com"]
# 审计配置
audit_logging = true
审计日志
Enterprise 计划提供完整的审计日志功能。
日志内容
| 记录类型 | 说明 |
|---|---|
| 会话记录 | 每个会话的创建、修改、删除 |
| 工具调用 | 文件读写、命令执行的详细信息 |
| 模型调用 | API 调用、token 使用量 |
| 用户操作 | 用户认证、权限变更 |
日志访问
审计日志
# 通过企业管理面板访问审计日志
# 可导出为:
- JSON 格式
- CSV 格式
- SIEM 系统集成格式
# 可导出为:
- JSON 格式
- CSV 格式
- SIEM 系统集成格式
数据驻留
Enterprise 可以指定数据存储区域。
驻留选项
| 区域 | 说明 |
|---|---|
| 美国 | 默认区域 |
| 欧洲 | GDPR 合规 |
| 其他区域 | 根据企业需求配置 |
数据驻留设置需要联系销售团队配置。
团队管理
用户 provisioning
SCIM 配置
# 通过 IdP(如 Okta、Azure AD)自动管理用户
# 支持的操作:
- 自动创建用户
- 自动更新用户属性
- 自动禁用/删除用户
# 支持的操作:
- 自动创建用户
- 自动更新用户属性
- 自动禁用/删除用户
角色权限
| 角色 | 权限 |
|---|---|
| Admin | 完全管理权限 |
| Member | 标准使用权限 |
| Viewer | 只读权限 |
安全最佳实践
日常使用
- 默认使用 workspace-write 沙箱模式
- 敏感操作使用 interactive 审批模式
- 定期审查 Rules 配置
- API Key 作为 Secrets 存储
企业部署
- 启用 SAML SSO 和 MFA
- 配置托管配置统一策略
- 启用审计日志记录
- 根据合规需求配置数据驻留
- 使用域名白名单限制网络访问
常见问题
Q: 如何防止 Codex 删除重要文件?
使用 read-only 或 workspace-write 沙箱模式,添加 Rules 禁止删除命令。
Q: 企业如何统一配置?
使用托管配置功能,企业管理员可下发统一配置,覆盖用户设置。
Q: 审计日志包含哪些信息?
包含所有会话、工具调用、模型调用和用户操作的完整记录。
Q: 如何处理敏感数据?
使用 Secrets 存储敏感信息,仅在设置脚本中可用,Agent 阶段自动移除。
点我分享笔记