管理加密的机密

已完成

机密是加密的环境变量,你可以创建它来存储 GitHub Actions 工作流和操作可能依赖的令牌、凭据或任何其他类型的敏感信息。 创建后,它们就可以在可访问组织、存储库或所处的存储库环境的工作流和操作中使用。

在本部分中,你将探索 GitHub Enterprise Cloud 和 GitHub Enterprise Server 中提供的不同工具和策略,以便管理加密的机密的使用。 我们还将介绍如何访问工作流和操作中的加密的机密。

在组织级别管理加密的机密

在组织级别创建加密的机密来存储敏感信息可以很好地确保此信息的安全性,同时最大限度地减少企业的管理开销。

假设在 GitHub 组织中编写工作流的某些开发人员需要凭据才能将代码部署到某些工作流的生产环境中。 为了避免共享此敏感信息,你可以在组织级别创建一个包含凭据的加密机密。 这样,在工作流中使用凭据时,就不会公开凭据。

若要在组织级别创建机密,请转到你的组织“设置”,然后在边栏中选择“机密和变量”>“操作”>“新建组织机密”。 在出现的屏幕中,输入名称和值,然后为机密选择存储库访问策略:

针对组织的新机密屏幕。

访问策略在保存后就会显示在机密列表中的机密下面:

加密的机密示例,其中显示了访问策略。

选择“更新”可以详细了解为机密配置的权限。

在存储库级别管理加密的机密

如果需要将加密的机密的范围限定到特定存储库,则 GitHub Enterprise Cloud 和 GitHub Enterprise Server 还允许在存储库级别创建机密。

若要在存储库级别创建机密,请转到你的存储库“设置”,然后在边栏中选择“机密和变量”>“操作”>“新建存储库机密”。 在出现的屏幕中,输入机密的名称和值:

针对存储库的新机密屏幕。

在操作和工作流中访问加密机密

在工作流中

若要在工作流中访问加密机密,必须在工作流文件中使用 secrets 上下文。 例如:

steps:
  - name: Hello world action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
    env: # Or as an environment variable
      super_secret: ${{ secrets.SuperSecret }}

在操作中

若要在操作中访问加密的机密,必须将机密指定为 action.yml 元数据文件中的 input 参数。 例如:

inputs:
  super_secret:
    description: 'My secret token'
    required: true

如果需要在操作代码中访问加密的机密,操作代码可以使用 $SUPER_SECRET 环境变量读取输入值。

警告

在创作你自己的操作时,请确保不要在操作的源代码中包含任何加密的机密,因为操作是可共享的工作单元。 如果你的操作需要使用加密的机密或其他用户提供的输入,最好使用操作工具包中的核心模块。