如何通过GitHub API获取GitHub Actions明文密钥用于迁移至AWS Secrets Manager
获取GitHub组织Actions密钥明文值的方案
首先明确:GitHub的官方API不会直接返回密钥的明文值——这是出于安全设计,所有存储在GitHub的Secrets都是加密存储的,只有在GitHub Actions运行时才会解密注入,外部API无法直接获取明文。
要导出密钥明文,只能通过以下两种可行方式:
方式一:通过GitHub Actions工作流批量导出
这是最安全且合规的方法,适合70+密钥的迁移场景,步骤如下:
- 创建一个新的GitHub Actions工作流文件(比如
.github/workflows/export-secrets.yml) - 配置工作流手动触发,遍历所有组织密钥,直接将密钥值上传到AWS Secrets Manager(避免明文暴露)
- 示例工作流代码:
name: 导出组织密钥到AWS Secrets Manager on: workflow_dispatch: # 手动触发工作流 jobs: export-secrets: runs-on: ubuntu-latest permissions: actions: read secrets: read steps: - name: 安装AWS CLI并配置权限 env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_FOR_MIGRATION }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY_FOR_MIGRATION }} run: | # 获取所有组织密钥名称 SECRET_NAMES=$(gh api /orgs/${{ github.repository_owner }}/actions/secrets --jq '.secrets[].name') # 遍历每个密钥,上传到AWS Secrets Manager for NAME in $SECRET_NAMES; do SECRET_VALUE=${{ secrets[NAME] }} aws secretsmanager create-secret --name "github-org-secrets/$NAME" --secret-string "$SECRET_VALUE" done shell: bash
注意:需要提前在组织Secrets中配置用于迁移的AWS访问密钥,工作流会自动使用内置权限调用GitHub API和AWS接口。
方式二:手动逐个导出(不推荐)
如果不想用工作流,只能手动进入每个密钥的编辑页面,重新输入并记录明文值——但这种方式效率极低,且容易出错,不适合批量迁移场景。
关键提醒
- 绝对不要使用第三方工具或非官方API尝试获取密钥明文,存在数据泄露风险
- 迁移完成后,记得删除GitHub组织中不再需要的Secrets,以及工作流中配置的AWS临时访问密钥
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

