17 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 文件,展示了如何使用秘密:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 密钥。通过这种方式,可以有效降低在环境间切换时带来的风险。

1
2
3
4
5
6
7
8
9
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 的其他功能和最佳实践。

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

https://zglg.work/github-actions-zero/17/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论