2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
零密钥持续集成/持续部署:亚马逊云科技上的 GitHub Actions + 开放身份连接(第六部分)
你的 GitHub 机密中永远不需要存储 AWS_ACCESS_KEY_ID。以下是开放身份连接信任机制的工作原理,以及为何它明显更优。
我在个人作品集中看到的最常见的 GitHub Actions 设置是将 AWS_ACCESS_KEY_ID 和 AWS_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. 创建具有范围限定信任策略的身份和访问管理部署角色:
{<
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。