---

title: GitHub Actions动作版本治理(uses@sha-pin-权限)最佳实践

keywords:

  • GitHub Actions
  • uses@sha
  • pin版本
  • 最小权限
  • 审计

description: 通过 uses@<sha> 固定动作版本与权限最小化策略,阻断漂移与投毒风险,并记录审计信息以提升流水线安全。

categories:

  • 文章资讯
  • 技术教程

---

核心要点

  • 动作必须使用不可变 @<sha> 固定;禁止 @vX@main
  • 最小权限与受控密钥;工作流仅启用必要的 permissions

实现示例

type Step = { uses?: string; with?: Record<string, string>; permissions?: Record<string, 'read' | 'write'> }

function pinned(uses?: string): boolean {
  if (!uses) return false
  const m = /@[a-f0-9]{40}$/i.exec(uses)
  return !!m
}

function validPerms(perms?: Record<string, 'read' | 'write'>): boolean {
  if (!perms) return true
  const deny = ['admin']
  for (const k of Object.keys(perms)) if (deny.includes(k)) return false
  return true
}

function evaluate(steps: Step[]): { ok: boolean; errors: string[] } {
  const errors: string[] = []
  for (const s of steps) {
    if (s.uses && !pinned(s.uses)) errors.push(`unpin:${s.uses}`)
    if (!validPerms(s.permissions)) errors.push('permissions')
  }
  return { ok: errors.length === 0, errors }
}

审计与CI门禁

  • 构建前校验所有 uses 是否 @<sha> 固定;不合规阻断。
  • 审计记录包含动作名称、固定版本与权限摘要,支持回溯。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部