node和github机密.如何在本地进行测试



我正在为一个简单的twitter api脚本使用node和github操作。

twitter凭据存储在githubsecrets 中

除了对twitter凭据进行硬编码,然后在推送到github之前更改代码以使用机密之外,我如何在本地进行测试?

如果在本地运行,我需要一些方法在本地检索凭据,如果在github上运行,则需要从机密中检索凭据。

请问最好的做法是什么?

本质上,David想说的是,您需要将凭据存储在两个不同的位置:

  1. GitHub内部操作秘密
  2. gitignored.env文件中的本地文件系统

GitHub操作秘密

GitHub Actions Secrets使用加密来存储机密值,并且只有在工作流运行时才会解密此信息。请注意,这些秘密并没有存储在代码库中。相反,这完全是通过GitHub web界面管理的,也许还有GitHub API。我想再次强调的是,这些都没有存储在git存储库中,因为这基本上被视为安全泄漏。

现在,当在GitHub Actions中运行时,这很好,但问题是如何在本地运行。这就是.env文件的作用所在。

使用.env和dotenv在本地运行

创建以下文件,并在.env文件中添加与GitHub Actions secret中的secret相同的值作为键/值对。假设机密名称为MY_secret_CRED,值为abcdefg:

.env:

MY_SECRET_CRED=abcdefg

接下来,将此文件添加到.gitignore。您不想提交此文件,因为它会违反您的安全性,而且您也不需要提交它,因为GitHub已将凭据存储为机密。您只需要此文件本地

.gitigner:

.env

将文件添加到gitignore的目的是因为您不想提交此文件。此文件仅在您的工作站本地。

接下来,安装dotenv npm模块:

$ npm i dotenv

在主文件中,请确保需要dotenv模块。该模块读取.env的内容,并将键值对加载为环境变量:

require('dotenv').config()

把它们绑在一起

在您的应用程序代码中,您可能已经在使用GitHub Actions中的secret作为某种环境变量。如果在GitHub Actions中运行,则可以将机密加载为与.env文件中使用的名称相同的环境变量:

- name: Test application
env:
MY_SECRET_CRED: ${{ secrets.MY_SECRET_CRED }}
run: npm run test

在上面的例子中,Node.js进程可以访问作为环境变量MY_secret_CRED 的机密

doSomethingWithSecret(process.env.MY_SECRET_CRED);

但请注意,如果你试图打印它,GitHub会屏蔽它,因为它知道这是一个不应该泄露的秘密。

在本地运行时,环境变量通过dotenv模块加载到Node.js进程中。

下行到.env文件

env文件的缺点是,秘密以纯文本形式存储在工作站中,很难与其他开发人员共享。理想情况下,我们不想通过聊天系统或电子邮件分享秘密,因为我们不想承诺和推送这些秘密。

一种解决方案是使用密钥管理器或密钥管理存储在本地加密密钥。然后,本地应用程序在运行应用程序时对它们进行解密。这也意味着您可以将加密的数据直接提交到GitHub存储库。谷歌KMS就是一个例子。

最新更新