bookworm-smart-assistant/skills/devsecops-expert/SKILL.md

5.1 KiB

name: devsecops-expert description: > DevSecOps 专家。当用户需要安全左移、SAST/DAST 安全扫描、容器安全、镜像扫描 Trivy、 供应链安全 SBOM、安全流水线、OPA/Gatekeeper 策略、合规审计, 或说 "DevSecOps"、"安全扫描"、"容器安全" 时使用此技能。 allowed-tools: Read, Glob, Grep, Edit, Write, Bash maturity: stable last-reviewed: 2026-02-18 composable: true enhances: [security-expert, devops-expert]

DevSecOps 专家 (DevSecOps Expert)

Output Style: 本技能使用内联输出规范

精通安全左移、自动化安全测试和云原生安全实践。

触发关键词

  • 安全实践: DevSecOps, 安全左移, 安全自动化
  • 扫描工具: SAST, DAST, SCA, 安全扫描
  • 容器安全: 容器安全, 镜像扫描, 运行时安全
  • 供应链: 供应链安全, SBOM, 依赖扫描
  • 合规: 合规, 审计, 安全策略

安全流水线

GitHub Actions 安全扫描

name: Security Pipeline

on: [push, pull_request]

jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      # SAST - 静态分析
      - uses: actions/checkout@v4
      - name: Run Semgrep
        uses: returntocorp/semgrep-action@v1
        with:
          config: p/security-audit

      # SCA - 依赖扫描
      - name: Run Snyk
        uses: snyk/actions/node@master
        with:
          command: test
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

      # Secret 扫描
      - name: Run Gitleaks
        uses: gitleaks/gitleaks-action@v2

      # 容器镜像扫描
      - name: Build and scan image
        run: |
          docker build -t app:${{ github.sha }} .
          trivy image --exit-code 1 --severity HIGH,CRITICAL app:${{ github.sha }}          

容器安全

安全 Dockerfile

# 使用最小基础镜像
FROM node:20-alpine AS builder
WORKDIR /app

# 只复制依赖文件
COPY package*.json ./
RUN npm ci --only=production

FROM gcr.io/distroless/nodejs20-debian12

WORKDIR /app

# 非 root 用户
USER nonroot

# 只复制必要文件
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist

CMD ["dist/main.js"]

镜像扫描

# Trivy 扫描配置
trivy:
  severity: [HIGH, CRITICAL]
  ignore-unfixed: true
  scanners:
    - vuln
    - secret
    - config

供应链安全

SBOM 生成

# 生成 SBOM
syft . -o spdx-json > sbom.json

# 验证 SBOM
grype sbom:sbom.json

依赖锁定

// package-lock.json 应该提交到版本控制
// npm ci 使用锁定的版本

安全策略

OPA/Gatekeeper 策略

# 禁止特权容器
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPPrivilegedContainer
metadata:
  name: deny-privileged
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]

网络策略

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress

安全检查清单

### 代码安全
- [ ] SAST 扫描通过
- [ ] 无硬编码密钥
- [ ] 依赖无高危漏洞

### 容器安全
- [ ] 使用最小基础镜像
- [ ] 非 root 用户运行
- [ ] 镜像扫描通过

### 运行时安全
- [ ] 网络策略配置
- [ ] 资源限制设置
- [ ] 日志审计启用

输出规范

  • 提供完整的安全配置
  • 说明风险等级
  • 给出修复建议
  • 包含自动化方案

SCA 实战命令 (Software Composition Analysis)

按语言快速审计依赖漏洞

# Node.js — npm/pnpm
npm audit --production          # 仅生产依赖
npm audit fix                   # 自动修复
pnpm audit --production

# Python — pip
pip audit                       # 需 pip install pip-audit
pip audit --fix                 # 自动升级
safety check                    # 需 pip install safety

# Go
go vet ./...                    # 静态检查
govulncheck ./...               # 需 go install golang.org/x/vuln/cmd/govulncheck@latest

# Rust
cargo audit                     # 需 cargo install cargo-audit

# Java/Maven
mvn dependency-check:check      # OWASP Dependency-Check plugin

# 通用 — Trivy (支持所有语言)
trivy fs --scanners vuln .      # 扫描项目目录
trivy fs --severity HIGH,CRITICAL --exit-code 1 .

依赖漏洞分析模板

## SCA 扫描报告
- 扫描时间: YYYY-MM-DD
- 工具: npm audit / pip-audit / trivy
- 总依赖数: N
- 漏洞统计: CRITICAL: X | HIGH: Y | MEDIUM: Z
- 需立即修复: [列表]
- 可延后修复: [列表]
- 误报排除: [列表 + 理由]

常见 CVE 检查清单

  • Log4j (CVE-2021-44228) — Java 项目
  • Prototype Pollution — lodash/minimist 等 JS 库
  • ReDoS — 正则表达式拒绝服务
  • Path Traversal — archiver/tar 等解压库
  • SSRF — HTTP 客户端库 (axios/requests)
  • Deserialization — pickle/yaml.load/eval

禁止事项

  • 不要忽略安全扫描结果
  • 不要使用 root 运行容器
  • 不要跳过依赖扫描
  • 不要硬编码凭据
  • 不要使用已知有 CVE 的库版本而不评估影响