0Pricing
DevOps Bootcamp · 课时

使用 GitHub 管理机密信息

深入了解如何使用 GitHub Secrets 和 OpenID Connect(OIDC)安全存储和访问敏感凭据

使用 GitHub 管理机密信息 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

为什么需要安全的机密信息管理

在任何软件项目中,您经常需要使用应用程序接口密钥、数据库凭据或访问令牌等敏感信息。将这些信息直接存储在代码或代码仓库中会带来重大安全风险。

机密信息管理是安全存储和管理这些敏感数据的实践。它确保只有经过授权的系统和用户才能访问这些数据,从而防止未经授权的泄露。

什么是 GitHub 机密信息

GitHub 提供了一种名为 GitHub 机密信息的安全敏感信息存储方式。这些信息是加密的环境变量,您可以在 GitHub 操作工作流中使用它们。

  • 默认情况下,它们不会写入日志。
  • 创建后,它们不会显示在用户界面中。
  • 只有选定的工作流才能访问它们。

这样可以防止您的凭据意外泄露。

设置仓库机密信息

您可以在不同级别定义机密信息:仓库、环境或组织。最常见的做法是从仓库机密信息开始。

创建步骤如下:

  1. 转到代码仓库的设置选项卡。
  2. 导航到机密信息和变量 > 操作。
  3. 点击新建仓库机密信息。

为其指定一个唯一名称(例如 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 签发方。

这通常包括:

  1. 在您的云账户中设置身份提供方。
  2. 定义授予特定权限的角色/策略。
  3. 向该角色添加“信任策略”,允许 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. CI/CD 安全最佳实践
  2. 使用 GitHub 管理机密信息
  3. 静态应用安全测试(SAST)
  4. 依赖项与供应链安全(SCA)
← 返回 DevOps Bootcamp