You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需密钥及硬编码用户,实现GitHub Actions与AWS部署的无密码认证对接?

当然有!现在AWS和GitHub Actions原生支持通过**OpenID Connect (OIDC)**实现完全无密码的身份认证流程,彻底摆脱长期IAM凭证带来的密钥泄露风险和轮换麻烦。我来给你一步步拆解具体实现方式:

实现无密码部署的核心方案:AWS OIDC身份认证

这个方案的核心是让GitHub Actions通过OIDC协议向AWS请求短期有效的临时访问凭证,全程不需要存储任何长期密钥,所有凭证都会自动过期。

第一步:在AWS中配置GitHub OIDC身份提供商

  • 登录AWS控制台,进入IAM服务
  • 切换到「身份提供商」页面,点击「添加提供商」
  • 选择「OpenID Connect」作为提供商类型,输入GitHub的OIDC issuer URL:https://token.actions.githubusercontent.com
  • 点击「获取指纹」完成验证,然后在「受众」字段填写sts.amazonaws.com,最后点击「添加提供商」完成创建

第二步:创建用于部署的IAM角色并配置信任关系

  • 进入IAM的「角色」页面,点击「创建角色」

  • 选择「Web身份」作为可信实体类型,在「身份提供商」下拉框中选择刚才创建的GitHub OIDC提供商

  • 「受众」选择sts.amazonaws.com,点击「下一步」

  • 为角色附加部署所需的权限策略(比如S3同步、CloudFormation部署、ECS更新等,遵循最小权限原则,只给必要权限)

  • 给角色命名(比如GitHubActions-Deploy-Role),完成角色创建

    提示:你可以在角色的信任策略里进一步限制访问范围,比如只允许特定仓库、分支或工作流使用该角色。例如在信任策略的Condition中添加:

    "StringEquals": {
      "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
      "token.actions.githubusercontent.com:sub": "repo:your-username/your-repo:ref:refs/heads/main"
    }
    

    这样只有你的主分支的工作流才能Assume这个角色,安全性更高。

第三步:在GitHub Actions工作流中配置认证

打开仓库的.github/workflows目录下的部署yaml文件,添加以下配置:

jobs:
  aws-deploy:
    runs-on: ubuntu-latest
    # 必须设置id-token权限为write,才能获取OIDC令牌
    permissions:
      id-token: write
      contents: read
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4

      - name: 配置AWS临时凭证
        uses: aws-actions/configure-aws-credentials@v4
        with:
          # 替换成你的AWS账号ID和刚才创建的角色ARN
          role-to-assume: arn:aws:iam::123456789012:role/GitHubActions-Deploy-Role
          aws-region: us-east-1 # 替换成你的AWS区域

      - name: 执行部署操作
        run: |
          # 这里写你的实际部署命令,比如同步静态文件到S3
          aws s3 sync ./dist s3://your-deployment-bucket --delete
          # 或者部署CloudFormation栈
          aws cloudformation deploy --stack-name MyAppStack --template-file ./cloudformation/template.yaml

为什么这个方案更好?

  • 无长期密钥:完全不需要存储IAM用户的Access Key/Secret Key,从根源避免密钥泄露风险
  • 自动轮换凭证:临时凭证默认1小时过期,且每次运行工作流都会获取新的凭证,无需手动轮换
  • 细粒度权限控制:通过IAM角色的信任策略和权限策略,可以精准控制哪些仓库、分支甚至工作流能执行部署操作

内容的提问来源于stack exchange,提问作者AlBlue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:17:36