SuperAPI AI 工具集

tailnet-policy

安全与审计

查看项目

更新于 10-16 06:25

技能介绍

用途:为 Headscale 尾网编写、测试和部署 Tailscale 兼容的 huJSON 策略文件(标准 JSON 加尾随逗号与 // 注释),控制 ACL、Grants、Tags、TagOwners、AutoApprovers 和 Tailscale SSH 规则。

主要能力:支持旧版 ACL({action, users, ports})与现代 Grants({src, dst, ip, proto, via});Grants 支持端口、协议(tcp/udp/icmp)与 via 路由过滤,官方建议优先使用 Grants,可用 migrate-acls-to-grants.py 自动迁移旧 ACL。支持标签(tag:dev、tag:prod)与 TagOwners、子网路由和出口节点自动批准(autoApprovers.routes、exitNode)、Tailscale SSH(ssh 段的 action/src/dst/users,action 为 accept 或 check),以及 autogroup:member、autogroup:admin、autogroup:tagged、autogroup:internet 等动态组。

使用方式:在 Headscale 的 config.yaml 中通过 policy.path 指定策略文件路径(如 /etc/headscale/policy.hujson)。修改后重载:kill -HUP $(pgrep headscale),或运行 ./skills/tailnet-policy/reload-headscale-policy.sh。校验测试:./skills/tailnet-policy/validate-policy.py --policy policy.hujson。策略内可写 tests 定义预期结果(accept/drop)。

适用场景:默认开放、默认关闭、按环境分段(dev/prod)等访问控制,以及基于标签的节点级策略。

限制:Headscale 不支持设备姿态(devicePosture、device:managed)、IP 集(ipSets、ipprotocol)和 ACL 中的 OIDC 组;标签名须以 tag: 开头且仅含小写字母、数字和连字符;SIGHUP 重载失败不返回错误,重载前应先校验;ACL 的 users 与 Grant 的 src 不可互换;tests 仅在解析时校验,不保证运行时行为。本技能仅覆盖 huJSON 策略编写与测试,不涉及 Headscale 服务部署或客户端连接问题。