SuperAPI AI 工具集

devsecops-pipeline

部署与运维

查看项目

更新于 10-16 05:38

技能介绍

用途

devsecops-pipeline 是一个用于 CI/CD 流水线安全建设与评估的技能。它评估当前 CI/CD 流水线在 8 个阶段(Plan → Code → Build → Test → Release → Deploy → Operate → Monitor)的安全成熟度,识别 DevSecOps 缺口,并生成可直接使用的 GitHub Actions 工作流配置、安全门禁策略定义和分阶段实施路线图。

适用时机:

  • 为现有 CI/CD 流水线添加安全控制
  • 搭建需要从一开始就内置安全的新流水线
  • 准备 DevSecOps 成熟度评估或审计
  • 跨多个团队或仓库统一安全工具链

前置依赖

工具按阶段引用,只需安装适用于自身技术栈的部分:

  • SAST:semgrep(免费)、CodeQL(GitHub 原生)、SonarQube(自托管或云)
  • SCA:snyk CLI、trivy、Dependabot(GitHub 原生)
  • 密钥扫描:gitleaks
  • IaC 扫描:checkov、tfsec
  • 容器扫描:trivy、grype + syft
  • DAST:zaproxy(OWASP ZAP)、nuclei
  • SBOM:syft(CycloneDX/SPDX 输出)、cosign(制品签名)
  • 运行时:Falco(Kubernetes)、CSPM 工具(AWS Security Hub、GCP SCC 等)

安装示例(Debian/Ubuntu):

pip install semgrep checkov
brew install gitleaks trivy grype syft cosign nuclei  # macOS
# Or: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh

输入变量

变量 必填 说明
SECSKILL_REPO_PATH 必填 仓库根目录路径
SECSKILL_CI_PLATFORM 可选 github 或 gitlab(默认:github)
SECSKILL_OUTPUT_DIR 可选 输出目录(默认:./devsecops-output)
SECSKILL_REGISTRY 可选 用于镜像扫描的容器镜像仓库 URL
SECSKILL_IMAGE_NAME 可选 待扫描的容器镜像 name:tag

工作流程

Step 1:评估当前流水线成熟度

设置仓库、CI 平台与输出目录环境变量,创建成熟度评估文件,然后检测现有流水线文件:查找 .github/workflows 目录(GitHub Actions)与 .gitlab-ci.yml(GitLab CI)。随后逐项检测 CI 配置中是否已集成各安全工具,覆盖内容写入成熟度文件,包括:

  • Pre-commit hooks(gitleaks)
  • SAST(semgrep/codeql)
  • SCA(snyk/trivy)
  • IaC scanning(checkov/tfsec)
  • Container scan(trivy/grype)
  • DAST(zap/nuclei)
  • SBOM generation(syft)
  • Artifact signing(cosign)
  • Runtime monitoring(falco)

关键命令片段:

export REPO="${SECSKILL_REPO_PATH:?Set SECSKILL_REPO_PATH}"
export CI_PLATFORM="${SECSKILL_CI_PLATFORM:-github}"
export OUTDIR="${SECSKILL_OUTPUT_DIR:-./devsecops-output}"
mkdir -p "$OUTDIR"

Step 2:按阶段识别缺口

生成缺口分析文件 gap_analysis.md,并扫描仓库结构补充上下文,例如是否存在 Dockerfile、docker-compose.yml、terraform/infra 目录、.pre-commit-config.yaml、package.json、requirements.txt 或 pyproject.toml、go.mod 等,以确定适用的扫描类型。完整的缺口分析表(覆盖 14 项流水线阶段/控制项,含工具与状态列)参见 REFERENCE.md。

Step 3:生成 CI/CD 配置

输出 GitHub Actions 工作流文件 devsecops-pipeline.yml 与 GitLab CI 片段 gitlab-devsecops.yml。完整模板(密钥扫描、SAST、SCA、IaC、容器扫描、DAST、SBOM + cosign 签名)参见 REFERENCE.md。

Step 4:定义安全门禁策略

生成 security-gate-policies.md,包含硬门禁(失败即阻断)、软门禁(告警 + 例外)以及指标目标。完整策略表参见 REFERENCE.md。

Step 5:输出实施路线图

生成 implementation-roadmap.md。分阶段路线图(5 个阶段,第 1–8 周及后续成熟度事项)参见 REFERENCE.md。

完成时输出文件清单:

  • 成熟度评估:maturity_assessment.txt
  • 缺口分析:gap_analysis.md
  • GitHub Actions CI:devsecops-pipeline.yml
  • GitLab CI 片段:gitlab-devsecops.yml
  • 安全门禁策略:security-gate-policies.md
  • 实施路线图:implementation-roadmap.md

完成标准

  • 已对照全部 8 个阶段评估流水线成熟度
  • 缺口分析表已填入当前工具覆盖情况
  • CI/CD 配置文件已生成并保存
  • 已定义含硬门禁与软门禁的安全门禁策略
  • 已在输出目录创建分阶段实施路线图

失败模式

现象 原因 解决方式
未检测到 CI 配置 新仓库尚无流水线 使用生成的文件作为起点
gitleaks 阻断提交 暂存文件中存在真实密钥 轮换凭据,再用 git filter-repo 从历史中移除
Semgrep 超时 大型 monorepo 添加 .semgrepignore 排除 vendored/生成代码
ZAP 扫描找不到目标 未设置 DAST_TARGET_URL 在 CI 环境设置中配置该变量
cosign 签名失败 无 OIDC token 确保 GitHub Actions job 具备 id-token: write 权限
Trivy DB 过期 离线环境 用 trivy image --download-db-only 预拉取并缓存 DB

注意事项

  • 仅从 Phase 1 开始——一次性加入所有门禁会导致告警疲劳和流水线弃用。
  • 先在审计模式(非阻断)下调优 SAST 规则 2 周,再启用硬门禁。
  • SBOM 生成是供应链合规的前提(参见 supply-chain-audit 技能)。
  • 如需 SLSA 合规,可将本技能与 supply-chain-audit 技能配合使用。
  • devsecops-output/ 中的流水线配置为模板——提交前请审查并调整严重性阈值、语言矩阵和目标 URL。