零秘密持续集成/持续部署:在亚马逊云科技上使用 GitHub Actions 与开放身份连接(第六部分)

发布日期:2026-05-21 10:35:46   浏览量 :1
发布日期:2026-05-21 10:35:46  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

零密钥持续集成/持续部署:亚马逊云科技上的 GitHub Actions + 开放身份连接(第六部分)

你的 GitHub 机密中永远不需要存储 AWS_ACCESS_KEY_ID。以下是开放身份连接信任机制的工作原理,以及为何它明显更优。

我在个人作品集中看到的最常见的 GitHub Actions 设置是将 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 存储为仓库机密。这些是绑定到身份和访问管理用户的长期凭证。一旦你的 GitHub 账户遭到入侵——无论是 OAuth 令牌泄露、第三方 Action 被攻破,还是机密意外记录在工作流输出中——攻击者将获得对亚马逊云科技的永久访问权限,直到有人发现并轮换密钥为止。

开放身份连接联合完全消除了存储凭证的需求。GitHub Actions 使用短期签名令牌来代入身份和访问管理角色。当作业结束时,会话即过期。由于根本不存在密钥,因此无需进行密钥轮换。

本文介绍了信任关系的工作方式、持续集成和部署工作流的构建结构,以及如何将前端部署到内容分发网络并设置正确的缓存头。

GitHub Actions 开放身份连接的工作原理

GitHub 作为开放身份连接身份提供商运行。当工作流作业以 id-token: write 权限运行时,GitHub 可以生成一个签名的 JSON Web 令牌,以声明正在运行的作业的身份:

{
  "sub": "repo:joshblair/sift:ref:refs/heads/main",
  "aud": "sts.amazonaws.com",
  "iss": "https://token.actions.githubusercontent.com",
  "repository": "joshblair/sift",
  "ref": "refs/heads/main"
}

亚马逊云科技安全令牌服务通过 AssumeRoleWithWebIdentity 接受此 JSON Web 令牌,并发出一个短期角色会话——这些凭证会在作业结束时过期,通常在一小时内。只有当亚马逊云科技被告知信任 GitHub 的开放身份连接提供商,并且角色的信任策略允许发出请求的特定仓库时,这种交换才能生效。

建立信任(每个账户仅需一次)

scripts/bootstrap.sh 脚本运行一次即可完成此配置。它执行以下三个操作:

1. 在身份和访问管理中创建 GitHub 开放身份连接提供商:

aws iam create-open-id-connect-provider \
  --url "https://token.actions.githubusercontent.com" \
  --client-id-list "sts.amazonaws.com" \
  --thumbprint-list "6938fd4d98bab03faadb97b34396831e3780aea1"

这告诉亚马逊云科技信任由 GitHub 开放身份连接端点签名的 JSON Web 令牌。这是针对亚马逊云科技账户的一次性设置,而非针对每个仓库。

2. 创建具有范围限定信任策略的身份和访问管理部署角色:

{<

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部