本文档正在积极开发中,尚未最终定稿。
Skip to content

8.2 自动化工作流

架构

BAUER GROUP 的 CRA 自动化分布在两个仓库中:

  • CRA 专用工作流和操作位于 SEC-CRACompliance(本仓库)
  • 通用操作(VEX 生成、SBOM 认证)位于 automation-templates

消费者仓库(您的产品)只需一行 uses: 即可调用 CRA 发布工作流。

可复用工作流

cra-release.yml — 发布制品

主要工作流。为每次发布生成、签名和存档所有 CRA 制品。

使用方法(零配置):

yaml
jobs:
  cra:
    uses: bauer-group/SEC-CRACompliance/.github/workflows/cra-release.yml@main
    permissions:
      contents: write
      id-token: write
      attestations: write
      security-events: write

流水线流程:

步骤操作制品CRA 参考
1SBOM 生成sbom.cdx.jsonArt. 13(23)
2SBOM 签名 (Cosign).sig + .certArt. 10(12)
3SBOM 认证GitHub AttestationArt. 10(12)
4漏洞扫描vulnerability-report.jsonArt. 10(6)
5VEX 生成vex.openvex.jsonAnnex I II.2
6合规报告.json + .mdAnnex VII

零配置

所有新功能(认证、VEX、合规报告)默认启用。现有消费者无需更改工作流即可自动获取。

cra-scan.yml — 定期漏洞扫描

用于持续 CVE 监控(Art. 10(8))。通过 cron 计划每日运行。

cra-report.yml — Hub API 报告

将合规数据发送到软件安全中心 API 进行集中跟踪。

完整的消费者工作流

复制粘贴

将此工作流复制到您的产品仓库中,保存为 .github/workflows/cra.yml。涵盖发布合规、每周扫描和中心报告。

最小配置(零配置)

yaml
# .github/workflows/cra.yml
name: CRA Compliance

on:
  release:
    types: [published]
  schedule:
    - cron: '0 6 * * 1'
  workflow_dispatch:

permissions:
  contents: write
  id-token: write
  attestations: write
  security-events: write
  issues: write

jobs:
  cra-release:
    if: github.event_name == 'release'
    uses: bauer-group/SEC-CRACompliance/.github/workflows/cra-release.yml@main
    permissions:
      contents: write
      id-token: write
      attestations: write
      security-events: write

  cra-scan:
    if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
    uses: bauer-group/SEC-CRACompliance/.github/workflows/cra-scan.yml@main
    permissions:
      contents: read
      security-events: write
      issues: write

完整配置(所有参数)

yaml
jobs:
  cra-release:
    if: github.event_name == 'release'
    uses: bauer-group/SEC-CRACompliance/.github/workflows/cra-release.yml@main
    with:
      run-validation: true              # 在生成 CRA 制品前运行验证
      validation-command: 'npm run ci'
      sign-sbom: true                   # Cosign 无密钥签名
      fail-on-critical: true            # CRITICAL CVE 时阻止发布
      enable-grype: true                # 额外的 Grype 扫描
      attest-sbom: true                 # GitHub SBOM 认证
      generate-vex: true                # OpenVEX 文档
      generate-eu-doc: true             # EU 符合性声明 (Annex V)
      render-pdfs: true                 # JSON → PDF 渲染
      classification: 'important-class-1'
      support-period-years: 5
    permissions:
      contents: write
      id-token: write
      attestations: write
      security-events: write

  cra-scan:
    if: github.event_name == 'schedule'
    uses: bauer-group/SEC-CRACompliance/.github/workflows/cra-scan.yml@main
    with:
      severity-threshold: 'MEDIUM'
      create-issue: true
    permissions:
      contents: read
      security-events: write
      issues: write

参数参考

cra-release.yml

参数类型默认值说明
run-validationbooleanfalse生成 CRA 制品前运行验证
sign-sbombooleantrue使用 Cosign 签名 SBOM
fail-on-criticalbooleanfalseCRITICAL 漏洞时失败
enable-grypebooleanfalse启用 Grype 扫描
enable-osvbooleantrue启用 OSV-Scanner
attest-sbombooleantrue创建 GitHub SBOM 认证
generate-vexbooleantrue生成 OpenVEX 文档
generate-eu-docbooleantrue生成 EU 符合性声明
render-pdfsbooleantrueJSON → PDF 渲染
classificationstring'standard'standard, important-class-1, important-class-2, critical
support-period-yearsnumber5支持期限(Art. 13(8))

所需权限

工作流权限原因
cra-releasecontents: write上传发布资产
cra-releaseid-token: writeCosign 无密钥签名 (OIDC)
cra-releaseattestations: writeGitHub SBOM 认证
cra-releasesecurity-events: writeSARIF 上传
cra-scanissues: write创建 CVE Issue

发布制品

制品格式用途CRA 参考
sbom.cdx.jsonCycloneDX JSON软件物料清单Art. 13(23)
sbom.cdx.json.sigCosign 签名SBOM 完整性Art. 10(12)
vulnerability-report.jsonTrivy JSON已知漏洞Art. 10(6)
vex.openvex.jsonOpenVEX v0.2.0漏洞可利用性Annex I II.2
cra-compliance-report.jsonSchema v1.0.0机器可读合规状态Annex VII
eu-doc.jsonEU DoC Schema v1.0.0机器可读 EU 符合性声明Art. 28, Annex V
EU-Declaration-*.pdfPDF可打印 EU 符合性声明Art. 28, Annex V
CRA-Compliance-Report-*.pdfPDF可打印合规报告Annex VII

合规评分

类别满分标准
SBOM20已生成 (10) + 已签名 (5) + 已认证 (5)
签名15Cosign 验证 (10) + 认证存在 (5)
漏洞200 关键 (15) + 0 高危 (5)
VEX10已生成 (5) + 手动覆盖存在 (5)
安全策略15SECURITY.md (10) + CVD 流程 (5)
支持期限10已定义 (10)
CRA 条款覆盖10满足条款百分比

CLI 工具

使用 cra-check CLI 进行本地验证或检查任何 GitHub 仓库。

文档基于 CC BY-NC 4.0 许可 · 代码基于 MIT 许可