---

title: GitHub Actions OIDC无秘钥云角色部署实践

keywords:

  • OIDC
  • Federated Credentials
  • AWS AssumeRoleWithWebIdentity
  • 无秘钥
  • 最小权限

description: 使用GitHub Actions OIDC联邦凭证到云角色实现无秘钥部署,提供可验证的IAM策略与工作流配置,提升安全与可追溯性。

date: 2025-11-26

categories:

  • 应用软件
  • 编程开发

---

概述

  • 目标:通过OIDC在流水线运行时获取临时云凭证,避免长期密钥存储,提升安全性与可追溯。
  • 适用:AWS/GCP/Azure部署场景,替代静态密钥方式。

核心与实战

  • AWS IAM角色信任策略(允许GitHub OIDC):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {"Federated": "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"},
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
          "token.actions.githubusercontent.com:sub": "repo:org/repo:ref:refs/heads/main"
        }
      }
    }
  ]
}
  • GitHub Actions工作流(获取临时凭证并部署):
name: deploy
on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@v4
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/gha-deploy-role
          aws-region: us-east-1
      - run: aws sts get-caller-identity
      - run: aws s3 sync dist s3://my-bucket/app/

示例

  • 最小权限策略:
{
  "Version": "2012-10-17",
  "Statement": [{"Effect":"Allow","Action":["s3:PutObject","s3:ListBucket"],"Resource":["arn:aws:s3:::my-bucket","arn:aws:s3:::my-bucket/*"]}]
}
  • 分支与环境限制:
-- 在Condition中限定sub为目标分支/环境工作流,避免越权

验证与监控

  • 身份验证:
  • 运行工作流后aws sts get-caller-identity显示临时角色ARN;检查CloudTrail记录AssumeRole与S3操作。
  • 安全边界:
  • 验证OIDC Provider与信任策略匹配;最小权限策略仅允许必要操作。
  • 证据与审计:
  • 使用工作流运行ID与CloudTrail事件关联,实现端到端可追溯。

常见误区

  • 未开启id-token权限导致无法获取OIDC令牌;需在工作流permissions中配置。
  • 信任策略sub匹配过宽;应精确到repo与分支或环境。
  • 仍在仓库保存长期密钥;应移除并转为OIDC临时凭证。

结语

  • 通过GitHub OIDC联邦到云角色实现无秘钥部署,提升安全与合规,结合最小权限与审计实现可信交付。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部