使用 GitHub 管理机密信息
深入了解如何使用 GitHub Secrets 和 OpenID Connect(OIDC)安全存储和访问敏感凭据
使用 GitHub 管理机密信息 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
为什么需要安全的机密信息管理
在任何软件项目中,您经常需要使用应用程序接口密钥、数据库凭据或访问令牌等敏感信息。将这些信息直接存储在代码或代码仓库中会带来重大安全风险。
机密信息管理是安全存储和管理这些敏感数据的实践。它确保只有经过授权的系统和用户才能访问这些数据,从而防止未经授权的泄露。
什么是 GitHub 机密信息
GitHub 提供了一种名为 GitHub 机密信息的安全敏感信息存储方式。这些信息是加密的环境变量,您可以在 GitHub 操作工作流中使用它们。
- 默认情况下,它们不会写入日志。
- 创建后,它们不会显示在用户界面中。
- 只有选定的工作流才能访问它们。
这样可以防止您的凭据意外泄露。
设置仓库机密信息
您可以在不同级别定义机密信息:仓库、环境或组织。最常见的做法是从仓库机密信息开始。
创建步骤如下:
- 转到代码仓库的设置选项卡。
- 导航到机密信息和变量 > 操作。
- 点击新建仓库机密信息。
为其指定一个唯一名称(例如 API_KEY),然后粘贴机密值。
在工作流中访问机密信息
定义机密信息后,您就可以在工作流 YAML 文件中使用它。GitHub 操作会自动将机密信息作为环境变量注入您的作业。
您可以使用 ${{ secrets.SECRET_NAME }} 上下文访问它们。此脚本模拟了一个会使用这类机密信息的步骤。要运行此脚本,请假设 GitHub 操作已将 MY_API_KEY 设置为环境变量。
#!/bin/bash
# This script simulates a workflow step
# where a secret is passed as an environment variable.
echo "Attempting to use an API key..."
# In a real GitHub Action, MY_API_KEY would be
# set by ${{ secrets.MY_API_KEY }} in the workflow YAML.
if [ -z "$MY_API_KEY" ]; then
echo "Error: MY_API_KEY is not set!"
echo "Please define it as a secret in your workflow."
else
echo "Successfully accessed API key (partially shown): ${MY_API_KEY:0:5}..."
fi更广泛的机密信息范围
除了仓库机密信息之外,GitHub 还提供两种更强大的范围:
- 组织机密信息:组织内的多个代码仓库都可以使用。适合在多个项目之间共享的机密信息(例如公司范围的部署令牌)。
- 环境机密信息:与特定部署环境相关联(例如
staging、production)。它们可以设置保护规则,例如要求在部署前获得手动批准。
为获得最大安全性,请始终使用完成任务所需的最小范围。
什么是 OpenID 连接(OIDC)
OpenID 连接(OIDC)是一种构建在 OAuth 2.0 之上的身份验证层。它是一项标准,允许客户端根据授权服务器执行的身份验证来验证最终用户的身份。
在持续集成/持续交付中,OIDC 允许您的工作流安全地向云服务提供商(如 AWS、Azure、GCP)进行身份验证,而不需要将应用程序接口密钥等长期有效凭据存储为 GitHub 机密信息。
OIDC 如何与 GitHub 操作配合工作
GitHub 操作可以充当 OIDC 提供方。工作流运行时,GitHub 会为该特定作业生成一个唯一且短期有效的 OIDC 令牌。
此令牌包含有关工作流的可验证声明,例如仓库、分支和作业 ID。随后,云服务提供商可以配置为信任 GitHub 签发的令牌,并根据这些声明授予临时访问权限。
OIDC 的主要优点
在 GitHub 操作中使用 OIDC 可以带来显著的安全优势:
- 无需长期有效凭据:您不必将静态云服务应用程序接口密钥存储在 GitHub 机密信息中。
- 降低风险:短期有效令牌可以将令牌遭到入侵时的影响降至最低。
- 细粒度访问:可以将云角色映射到特定的工作流条件(例如,仅允许从
main分支进行部署)。 - 审计:由于身份与工作流运行相关联,因此更容易追踪谁执行了什么操作。
将 OIDC 集成到云服务
要使用 OIDC,您需要将云服务提供商(例如 AWS IAM、Azure AD、GCP IAM)配置为信任 GitHub 的 OIDC 签发方。
这通常包括:
- 在您的云账户中设置身份提供方。
- 定义授予特定权限的角色/策略。
- 向该角色添加“信任策略”,允许 GitHub 的 OIDC 令牌使用该角色;通常还要根据令牌声明设置条件(例如,仅允许来自特定仓库的令牌)。
然后,工作流会请求令牌,并使用它进行身份验证。
快速检查:安全访问
您已经了解了用于存储敏感数据的 GitHub 机密信息,以及用于无凭据云身份验证的 OpenID 连接。
以下关于 GitHub 操作机密信息管理的说法哪些是 TRUE?
回顾:保护您的凭据
做得很好!您已经学会了如何安全地管理持续集成/持续交付流水线中的敏感数据。
- GitHub 机密信息为代码仓库、组织或特定环境中的应用程序接口密钥和令牌提供加密存储。
- OpenID 连接(OIDC)使用短期有效且可验证的令牌,而不是静态凭据,为向云服务提供商进行身份验证提供了更加安全的方式。
这些实践对于构建健壮且安全的 DevOps 流水线至关重要。
常见问题解答
「使用 GitHub 管理机密信息」课时是免费的吗?
是的 — 「使用 GitHub 管理机密信息」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「使用 GitHub 管理机密信息」这节课中我会学到什么?
深入了解如何使用 GitHub Secrets 和 OpenID Connect(OIDC)安全存储和访问敏感凭据 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「使用 GitHub 管理机密信息」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CI/CD 安全最佳实践
- 使用 GitHub 管理机密信息
- 静态应用安全测试(SAST)
- 依赖项与供应链安全(SCA)