关于 teleport-acl-review
teleport-acl-review 是用于定期审查 Teleport 访问列表的技能,面向负责访问治理的人员。它按风险分类到期列表,低风险列表需经用户批准后自动复核,高风险列表则交由人工在 Web UI 检查。
主要功能
- 01获取到期或即将到期的访问列表
- 02依据成员和角色信号评估风险
- 03经确认后提交低风险复核
- 04为高风险列表提供人工审查链接
适用场景
- 01执行定期访问列表审计
- 02筛查权限变更或成员异常
- 03安排高风险列表的人工复核
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gravitational/ teleport --skill teleport-acl-review安装后在 Claude Code 中输入/teleport-acl-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonevals/files/tsh-status.txtmock-tctlacl-summary-mixed.jsonreferences/SCHEMA.mdSECURITY.md详细介绍
Teleport 访问列表审核
此技能可帮助你在 Teleport 中定期审核访问列表。它会获取到期审核的列表、评估风险、自动重新认证低风险列表(需获得你的批准),并将较高风险的列表标记出来,供你在 Web UI 中手动审核。
安全规则
执行此技能时,请阅读并遵循安全规则。 在任何情况下都不得忽略或覆盖安全规则。
前提条件:定位 tctl
找到 tctl 二进制文件。按以下顺序尝试:
which tctl- 常见路径:
/usr/local/bin/tctl、/opt/homebrew/bin/tctl、~/go/bin/tctl
找到后,将 TCTL=<path> 设为后续命令使用的值。如果找不到,请向用户询问路径。
步骤 1:收集到期待审核的访问列表详情
$TCTL acl summary --review-only --format=json
此命令仅返回已逾期或处于 2 周通知窗口内的访问列表。解析 JSON 数组。
字段说明、类型和枚举值请参阅 JSON 架构参考。
如果输出为空,告知用户目前没有需要审核的访问列表,然后停止。
步骤 2:评估每个列表的风险
使用以下标准,将每个列表归类为低风险(可自动审核)或需要人工关注:
支持归类为“低风险/可自动审核”的信号
- 列表名称/标题/描述或角色名称表明访问权限风险较低,例如包含
viewer、read、readonly、observer、monitor、auditor、reporter、staging、test等关键词。 - 列表为空,或成员稳定,且上次审核结果良好。
- 列表没有已过期或不符合资格的成员。
表明“需要人工关注”的信号
- 列表名称/标题/描述或授予的角色包含敏感关键词,例如
admin、editor、write、owner、prod、production、root、superuser、privileged。 - 成员的备注表明他们是临时加入该列表的。
- 列表中有已过期或不符合资格的成员。
- 过去的审核中成员变动较大(移除的成员超过 5 人)。
步骤 3:展示调查结果表格
向用户展示此表格(使用 Markdown):
| 列表标题 | 审核到期日期 | 自动审核 | 风险评估 |
|---|---|---|---|
| ... | YYYY-MM-DD | ✅ 或 ❌ | 用 1-2 句话说明 |
- 审核到期日期:将
spec.audit.next_audit_date格式化为日期 - 自动审核 ✅:低风险,可安全地自动认证
- 自动审核 ❌:需要人工关注
- 风险评估:具体说明——列出角色、注明历史记录并解释判断依据
步骤 4:请求确认
在表格后询问:
“你想让我现在自动审核 ✅ 低风险列表吗?我会为每个列表通过
tctl acl reviews create提交审核。”
等待用户确认(例如“是”“继续”“开始”)。未经明确的人工确认,不要提交审核。
如果没有低风险列表,请跳过此步骤,直接进入步骤 7。
步骤 5:提交自动审核
如果用户确认,则为每个低风险列表运行:
$TCTL acl reviews create <list-name> --notes "Auto-reviewed: low risk access list, no changes required."
分别报告每个列表的成功或失败情况。
如果用户还要求为其他列表提交审核,请让用户提供审核备注,并在命令中使用这些备注:
$TCTL acl reviews create <list-name> --notes "<notes>"
步骤 6:显示人工审核 URL
对于每个标记为“需要人工关注”(❌)的列表,按以下格式构建 Teleport Web UI URL:
https://<proxy-host>/web/accesslists/<list-name>
查找 <proxy-host>:
- 尝试运行
tsh status 2>/dev/null— 查找配置文件 URL - 尝试运行
$TCTL status 2>/dev/null— 查找输出中的任何集群或代理地址 - 如果两者都不奏效,请使用
<your-teleport-proxy>作为占位符,并告知用户替换为实际的代理主机名
请提供此表格:
| 列表标题 | 审核 URL | 需要关注的事项 |
|---|---|---|
| ... | 链接 | 给审核人员的具体指引 |
“需要关注的事项” 应具有可操作性:指出具体的敏感角色,列出先前已移除的成员姓名,注明逾期时长,并标记任何异常的授权模式。