当前位置:首页 > 编程语言 > 正文内容

掩盖你的踪迹: 如何隐藏GitHub操作日志中的内容

a811625533年前 (2023-04-27)编程语言22

github Actions是gitHub内置的持续集成和持续交付()平台,使开发团队能够实现工作流程的自动化,包括构建、测试和部署管道。

使用GitHub Actions的一个缺点是,你的日志是公开的,任何人都可以通过必要的权限访问它们。

为了防止敏感数据暴露在的日志中,你应该使用加密的环境变量来安全存储敏感数据。这些加密的环境变量被称为GitHub Actions Secrets。

本文告诉你如何使用GitHub Actions Secrets来防止敏感信息出现在GitHub Actions日志中。

先决条件

要学习本教程:

  • 确保你有一个。
  • 拥有一个现有的GitHub仓库。对于本教程,你可以克隆这个演示仓库。
  • 按照这些说明。

如何保持GitHub操作日志的安全性

当你使用GitHub Actions构建工作流程时,任何访问你仓库的人都可以查看日志,所以它们不应该包括敏感信息。然而,你不能就这样删除你的令牌、密码和其他敏感信息–你需要它们来进行测试和让你的应用程序正常运行。

解决方案是用 ::add-mask:: 工作流命令来隐藏它们,该命令将星号(*)放在它所应用的敏感数据的位置上。

下面的部分向你展示了如何屏蔽日志。

如何屏蔽日志

首先,在你的文本编辑器中打开克隆的版本库。

在版本库的根部创建.github/workflows/目录,以存储你的工作流文件。然后,在.github/workflows目录中创建一个名为hide-secrets.yml的新文件,并在其中添加以下代码:

name: Hide Sensitive Information
on: push
jobs:
print-secret-token:
runs-on: ubuntu-latest
steps:
- name: echo a secret
run: echo "your secret token is verySecretToken"

提交修改并推送到你的GitHub仓库。更新后的GitHub操作工作流程是激活的,每当你推送一个新的改动时,就会触发。

在GitHub上打开你的仓库,选择Actions标签来查看日志。你的工作流程应该显示如下:

预览你的工作流程

检查工作流程的日志,你会发现打印在日志上的 verySecretToken 字符串。点击你的工作流程,然后点击任务名称(print-secret-token)来查看日志。它应该看起来像这样:

检查你的GitHub动作日志

要隐藏它,使用 ::add-mask:: 命令,编辑hide-secrets.yml文件,并在 print-secret-token 工作中添加一个新步骤:

name: Hide Sensitive Information
on: push
jobs:
print-secret-token:
runs-on: ubuntu-latest
steps:
- name: Add Mask
run: echo "::add-mask::verySecretToken"
- name: echo a secret  
run: echo "your secret token is verySecretToken"

你应该在顶部添加 Add Mask 的步骤,因为掩码只在 ::add-mask:: 运行后适用。如果你把Secret的 verySecretToken 放在 Add Mask 步骤之前,它仍然会出现未被掩码。因此,为了确保该值被屏蔽,必须尽快使用 ::add-mask::

一旦你提交并发布你的修改到你的GitHub仓库,字符串 verySecretToken 将被星号(*)取代,无论它出现在你的日志中:

*** 普通文本

虽然这解决了屏蔽的问题,但却引入了一个新的问题。你的 verySecretToken 仍然在工作流文件中,所以任何能够访问源代码的人都可以看到它。

屏蔽纯文本的另一个缺点是,只屏蔽一个词的一部分会隐藏它的所有实例。例如,以下面的句子为例: “Programming is great, but my most productive days are those when I do not write a program”。如果你屏蔽了 “program” 这个词,它不仅会屏蔽句子末尾的这个词,还会屏蔽它出现的任何地方,比如 “programming” 中。

如果你试图屏蔽纯文本,你会得到这样的结果:

屏蔽纯文本的问题

在GitHub动作日志中隐藏敏感数据的更好 *** 是使用GitHub Actions Secrets,如下节所示。

如何使用GitHub Actions Secrets

你可以使用GitHub Actions Secrets来存储任何你想在GitHub操作工作流程中使用的私人数据。Secret是在仓库或组织层面以键/值对的形式创建的。

仓库只能访问在仓库级别创建的Secret,而在组织级别创建的Secret则由组织内的所有仓库共享。

在存储库级别创建的Secret可供任何有合作者角色权限的人在操作中使用。你可以在任何时候改变你的Secret的值。然而,Secret不能被用于分支版本库的工作流。

以下准则适用于命名Secret:

  • Secret名称不能包含空格。
  • Secret名称不区分大小写。
  • Secret名称不能以数字开头。
  • Secret名称不能以前缀 GITHUB_ 开头。
  • Secret名称必须是唯一的 – 具有相同名称的秘密不能存在于同一级别。

你可以在GitHub操作的工作流程中使用这些Secret,只需在Secret名称前添加 secrets 作为YML变量,如下所示:

${{ secrets.MY_SECRET_TOKEN }}

你也可以掩盖Secret,以获得更多的安全性,如下所示。

如何屏蔽secret

首先,创建一个GitHub secret。在你的 GitHub 仓库中,点击设置标签,从左边的侧边栏中选择Secrets Actions,然后点击New repository secret来添加一个新的secret:

创建一个新的版本库secret

给你的secret一个名字和一个secret值,然后点击Add secret

添加一个新的GitHub Secret

现在你已经创建了你的secret,并给了它 verySecretToken 值,你可以在你的工作流文件中使用它。打开你的 hide-secrets.yml 文件,做如下修改:

name: Hide Sensitive Information
on: push
jobs:
print-secret-token:
runs-on: ubuntu-latest
steps:
- name: Add Mask
run: echo "::add-mask::${{ secrets.MY_SECRET_TOKEN }}"
- name: Echo a secret  
run: echo "your secret token is ${{ secrets.MY_SECRET_TOKEN }}"

这与之前的代码唯一的区别是,你用新创建的GitHub secret ” ${{secrets.MY_SECRET_TOKEN }} ” 替换了Secret令牌。

一旦你提交了代码并将修改推送到你的GitHub仓库,你的Secret就被屏蔽了:

屏蔽的GitHub操作私钥

小结

你不能在你的GitHub操作日志中泄露任何敏感信息。纯文本屏蔽是隐藏数据的一种方式,但任何访问工作流文件的人都可以看到你试图隐藏的信息。

正如本教程所展示的,GitHub Actions Secret是一种更安全的 *** ,可以保护你的敏感数据,然后将其屏蔽。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/7999.html

分享给朋友:

“掩盖你的踪迹: 如何隐藏GitHub操作日志中的内容” 的相关文章

什么是JavaScript?网络上最流行的脚本语言一瞥

什么是JavaScript?网络上最流行的脚本语言一瞥

谁在尝试访问某些网站时没有遇到过更新Java的请求? 虽然许多人通过交互式网站功能熟悉Java,但用户可能不太熟悉JavaScript——或者,实际上,他们可能错误地认为两者是相同的。 在本文中,我们将讨论JavaScript 是什么以及Java和JavaScript之间的区别。然后我们将概...

2022年PHP开发人员的平均工资统计报告

2022年PHP开发人员的平均工资统计报告

PHP开发:有些人认为它是,另一些人认为它是一种过时的技术,不值得花时间学习。但是这些数字说明了什么,尤其是当您查看PHP开发人员的薪水时? 虽然肯定有许多更新、更炫、更令人兴奋的语言,但PHP仍然是后端Web开发的可靠主食,也是许多雇主仍在寻找的技能。 有兴趣自己成为PHP开发人员吗?我们...

如何成为一名出色的Java开发人员

如何成为一名出色的Java开发人员

美国劳工统计局估计在美有超过软件开发人员。根据2021年的数据,其中,这是世界上使用最广泛的五种编程语言之一。 自然,学习Java并成为Java开发人员对于任何对软件开发感兴趣的人来说都是明智的职业选择。 在本综合指南中,您将学习成为Java开发人员所需的一切知识。我们将分解您需要的技能、工...

Serverless PHP简介:主要功能、用例以及如何在Lambda上开始使用Bref

Serverless PHP简介:主要功能、用例以及如何在Lambda上开始使用Bref

无服务器计算是一种基于云的执行模型,可以将应用程序作为服务托管,而无需维护服务器。 服务提供商维护服务器上的资源分配,并根据实际使用情况向用户收费。焦点转移到一个人正在创建的核心应用程序上,基础设施完全由服务提供商处理。无服务器计算也称为功能即服务 (FaaS)。 换句话说,Serverle...

揭开Laravel面纱:用于构建Web应用程序的跨平台PHP框架

揭开Laravel面纱:用于构建Web应用程序的跨平台PHP框架

近年来,Web应用程序和网站的开发变得越来越简单。即使是我们当中最受技术挑战的人也已经相当熟练地使用WordPress和Wix等产品。 对于更高级的开发人员,有许多工具可以帮助简化开发过程。这些工具中最有用的工具之一是Laravel。 本文回答了“什么是Laravel?”这个问题。通过将其分...

PHP 8.2年内将发布,一起来看看都有什么新特征

PHP 8.2年内将发布,一起来看看都有什么新特征

PHP 8.2预计将于今年11月发布,最新的稳定版本是PHP 8.1.5。虽然现在还为时过早,但对更新的接受程度参差不齐。 但是,知道会发生什么可以帮助您。通过了解新功能和不推荐使用的功能,您可以了解更新可能如何影响开发。这些知识还可以帮助您为最终发布做好准备。 在这篇文章中,我们将回顾最新...