mcpField
I
iso-27001-evidence-collection

iso-27001-evidence-collection

github.com/open-agreements安全6148 次安装5 天前更新
代码仓库

关于 iso-27001-evidence-collection

为 ISO 27001:2022 和 SOC 2 审计提供证据收集流程与命令参考,面向负责合规和审计准备的团队。它按控制项组织证据,并协助检查完整性、时效性和命名规范。

主要功能

  1. 01提供按控制项收集证据的流程
  2. 02涵盖云平台、GitHub 和终端命令参考
  3. 03说明证据时效要求与命名规范
  4. 04检查证据完整性、格式和覆盖范围
  5. 05生成映射控制项的证据索引

适用场景

  1. 01准备外部审计所需的证据包
  2. 02定期更新过期或临近过期的证据
  3. 03验证整改结果并留存证据
  4. 04为新纳入范围的系统建立基线

MCP 相关

可选连接 Internal ISO Audit MCP 服务,以查询控制项指导、证据要求和相关控制。没有该服务时,也可使用本地合规数据或内置清单。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/open-agreements/open-agreements --skill iso-27001-evidence-collection

安装后在 Claude Code 中输入/iso-27001-evidence-collection确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CONNECTORS.md
rules/
api-exports.md
evidence-types.md
screenshot-guide.md

详细介绍

ISO 27001 证据收集

系统化收集 ISO 27001:2022 和 SOC 2 的审计证据。此技能提供以 API 为先的证据收集命令,按控制措施整理证据,并在审计员审核前验证完整性。

安全模型

  • 不执行脚本 — 此技能仅包含 Markdown 格式的流程指南
  • 无需密钥 — 可使用参考核对清单;CLI 命令使用已有的本地凭据
  • 证据保留在本地 — 所有输出都写入本地文件系统
  • 不涉及知识产权 — 引用 NIST SP 800-53(公有领域内容);ISO 控制措施仅按章节 ID 引用

适用场景

在以下情况下启用此技能:

  1. 为外部审计准备证据包 — 在审计员到场前 2-4 周
  2. 季度证据更新 — 更新超过审计窗口期限的证据
  3. 修复后 — 收集证明发现的问题已修复的证据
  4. 新系统接入 — 为新纳入范围的系统建立基线证据
  5. 证据缺口分析 — 在审计前找出缺失项

请勿用于:

  • 执行内部审计本身 — 使用 iso-27001-internal-audit
  • 仅进行 SOC 2 就绪情况评估 — 使用 soc2-readiness
  • 解读审计发现 — 使用内部审计技能

核心概念

证据层级(从优到劣)
排名类型示例优势
1API 导出(JSON/CSV)gcloud iam service-accounts list --format=json带时间戳、防篡改、可复现
2系统生成的报告供应商提供的 SOC 2 报告、SIEM 导出来源权威,包含元数据
3配置导出Terraform 状态、策略 JSON显示预期状态,并受版本控制
4带系统时钟的屏幕截图screencapture -x ~/evidence/...可视化证明,但更难验证
5人工证明责任人签署的声明最后手段,需要佐证
证据时效要求
证据类型最大时效更新频率
访问列表90 天每季度
漏洞扫描30 天每月
配置导出90 天每季度
培训记录12 个月每年
渗透测试12 个月每年
策略文档12 个月每年审查
事件记录审计期间持续更新
风险评估12 个月每年及变更时
证据命名规范
{control_id}_{evidence_type}_{YYYY-MM-DD}.{ext}

示例:

  • A.5.15_user-access-list_2026-02-28.json
  • A.8.8_vulnerability-scan_2026-02-28.csv
  • A.8.13_backup-test-results_2026-02-28.pdf

分步工作流

步骤 1:识别证据缺口

确定缺失或已过时的证据。

# If Internal ISO Audit MCP server is available:
search_guidance(query="evidence", domain="organizational")  # Find controls needing evidence
list_controls(domain="technological")                       # List all tech controls to assess gaps
get_control_guidance(control_id="A.5.15")                   # Get evidence requirements for a specific control

# If reading local compliance data:
# Check compliance/evidence/*.md files for upload_status != "OK"
# Check renewal_next dates for upcoming expirations
步骤 2:确定收集优先级

按以下顺序收集证据:

  1. 关键级控制措施缺失的证据 — 阻碍审计
  2. 超过更新期限的过时证据 — 审计员会拒绝
  3. 相关级控制措施的证据 — 预期需要,但不会阻碍审计
  4. 核对清单级证据 — 策略和证明
步骤 3:按平台收集

按平台分组运行证据收集命令,以尽量减少上下文切换。

GitHub 证据
# Org settings: MFA requirement, default permissions
gh api orgs/{org} | jq '{
  two_factor_requirement_enabled,
  default_repository_permission,
  members_can_create_public_repositories
}' > evidence/A.5.17_github-org-mfa_$(date +%Y-%m-%d).json

# Branch protection on production repos
for repo in $(gh repo list {org} --json name -q '.[].name'); do
  gh api repos/{org}/$repo/branches/main/protection 2>/dev/null | \
    jq '{repo: "'$repo'", protection: .}' >> evidence/A.8.32_branch-protection_$(date +%Y-%m-%d).json
done

# Recent merged PRs (change management evidence)
gh pr list --state merged --limit 50 --json number,title,author,reviewDecision,mergedAt,mergedBy \
  > evidence/A.8.32_change-records_$(date +%Y-%m-%d).json

# Dependabot alerts (vulnerability management)
gh api repos/{org}/{repo}/dependabot/alerts?state=open \
  > evidence/A.8.8_dependabot-alerts_$(date +%Y-%m-%d).json

# Secret scanning alerts
gh api orgs/{org}/secret-scanning/alerts --paginate \
  > evidence/A.8.24_secret-scanning_$(date +%Y-%m-%d).json

# Audit log
gh api orgs/{org}/audit-log?per_page=100 \
  > evidence/A.8.15_github-audit-log_$(date +%Y-%m-%d).json
GCP 证据
# IAM policy (access control)
gcloud projects get-iam-policy {project} --format=json \
  > evidence/A.5.15_gcp-iam-policy_$(date +%Y-%m-%d).json

# Service accounts
gcloud iam service-accounts list --format=json \
  > evidence/A.5.16_gcp-service-accounts_$(date +%Y-%m-%d).json

# Audit logging config
gcloud projects get-iam-policy {project} --format=json | jq '.auditConfigs' \
  > evidence/A.8.15_gcp-audit-config_$(date +%Y-%m-%d).json

# Log sinks (centralization)
gcloud logging sinks list --format=json \
  > evidence/A.8.15_gcp-log-sinks_$(date +%Y-%m-%d).json

# Compute instances (asset inventory)
gcloud compute instances list --format=json \
  > evidence/A.5.9_gcp-compute-inventory_$(date +%Y-%m-%d).json

# Cloud SQL backup config
gcloud sql backups list --instance={instance} --format=json \
  > evidence/A.8.13_gcp-sql-backups_$(date +%Y-%m-%d).json

# Firewall rules
gcloud compute firewall-rules list --format=json \
  > evidence/A.8.20_gcp-firewall-rules_$(date +%Y-%m-%d).json
Azure 证据
# Role assignments (access control)
az role assignment list --all --output json \
  > evidence/A.5.15_azure-role-assignments_$(date +%Y-%m-%d).json

# Activity log (audit trail)
az monitor activity-log list --max-events 100 --output json \
  > evidence/A.8.15_azure-activity-log_$(date +%Y-%m-%d).json

# Network security groups
az network nsg list --output json \
  > evidence/A.8.20_azure-nsgs_$(date +%Y-%m-%d).json

# Backup jobs
az backup job list --resource-group {rg} --vault-name {vault} --output json \
  > evidence/A.8.13_azure-backup-jobs_$(date +%Y-%m-%d).json

# Storage encryption
az storage account list --query "[].{name:name, encryption:encryption}" --output json \
  > evidence/A.8.24_azure-storage-encryption_$(date +%Y-%m-%d).json
Google Workspace 证据
# User list with MFA status
gam print users fields primaryEmail,name,isEnrolledIn2Sv,isEnforcedIn2Sv,lastLoginTime,suspended \
  > evidence/A.5.17_workspace-users-mfa_$(date +%Y-%m-%d).csv

# Admin roles
gam print admins > evidence/A.8.2_workspace-admins_$(date +%Y-%m-%d).csv

# Mobile devices
gam print mobile > evidence/A.8.1_workspace-mobile-devices_$(date +%Y-%m-%d).csv
macOS 终端设备证据
# FileVault encryption
fdesetup status > evidence/A.8.24_filevault-status_$(date +%Y-%m-%d).txt

# System configuration
system_profiler SPHardwareDataType SPSoftwareDataType \
  > evidence/A.8.1_endpoint-config_$(date +%Y-%m-%d).txt

# Screen lock settings
profiles show -type configuration 2>/dev/null | grep -A10 -i "lock\|idle\|screensaver" \
  > evidence/A.6.7_screenlock-config_$(date +%Y-%m-%d).txt
步骤 4:验证证据包

提交给审计员前检查完整性:

  1. 完整性:是否为 SoA 中每项适用的控制措施都准备了证据?
  2. 时效性:所有证据是否都在要求的时效范围内?
  3. 格式:API 导出是否为带时间戳的 JSON/CSV?屏幕截图是否显示系统时钟?
  4. 命名:文件是否符合命名规范?
  5. 覆盖范围:关键级控制措施是否至少有 2 种形式的证据?
# If Internal ISO Audit MCP server is available:
list_controls()                                             # Get all controls to verify evidence coverage
get_control_guidance(control_id="A.8.8")                    # Check specific control's evidence expectations
search_guidance(query="vulnerability scanning evidence")    # Find controls related to specific evidence types
步骤 5:生成证据索引

创建索引文件,列出所有证据并映射到相应控制措施:

# Evidence Package Index
Generated: {date}
Audit period: {start} to {end}

| Control | Evidence File | Type | Collected | Status |
|---------|--------------|------|-----------|--------|
| A.5.15 | gcp-iam-policy_2026-02-28.json | API export | 2026-02-28 | Current |
| A.5.17 | workspace-users-mfa_2026-02-28.csv | API export | 2026-02-28 | Current |
| ... | ... | ... | ... | ... |

要做/不要做

要做
  • 尽可能使用带有 ISO 8601 时间戳的 API 导出,而不是截图
  • 从源系统(IdP,而非二级报告)收集证据
  • 包含元数据:收集日期、系统版本、收集人
  • 将证据存储在版本控制目录中,并使用清晰的命名
  • 收集审计期间(通常是过去 12 个月)的证据,而不只是当前状态
  • 使用 screencapture -x ~/evidence/{filename}.png 截图(捕获的图像不带阴影/边框)
不要做
  • 截取未显示系统时钟的屏幕(macOS 上的菜单栏、Windows 上的任务栏)
  • 从沙盒/预发布环境而非生产环境收集证据
  • 收集后手动编辑证据(审计人员可能会对照源数据进行核实)
  • 等到审计前一周才收集所有材料
  • 假定过时的证据可以接受——请查看上文的时效性要求
  • 将不同审计期间的证据混在同一个文件中

故障排除

问题解决方案
API 命令需要身份验证使用现有本地凭据:gcloud auth login、az login、gh auth login
未安装工具安装:brew install gh、brew install --cask google-cloud-sdk、brew install azure-cli
权限不足申请相关服务的只读访问权限;将访问申请记录为证据
证据过大使用 --limit 或 --max-events 标志;收集汇总统计数据,而非完整导出
供应商不愿提供 SOC 2 报告通过其信任中心申请;若无法获取,请记录申请情况并使用其安全页面
截图未包含时钟在 macOS 上:使用全屏截图,或使用 screencapture -x,该命令会包含菜单栏

规则

按主题查看详细的证据收集指南:

文件涵盖内容
rules/api-exports.md各云服务提供商的 CLI 命令(GCP、Azure、AWS、GitHub、Google Workspace)
rules/screenshot-guide.md何时以及如何截取符合审计要求的屏幕截图
rules/evidence-types.md各控制域的证据类型要求

归属

证据收集流程和控制指南由 Internal ISO Audit(Hazel Castro,ISO 27001 首席审计师,拥有 14+ 年经验,参与过 100+ 次审计)协助制定。

运行时检测

  1. Internal ISO Audit MCP server 可用(最佳)——实时查询控制指南、交叉引用 NIST,并对所有控制证据要求进行全文搜索。服务地址:internalisoaudit.com/api/mcp
  2. 本地合规数据可用(良好)——从 compliance/evidence/*.md 读取证据状态
  3. 仅供参考(基准)——使用 rules/ 中嵌入的检查清单和命令参考

连接器

有关 Internal ISO Audit MCP server 的设置,请参阅 CONNECTORS.md。

评论

支持 Markdown