Codex Security 实战:用 AI 给项目做全面安全扫描

42 次阅读 0 点赞 0 评论 9 分钟原创技术教程

15 分钟掌握 OpenAI 官方安全扫描工具,从零配置 CLI、运行代码漏洞检测、在 TypeScript 项目中集成 SDK 自动化检查,导出威胁报告并生成 SECURITY.md,快速建立项目安全基线。

#安全扫描 #OpenAI #codex-security #TypeScript #代码审计 #DevSecOps #CI/CD
Codex Security 实战:用 AI 给项目做全面安全扫描

Codex Security 实战:用 AI 给项目做全面安全扫描

上周我把一个跑了两年的内部工具项目推到 GitHub,不到半天就收到了一个 issue:有人指出项目里硬编码了一段测试用的 AWS 密钥。虽然权限极小,但确实不太专业。日常开发节奏太快,安全扫描这种事总被往后排,直到有人提醒才意识到风险。

如果你也遇到过类似情况:项目越做越大,依赖越来越多,手动 review 安全漏洞根本顾不过来,那这篇教程就是为你准备的。我会带你用 OpenAI 官方推出的 Codex Security 工具,从零配置、跑一次完整的代码安全扫描、在 TypeScript 项目中集成 SDK 实现自动化检查,最后生成一份专业安全报告。整个过程大约 15-20 分钟,跑完你就能对项目安全状况心里有底。

环境准备

开始前确认环境满足要求:

  • Node.js:22.13.0+(22.x 分支)、24.x 或 26.x
  • Python:3.10+(3.10 需额外安装 tomli)
  • OpenAI API Key:需要 OpenAI 账号生成 API Key。申请过 Daybreak Blue 权限的教程中会涉及相关参数;没有的话用默认的 standard 模式即可
  • 一个待扫描的项目目录
bash 复制代码
## 检查环境版本
node -v
python3 --version

安装与登录

Codex Security 同时提供 CLI 和 TypeScript SDK,先从 CLI 快速跑通扫描流程。

bash 复制代码
## 安装到当前项目(全局安装加 -g)
npm install @openai/codex-security

## 登录获取访问凭证
npx @openai/codex-security login

login 命令会打开浏览器引导完成 OAuth 授权。远程服务器或无图形界面环境下,用设备认证模式:

bash 复制代码
npx @openai/codex-security login --device-auth

终端会输出验证码,让你在另一台有浏览器的设备上打开指定 URL 完成授权,不用在服务器上折腾浏览器。

底层扫描依赖 AI 模型分析代码上下文,登录是为了获取 API 凭证。CI 环境中不需要走登录流程,在环境变量设置 OPENAI_API_KEY 或 CODEX_API_KEY 即可。

运行第一次扫描

登录完成后,对目标项目执行扫描(. 表示当前目录):

bash 复制代码
## 扫描当前项目,使用标准模式
npx @openai/codex-security scan . \
  --cyber-access-program standard

扫描完成后,终端会列出发现的安全问题。指定扫描范围用 --path 过滤:

bash 复制代码
## 只扫描 src 和 tests 目录
npx @openai/codex-security scan . --path src --path tests

## 扫描从 main 分支到当前 HEAD 的变更(提交前检查)
npx @openai/codex-security scan . --diff origin/main

## 深度扫描模式,更全面但耗时较长
npx @openai/codex-security scan . --mode deep

日常开发不想每次提交都跑全量扫描,--diff 模式只检查变更部分,速度快、成本低。--mode deep 适合发版前或接手老项目时做深度体检。根据场景选模式,别盲目用最强的,省 token 也省时间。

生成 SECURITTY.md

很多开源项目根目录下有 SECURITY.md,告诉外部如何报告漏洞。Codex Security 可以帮你自动起草:

bash 复制代码
## 为整个项目生成安全策略草稿
npx @openai/codex-security policy .

## 为特定服务组件生成,提供架构文档作为参考
npx @openai/codex-security policy . --path services/api --knowledge-base architecture.md

生成的草稿保存在项目外部,需要审查后再决定是否放进仓库。不要直接当最终文件使用,AI 生成的内容需根据项目实际情况调整。这一步的价值在于搭好框架,省去从零搜索模板的麻烦。

实战:给 Express API 项目做安全扫描

假设你有一个 Express 编写的 REST API 项目:

复制代码
my-api/
├── src/
│   ├── routes/
│   ├── middleware/
│   └── db.js
├── tests/
├── package.json
└── .env

想在每次提交 PR 前自动做安全扫描:

1. 安装依赖

bash 复制代码
cd my-api
npm install @openai/codex-security

2. 添加扫描脚本

json 复制代码
{
  "scripts": {
    "security-scan": "npx @openai/codex-security scan . --path src"
  }
}

团队成员只需 npm run security-scan 就能触发扫描,不用记一长串参数。

3. TypeScript 项目集成 SDK

希望嵌入构建流程或自定义脚本,SDK 更合适:

ts 复制代码
import { CodexSecurity } from "@openai/codex-security";

const security = new CodexSecurity();

try {
  const result = await security.run("./src");
  console.log("扫描完成,报告路径:", result.reportPath);
  
  // 可检查是否有严重级别漏洞,决定是否阻断构建
} finally {
  await security.close();
}

finally 块中的 close() 释放扫描过程占用的资源,别漏掉。

4. 导出报告

扫描完成后,结果可导出为 SARIF、JSON 或 CSV:

bash 复制代码
## 导出威胁模型
npx @openai/codex-security export --artifact threat-model --output threatmodel.md

## 指定某次扫描 ID
npx @openai/codex-security export --scan SCAN_ID --artifact threat-model --output threatmodel.md

不指定 --scan 默认使用当前仓库最近一次完成的扫描结果。导出文件可直接附在 PR 描述或团队内共享。

常见踩坑提醒

Q1:提示需要 Daybreak Blue 权限但我没有?

去掉 --cyber-access-program daybreak_blue 参数,或显式设置为 --cyber-access-program standard。标准模式对大多数项目足够。

Q2:CI 环境中怎么配置认证?

在 CI job 环境变量设置 OPENAI_API_KEY 或 CODEX_API_KEY,跳过 login 步骤。GitHub Action 用 ${{ secrets.CODEX_SECURITY_API_KEY }} 引用。

Q3:扫描很慢或卡住?

深度模式会启动多个并行工作线程,大仓库耗时较长。CI 中用 --diff 做增量扫描,定期(如每周)跑一次全量。确认 Node.js 版本在要求范围内,版本不对可能导致扫描引擎异常退出。

Q4:支持其他 AI 提供商吗?

支持。除 OpenAI 外,还可用 Amazon Bedrock、OpenRouter 和 Fireworks AI。Bedrock 直接用 AWS 认证,无需单独登录 OpenAI。具体配置参考项目 provider 文档。

建立持续安全机制

回顾完整流程:安装 Codex Security 并通过 login 获取凭证 → 用 scan 命令扫描项目,按需选择 --path、--diff 或 --mode deep → 用 policy 生成 SECURITY.md 草稿,export 导出报告 → 在 TypeScript 项目中集成 SDK,嵌入自动化流程。

安全扫描不是一次性工作。建议先在本地跑全量扫描了解安全基线;CI 中配置 --diff 增量扫描确保每次修改不引入新问题;定期(每月或每季度)跑深度扫描,结合导出的威胁模型做代码 review。

项目仓库 openai/codex-security 的文档包含 GitHub Action 配置、批量扫描容器部署、Findings Service 详细指南。花 15 分钟跑一次扫描,可能帮你避免一次线上事故。

最后更新:2026-10-09T10:02:31

评论 (0)

发表评论

blog.comments.form.loading
0/500

暂无评论,快来发表第一条评论吧!