navi-go

7. MLSecOps / LLMSecOps 流水线与演示

本节描述 NaviGo 当前仓库已实现的安全与质量流水线,以及本地可复现的演示方式。

7.1 本地开发与质量门禁

项目脚本(package.json):

acceptancescripts/acceptance.sh)执行顺序:

  1. typecheck
  2. lint
  3. test:unit
  4. test:integration
  5. test:eval
  6. OPENAI_API_KEY + DUFFEL_API_TOKEN + POSTGRES_URL 均存在,则执行一次 live CLI 场景;否则打印 [blocked] 提示。

这保证了“静态检查 + 自动化测试 + 条件化真实链路验证”三层门禁。

7.2 CI(GitHub Actions)现状

.github/workflows/ci.yml

Job 1: security-scan(LLMSecOps)

已启用:

Job 2: checks

security-scan 通过后执行:

Job 3: build

security-scanchecks 通过后执行:

Job 4: docker-build-and-scan

.github/workflows/llmsecops.yml

专用于 LLM 应用安全的独立工作流:

Job 1: ai-sast(AI SAST)

Job 2: ai-supply-chain

Job 3: llm-redteam

Job 4: model-config-audit

7.3 CD(GitHub Actions)现状

.github/workflows/cd.yml

main 分支 push 或手动触发时:

  1. 构建并推送 GHCR 镜像
  2. Trivy 扫描发布镜像(CRITICAL/HIGH)
  3. 生成并上传 SBOM
  4. 生成并推送 build provenance attestation

这形成了从代码到镜像发布的供应链安全闭环(扫描 + SBOM + provenance)。

7.4 LLM 应用级安全控制(运行时)

1) 输入与输出护栏

2) 结构化与边界校验

3) 外部调用鲁棒性

requestJson(...) 提供统一:

4) Prompt 安全静态分析

scripts/prompt-security-scan.ts 在 CI 中运行,检测:

7.5 可观测性(LangSmith)

src/observability/tracing.ts

调用入口:

7.6 演示:从提交到安全验证

A. 本地演示

npm install
npm run typecheck
npm run lint
npm run test:unit
npm run test:integration

(可选)若已配置 LangSmith:

npm run test:eval

(可选)若已配置 OpenAI + Duffel + Postgres:

npm run acceptance

Prompt 安全扫描与模型配置审计也可本地运行:

npx tsx scripts/prompt-security-scan.ts
npx tsx scripts/ai-dependency-scan.ts
npx tsx scripts/model-config-audit.ts

B. CI/CD 演示(仓库侧)

  1. 提交 PR -> 触发 CI + LLMSecOps
  2. 观察 security-scan(audit / secret / semgrep / SBOM)
  3. 观察 ai-sast(prompt security scan / semgrep 扩展规则)
  4. 观察 ai-supply-chain(audit / AI dependency scan / blocklist)
  5. 观察 llm-redteam(对抗测试通过率)
  6. 观察 model-config-audit(模型配置安全审计)
  7. 观察 checks(typecheck / lint / unit / integration)
  8. 合并到 main -> 触发 CD
  9. 观察镜像构建、Trivy、SBOM、attestation

7.7 建议的下一步增强