导出合规报告

Compliance Service 以 ZIP 格式导出报告,包含 HTML、CSV、Excel 文件及元数据。

导出 Scan 报告

导出最新的 Scan 报告

# 导出最新的 Scan ZIP
NS=compliance-system
SCAN=os-scan

kubectl create --raw "/apis/reports.compliance.security.alauda.io/v1alpha1/scans/${NS}/${SCAN}/export/zip" -f - <<< '{}' > ${SCAN}.zip

Scan ZIP 文件包含:

  • report.html - 多个标签页:Overview、Rule Summary 及各节点
  • report.xls - 多个工作表
  • report.csv - 分段数据
  • metadata.txt - ScanID、过滤条件及统计信息

导出历史 Scan 报告

# 获取 Scan 历史 scanID
kubectl get scan -n compliance-system os-scan -o yaml | grep scanID

# 通过 scanID 导出历史 Scan 报告
NS=compliance-system
SCAN=os-scan
SCANID=be4637ee-8d06-4aaf-9f5b-ca315475599d

kubectl create --raw "/apis/reports.compliance.security.alauda.io/v1alpha1/scans/${NS}/${SCAN}/export/zip?scanID=${SCANID}" -f - <<< '{}' > ${SCAN}-${SCANID}.zip

导出 ScanSuite 报告

导出最新的 ScanSuite 报告

# 导出最新的 ScanSuite ZIP
NS=compliance-system
SUITE=test-scan

kubectl create --raw "/apis/reports.compliance.security.alauda.io/v1alpha1/scansuites/${NS}/${SUITE}/export/zip" -f - <<< '{}' > ${SUITE}.zip

ScanSuite ZIP 文件包含聚合的 CSV 和 Excel 输出、元数据以及每个子 Scan 报告。

导出历史 ScanSuite 报告

# 获取 ScanSuite 历史 runID
kubectl get scansuite -n compliance-system test-scan -o yaml | grep runID

# 通过 runID 导出历史 ScanSuite 报告
NS=compliance-system
SUITE=test-scan
RUNID=20260106-035650-004246

kubectl create --raw "/apis/reports.compliance.security.alauda.io/v1alpha1/scansuites/${NS}/${SUITE}/export/zip?runID=${RUNID}" -f - <<< '{}' > ${SUITE}-${RUNID}.zip

使用 CURL 导出报告

也可以使用带有 bearer 令牌认证的 CURL 导出报告。

使用 CURL 导出 Scan 报告

APISERVER="https://<platform-address>/kubernetes/<cluster-name>"
TOKEN="<Bearer_token>"
NS=compliance-system
SCAN=os-scan
SCANID=be4637ee-8d06-4aaf-9f5b-ca315475599d

curl -k -X POST \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{}' \
  --output "${SCAN}-${SCANID}.zip" \
  "${APISERVER}/apis/reports.compliance.security.alauda.io/v1alpha1/scans/${NS}/${SCAN}/export/zip?scanID=${SCANID}"

使用 CURL 导出 ScanSuite 报告

APISERVER="https://<platform-address>/kubernetes/<cluster-name>"
TOKEN="<Bearer_token>"
NS=compliance-system
SUITE=test-scan

curl -k -X POST \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{}' \
  --output "${SUITE}.zip" \
  "${APISERVER}/apis/reports.compliance.security.alauda.io/v1alpha1/scansuites/${NS}/${SUITE}/export/zip"

注意:

  • -d '{}' 是必须的,因为 API 期望有 POST 请求体。
  • 使用 --output <file> 保存二进制 ZIP 文件,避免终端输出杂乱。