该技能聚焦于在 GitHub Agentic Workflows 中安全管理认证与凭据,给出可复用的安全模式与代码示例,目标是支撑生产级自主智能体系统。
用途
- 为 GitHub Actions 中的智能体工作流设计认证架构:从凭据来源(GitHub Secrets、Vault、AWS Secrets Manager)经环境变量进入凭据管理器,再按令牌类型分发到 GitHub API、扩展权限、安装令牌或外部服务 API 密钥,并覆盖 GitHub MCP、自建 MCP 与第三方 MCP 的认证。
- 明确安全原则:最小权限、纵深防御、令牌轮换、审计日志、加密存储、尽可能使用短期令牌。
主要能力
- GitHub 令牌类型
- GITHUB_TOKEN:每次工作流运行自动创建、随运行结束过期、作用域限于仓库、权限可配置;示例用 permissions 配置 contents: read、pull-requests: write 等。资料列出其限制:不能触发其他工作流、不能访问其他仓库、不能推送到受保护分支(除非配置)、运行结束即过期、受仓库权限限制;需要触发工作流、跨仓库操作、推送受保护分支或长时间运行的智能体时建议改用 PAT。
- Personal Access Token:给出经典 PAT 推荐作用域(repo、workflow、write:packages、read:packages、admin:org/read:org、admin:repo_hook),建议 90 天过期;更推荐细粒度 PAT,列出仓库权限(Actions、Contents、Issues、Metadata 只读、Pull requests、Workflows 读写),组织权限 Members 只读,仓库访问仅选择必要仓库,过期 90 天;示例将 PAT 存为仓库密钥 COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN 并在 checkout 与创建 PR 时使用。
- GitHub App 令牌:介绍创建 App、生成私钥、安装到仓库、存储 APP_ID、PRIVATE_KEY、INSTALLATION_ID 的流程;提供基于 @octokit/auth-app 的 GitHubAppAuth 类,包含 createOctokit、getInstallationToken(返回 token、expiresAt、permissions)与 revokeToken;工作流中用 actions/create-github-app-token@v1 生成令牌,令牌约 1 小时后过期并自动失效。
- 凭据存储
- GitHub Secrets:仓库密钥可用 GitHub UI 或 gh secret set/list/delete 管理;环境密钥支持按 development/production 区分,并配置 required_reviewers、wait_timer 等保护规则;组织密钥可限定仓库列表共享。
- 外部密钥管理:AWS Secrets Manager 通过 OIDC(id-token: write)配置 AWS 凭据并读取 SecretString,用 ::add-mask:: 掩码敏感值;HashiCorp Vault 通过 hashicorp/vault-action@v2 以 approle 方式读取密钥。
- 安全处理:提供 CredentialManager 类示例,支持带 TTL 的缓存、按 aws:/env: 前缀获取密钥、轮换密钥并失效缓存、日志中掩码敏感值(保留首尾 4 位)。
使用方式
- 在 .github/workflows 的 YAML 中声明 permissions、environment 与 secrets 引用;按场景选择 GITHUB_TOKEN、PAT 或 GitHub App 令牌;通过 actions/checkout、actions/github-script、peter-evans/create-pull-request 等步骤把令牌注入智能体脚本。
- 将长期密钥存入 GitHub Secrets 或外部密钥管理器,运行时读取;对跨仓库、触发工作流等场景使用 PAT 或 App 令牌。
适用场景
- 智能体自动审查 PR、处理 issue、跨仓库操作、需要推送受保护分支或触发其他工作流、调用外部 API 与 MCP 服务器。
限制与注意事项
- 资料中的令牌过期时间、权限清单为建议配置,实际以 GitHub 与各服务当前文档为准;代码示例需按自身仓库与密钥名称调整;MCP 认证与 API 密钥管理的完整细节在提供的资料中未完整展开,部分内容暂未提供。