mcpField
P
Policyseed

Policyseed

本地服务
policyseed.io法律与政务1今天更新

关于 Policyseed

Policyseed 是面向准备治理文件的公司的离线 SOC 2 政策生成器。其 MCP 服务可让 AI 助手用户收集信息并在本地生成指定政策,采用确定性模板而非大模型输出。

主要功能

  1. 01根据 YAML 信息生成 22 项政策
  2. 02检查政策复审日期
  3. 03收集只读审计证据
  4. 04确定性 Markdown 模板

适用场景

  1. 01起草一套 SOC 2 政策初稿
  2. 02在 CI 中查找待复审政策
  3. 03收集云服务和 GitHub 审计证据

MCP 相关

`policyseed mcp` 命令会启动 MCP 服务,供 Claude、Cursor 等客户端使用。客户端可列出政策、询问信息并在对话中生成政策。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"odedmoshe-policyseed": {
"command": "npx",
"args": [
"-y",
"policyseed"
]
}
}
}
启动命令npx -y policyseed

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmpolicyseed1.1.1

工具

5

收录的工具列表 · 更新于 3 天前

此工具无需参数。

详细介绍

policyseed

npm License: Apache-2.0 MCP Registry

免费的离线 SOC 2 策略生成器。policyseed 使用小型模板引擎和零运行时依赖,通过一个 YAML 信息收集文件生成 22 份治理策略文档。

npx policyseed init    # writes intake.yaml: company, cloud, identity provider, MFA, team size...
npx policyseed build   # renders the 22 policies into ./policies/

更喜欢用浏览器?相同的模板也可在 policyseed.io/generate 运行:回答 23 个问题,无需注册,不会上传任何内容。

  • 免费且采用 Apache-2.0 许可。 可使用、分叉、修改,并在内部或向客户发布。
  • 结果确定。 相同的 intake.yaml 始终生成相同的 Markdown,不含随机性。
  • 不使用大模型。 模板是采用 Mustache 风格标签语法的纯 Markdown,而非模型生成的内容。
  • 无需注册。除非收集证据,否则不会发起网络请求。 build、check、init、list 和 mcp 不会发起网络请求,可完全在你的计算机或 CI 运行器上运行。evidence 只会调用你已经在使用的云 CLI(aws、gcloud、gh),执行只读命令,而且仅在你运行它时才会调用。

这些策略只是起点,供公司审查和采纳,并不保证合规。请参阅本项目不是什么。

输出示例

每份策略都会根据收集的信息写入你的工具和人员名称。以下是针对一家示例公司(使用 AWS、GitHub、Google Workspace,已启用 MFA,员工人数为 11-50 人),通过 npx policyseed build 生成的访问控制策略摘录:

4.3 Google Workspace 是员工身份的唯一来源。业务应用与其集成,以实现单点登录,并在支持的情况下自动配置和取消配置;无法联合身份验证的应用会记录在例外登记册中,并通过补偿性审查进行管理。

4.8 GitHub 访问权限通过组织成员身份授予,并由 Google Workspace 单点登录强制执行;仓库权限按团队分配;受保护的分支要求由作者以外的人员审查代码,然后才能通过 GitHub Actions 合并和部署代码。如果员工人数使这一做法难以实施,安全负责人会记录补偿性审查。

全部 22 份策略都包含相同的九个部分:目的、范围、角色与职责、编号策略声明、程序、例外、执行、审查周期和修订历史。编号策略声明便于向审计人员指出对应某项控制的具体句子。

快速开始

需要 Node.js 18 或更高版本。无需安装步骤——使用 npx 运行:

npx policyseed init
# edit intake.yaml with your company's details
npx policyseed build
npx policyseed check
  • init 会在当前目录写入带注释的 intake.yaml,其中包含所有字段、允许的值和合理的默认值。除非传入 --force,否则不会覆盖现有文件。
  • build 会读取 intake.yaml,对其进行验证,并将全部 22 份策略写入 ./policies/,生成名为 NN-<slug>.md 且带有公司名称标题的文件。
  • check 会读取 ./policies/ 和 intake.yaml;如果任何策略的上次审查日期超出其 review_cadence 允许的时限,就会以状态码 1 退出。内置的 GitHub Action 会按计划运行此命令,以便逾期策略显示为检查失败。
  • list 会列出内置的 22 个模板。
  • evidence 会通过你已登录的 CLI,从 AWS、Google Cloud 和 GitHub 收集只读 SOC 2 证据。请参阅收集审计证据。
  • --help 和 --version 的作用与你预期的一样。

如果你更愿意将它作为依赖项安装:

npm install --save-dev policyseed
npx policyseed init

模板语法参考

模板是包含 YAML front matter 和一小组标签的纯 Markdown 文件,实现在 lib/render.js 中:

标签行为
{{key}}打印 intake 上下文中 key 的值。未知键会渲染为空字符串。
{{#if key}} … {{/if}}仅当 key 为真值时渲染此代码块。
{{#unless key}} … {{/unless}}仅当 key 为假值时渲染此代码块。
{{#each list}} … {{/each}}对 list 中的每个项目重复渲染此代码块;{{this}} 表示当前项目。

真值判断与 JavaScript 一致,此外空数组也视为假值:false、""、0、NaN、 null、undefined 和 [] 为假值;其他值均为真值。

独占一行的代码块标签(前后只有空白字符)会连同行一起移除,因此条件段落和循环不会 留下多余的空行。连续三个或更多空行会合并为两个。

每个模板可用的上下文由 lib/context.js 中的 toTemplateContext() 根据你的 intake.yaml 构建,包括公司名称、云服务提供商、身份提供商、MFA 状态、处理的 数据类型等,以及模板分支逻辑使用的派生布尔值,如 has_mdm、has_vendors、 scope_availability 和 small_team(员工人数为 1-10)。

22 项政策

#标题
1信息安全政策
2可接受使用政策
3访问控制政策
4身份验证和密码政策
5资产管理政策
6数据分类与处理政策
7数据保留与处置政策
8加密与密钥管理政策
9变更管理政策
10安全软件开发政策
11漏洞与补丁管理政策
12日志记录与监控政策
13事件响应政策
14业务连续性与灾难恢复政策
15备份与恢复政策
16供应商与第三方风险管理政策
17风险评估与管理政策
18人力资源安全政策
19终端与工作站安全政策
20网络与基础设施安全政策
21物理安全与远程办公安全政策
22隐私与数据保护政策

每项政策都包含九个标准部分:目的、范围、角色与职责、政策声明、流程、例外、执行、 审查周期和修订历史。

在 CI 中保持政策更新

在将 intake.yaml 和 policies/ 纳入版本控制的仓库中使用 GitHub Action:

- uses: actions/checkout@v4
- uses: odedmoshe/policyseed@v1
  with:
    command: check

如果某项政策已逾期未审查,检查就会失败,因此过时的政策会显示为红色 X,而不是悄然 过期。 .github/workflows/policy-review.yml 是可供复制的完整每周工作流;输入和输出见 docs/github-action.md。

通过 AI 助手使用(MCP)

policyseed mcp 会启动一个 Model Context Protocol 服务, 让 Claude、Cursor 和其他 MCP 客户端能够列出政策、向你提出 intake 问题,并在对话中渲染任意 政策。除了你输入给助手的内容外,任何信息都不会离开你的设备。

claude mcp add policyseed -- npx -y policyseed mcp

Claude Desktop 和 Cursor 的配置、工具列表及示例对话见 docs/mcp.md。

收集审计证据

审计人员会要求提供控制措施已配置的证明:分支保护、MFA、静态加密、日志记录、管理员访问权限。policyseed evidence 会使用你已安装并登录的 aws、gcloud 和 gh CLI 收集这些信息,并将其保存为带日期的 JSON 文件及索引:

npx policyseed evidence --providers aws,gcp,github \
  --repo acme/app --org acme --project acme-prod
evidence/2026-10-23/
  INDEX.md                                 criterion -> file -> what it shows -> auditor question
  CC6.1-aws-iam-account-summary.json
  CC6.1-aws-iam-credential-report.json
  CC8.1-github-branch-protection.json
  ...

工作方式:

  • 只读。 每条命令都是 Describe、Get 或 List 调用(gh api GET 请求,不包含请求字段)。唯一的例外只是名称上看起来像例外:aws iam generate-credential-report 会请求 IAM 生成凭证报告;IAM 将其归类为 Read 操作,且不会更改任何设置。--dry-run 会打印确切命令,但不会执行;--list 会打印收集器列表。
  • 不使用 shell。 每条命令都通过 Node 的 execFile 和固定的参数数组运行。--repo、--org、--project、存储桶名称和跟踪 ARN 都作为独立参数传递,绝不会插入 shell 字符串。分页器和交互式提示均已关闭。
  • 每个文件都会将 CLI 的 JSON 输出与生成该输出的命令、时间、CLI 版本和退出代码一起封装。文件会按照收集器的首个 SOC 2 标准编号命名为 <criterion>-<collector-id>.json;INDEX.md 会列出每个文件支持的所有标准编号。
  • 脱敏。 写入或打印任何内容之前,疑似包含机密的键(SessionToken、SecretAccessKey、password、token……)对应的值都会被替换,看起来像凭证的字符串也会被替换:GitHub 令牌、AWS 访问密钥 ID 和会话令牌、Google API 密钥和 OAuth 令牌、JWT、PEM 私钥以及 key=value 格式的机密。程序一开始就不会请求机密。账户 ID 会保留,因为审计人员通常需要这些信息;传入 --redact-account-ids 可将 12 位 ID 截断为仅保留末尾四位。
  • 失败不会中止运行。 缺少 CLI、缺少凭证或权限错误时,程序会在 INDEX.md 中写入 not collected: <reason>,然后继续运行。只有完全没有收集到任何内容时,退出代码才为 1。
  • 重新运行。 重新运行时,会替换同一天之前由相应提供方写入的文件,并重写 INDEX.md。其他日期的文件夹、其他提供方的文件,以及你自行添加的任何文件(例如截图)都不会受影响。
  • 范围。 区域级 AWS 检查(EBS 默认加密、RDS、CloudTrail)使用 CLI 配置的区域(AWS_REGION 或配置文件中的区域)。GitHub 检查覆盖一个仓库和一个组织;Google Cloud 检查覆盖一个项目(--project 或 gcloud 默认项目)。S3 的逐存储桶检查最多处理 --max-buckets 指定数量的存储桶(默认为 50)。在 Windows 上,gcloud 是 .cmd 脚本,Node 无法在不使用 shell 的情况下启动它,因此 Google Cloud 收集器会在该平台上报告未收集。
它会收集什么
收集器标准命令
github-repo-settingsCC7.1gh api repos/{repo}:默认分支、密钥扫描和推送保护
github-branch-protectionCC8.1gh api repos/{repo}/branches/{default}/protection
github-branch-rulesCC8.1gh api --paginate repos/{repo}/rules/branches/{default}(规则集规则)
github-dependabot-alertsCC7.1gh api repos/{repo}/vulnerability-alerts
github-org-2faCC6.1gh api orgs/{org}:two_factor_requirement_enabled
github-org-adminsCC6.3gh api --paginate orgs/{org}/members?role=admin
aws-iam-account-summaryCC6.1aws iam get-account-summary:根用户 MFA、根用户访问密钥
aws-iam-credential-reportCC6.1、CC6.2aws iam generate-credential-report,然后运行 get-credential-report,解码后精简为 MFA、密码和访问密钥使用年限列
aws-iam-password-policyCC6.1aws iam get-account-password-policy
aws-cloudtrailCC7.2aws cloudtrail describe-trails,然后对每个跟踪运行 get-trail-status
aws-ebs-default-encryptionCC6.1aws ec2 get-ebs-encryption-by-default
aws-s3-bucketsCC6.1、CC6.6aws s3api list-buckets,然后对每个存储桶运行 get-bucket-encryption 和 get-public-access-block
aws-rds-instancesCC6.1、A1.2aws rds describe-db-instances:StorageEncrypted、BackupRetentionPeriod 及相关字段
gcp-project-iam-policyCC6.3gcloud projects get-iam-policy {project}
gcp-logging-sinksCC7.2gcloud logging sinks list
gcp-sql-instancesA1.2、CC6.1gcloud sql instances list(备份配置)
gcp-compute-disksCC6.1gcloud compute disks list(加密密钥)
gcp-organizationsCC6.1gcloud organizations list

所有 aws 命令都会添加 --output json,所有 gcloud 命令都会添加 --format=json。

它需要哪些权限

为运行它所使用的身份仅授予读取权限。

AWS。 此策略涵盖所有 AWS 收集器,除此之外不包含其他权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PolicyseedEvidenceReadOnly",
      "Effect": "Allow",
      "Action": [
        "iam:GetAccountSummary",
        "iam:GenerateCredentialReport",
        "iam:GetCredentialReport",
        "iam:GetAccountPasswordPolicy",
        "cloudtrail:DescribeTrails",
        "cloudtrail:GetTrailStatus",
        "ec2:GetEbsEncryptionByDefault",
        "s3:ListAllMyBuckets",
        "s3:GetEncryptionConfiguration",
        "s3:GetBucketPublicAccessBlock",
        "rds:DescribeDBInstances"
      ],
      "Resource": "*"
    }
  ]
}

Google Cloud。 在项目上授予 roles/viewer 可满足项目收集器的需求;在组织上授予 roles/resourcemanager.organizationViewer 可满足 organizations list 的需求。 如需更精细的访问权限,可在项目上授予 roles/iam.securityReviewer(IAM 策略)、roles/logging.viewer(接收器)、roles/cloudsql.viewer(SQL 实例)和 roles/compute.viewer(磁盘)。

GitHub。 gh 会使用当前登录的凭据(gh auth login 或 GH_TOKEN)。读取经典分支保护、security_and_analysis 区块和 Dependabot 警报设置需要存储库管理员读取权限;读取规则集规则只需读取权限。对于组织,GitHub 仅向组织所有者返回 two_factor_requirement_enabled,仅向组织成员列出私有成员。具有存储库 Administration: read 和 Metadata: read 权限以及组织 Members: read 权限的细粒度令牌即可满足其余需求。令牌无法读取的收集器会记录为未收集,而不会记录为通过。

如需按计划运行 GitHub 收集器并将结果保留为工作流工件,请参阅 docs/evidence.md。

它不会做什么

它会保存运行当天的配置。它不会判断配置是否符合你的策略,不会涵盖审计员会测试的所有控制,也不能取代审计员自己的测试:他们会自行选择样本,可能会要求你在他们观察时重新运行命令,并会测试这些控制在整个审计期间是否有效运行。

与托管生成器和 Audit Kit 的关系

此软件包使用的正是驱动托管生成器 policyseed.io 的渲染引擎,供希望在本地运行、将其编入 CI 脚本,或深入了解其工作原理的人使用;托管网站还提供付费版 Audit Kit,它会使用 Claude 根据你的具体技术栈定制 Policy Statements 和 Procedures 部分,并增加导出格式——此 CLI 不包含这一步定制。

本项目不是什么

这些是治理文档模板,不构成法律建议,也不保证合规。SOC 2 报告是由独立 CPA 事务所出具的意见,其依据是你是否确实执行了这些政策所述的控制措施——是否按计划进行访问权限审查、是否实际记录并分级处理事件、是否实际测试备份——而不仅仅是你是否拥有这些文档。在对外依赖这些内容之前,请让具备资质的人员(法律顾问、审计师或经验丰富的合规从业者)审查生成结果。

贡献

欢迎在 github.com/odedmoshe/policyseed 提交问题和拉取请求。如果要修改某项政策的措辞,建议直接编辑模板中的文本,并运行测试套件(node --test test/),确保渲染器一致性测试和 CLI 冒烟测试仍能通过。如果要添加新的输入字段,请一并更新 lib/context.js 中的 DEFAULT_INTAKE、toTemplateContext 和 validateIntake,因为这三者应保持同步。

许可证

Apache License 2.0 — 详见 LICENSE。版权归 policyseed 贡献者所有。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。