Jupyter AI

17 GitHub Actions中的环境变量与秘密之管理秘密

📅 发表日期: 2024年8月15日

分类: ⚙️GitHub Actions 入门

👁️阅读: --

在上一篇文章中,我们探讨了如何在 GitHub Actions 中使用环境变量来提高工作流程的灵活性和可维护性。这一篇将重点关注如何有效管理和保护秘密,确保它们的安全,并合理地使用它们。

什么是秘密?

在 GitHub Actions 中,秘密(secrets)用于存储敏感信息,如 API 密钥、数据库密码或任何其他不应公开的信息。这些秘密在工作流程运行时可以作为环境变量使用,但它们不会出现在构建日志中,因此可以有效防止敏感信息泄露。

如何管理秘密?

1. 添加秘密

在你的 GitHub 仓库中添加秘密非常简单:

  1. 进入你的仓库,点击 Settings(设置)。
  2. 找到 Secrets部分,选择 Actions
  3. 点击 New repository secret(新建仓库秘密)。
  4. 输入一个名称,这将是你在工作流程中引用的标识符,例如 API_KEY
  5. 输入秘密的值并保存。

2. 在工作流程中使用秘密

一旦你添加了秘密,就可以通过 secrets 关键字在工作流程中使用它们。以下是一个示例 workflow.yml 文件,展示了如何使用秘密:

name: CI

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

      - name: Deploy
        env:
          API_KEY: ${{ secrets.API_KEY }}
        run: |
          echo "Deploying with API key..."
          curl -H "Authorization: Bearer $API_KEY" https://api.example.com/deploy

在这个示例中,API_KEY 被从 GitHub Secrets 中提取,并传递给了 curl 命令。通过这种方式,API_KEY 的值不会出现在构建日志中,确保了它的安全性。

密码的安全性管理

1. 只授予必要的权限

在添加秘密时,除了存储敏感信息之外,确保这些信息只被需要的工作流程访问。避免将秘密暴露给所有成员或所有工作流程,以降低潜在风险。

2. 定期更新秘密

为了保持代码库的安全性,建议定期更新秘密的值。例如,API 密钥的使用期限可能不应过长。你可以设置提醒,定期检查并更新秘密内容。

3. 使用环境特定的秘密

对于不同的环境(如开发、测试、生产),建议使用不同的秘密。例如,可以在生产环境中使用不同的数据库密码和 API 密钥。通过这种方式,可以有效降低在环境间切换时带来的风险。

jobs:
  deploy_to_production:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to production
        env:
          PROD_API_KEY: ${{ secrets.PROD_API_KEY }}
        run: |
          curl -H "Authorization: Bearer $PROD_API_KEY" https://api.example.com/deploy

在上面的示例中,我们在生产工作流中使用了专门为生产环境配置的 PROD_API_KEY 秘密。

小结

在本篇中,我们深入探讨了如何管理和使用秘密,以提高 GitHub Actions 工作流程的安全性。通过合理管理秘密,确保只有授权人员和工作流程可以访问敏感信息,可以大大降低潜在的安全风险。在下一篇文章中,我们将讨论环境变量与秘密的安全性最佳实践,进一步增强开发流程中的安全性。

请密切关注我们的系列教程,以便更深入了解 GitHub Actions 的其他功能和最佳实践。

⚙️GitHub Actions 入门 (滚动鼠标查看)