为什么秘密管理工具SecretHub在本地工作,但在heroku生产中不工作?

问题描述

我决定为Heroku托管的node.js服务器实施秘密管理服务(secrethub.io)。

其安装过程类似于:

npm install --save-dev @secrethub/cli
secrethub init

注册后即会提供凭据)

然后将主启动脚本调整为:

secrethub run -- nodemon server.js

现在,当我使用npm run start在本地运行应用程序时,一切都很好,服务器可以按预期运行,注入了机密,一切都很好。但是当我部署到Heroku时,该应用程序立即在启动脚本上崩溃:

server@1.0.0开始/ app 2020-09-28T22:42:08.353088 + 00:00 应用程序[web.1]:> secrethub运行-nodemon server.js 2020-09-28T22:42:08.353088 + 00:00 app [web.1]: 2020-09-28T22:42:08.469775 + 00:00 app [web.1]:遇到错误: 处理模板文件“ secrethub.env”时出错:找不到 凭证文件。转到https://signup.secrethub.io/创建一个 帐户或运行secrethub init以在上使用现有帐户 这台机器。 (secrethub.credential_not_exist) (run.template_parsing_Failed)2020-09-28T22:42:08.484159 + 00:00 app [web.1]:npm错误代码ELIFECYCLE 2020-09-28T22:42:08.484663 + 00:00 app [web.1]:npm错误! errno 1 2020-09-28T22:42:08.493367 + 00:00 app [web.1]:npm错误! aflare-stripe@1.0.0开始:secrethub run -- nodemon server.js 2020-09-28T22:42:08.493885 + 00:00 app [web.1]:npm 呃!退出状态1 2020-09-28T22:42:08.494399 + 00:00 app [web.1]:npm 呃! 2020-09-28T22:42:08.494840 + 00:00 app [web.1]:npm ERR!失败于 aflare-stripe@1.0.0启动脚本。 2020-09-28T22:42:08.495292 + 00:00 app [web.1]:npm错误! npm可能不是问题。有 可能上面有其他日志记录输出。 2020-09-28T22:42:08.515466 + 00:00 app [web.1]: 2020-09-28T22:42:08.516772 + 00:00 app [web.1]:npm ERR!完整的日志 您可以在2020-09-28T22:42:08.517179 + 00:00中找到此运行 app [web.1]:npm错误
/app/.npm/_logs/2020-09-28T22_42_08_498Z-debug.log

就像我说我已经注册了所有内容一样。有人知道部署到Heroku并使用秘密管理服务有什么问题吗?

解决方法

从日志的以下部分来看,SecretHub CLI似乎无权访问凭据:

找不到凭证文件。转到enter image description here创建一个帐户,或运行secrethub init以使用此计算机上已经存在的帐户。 (secrethub.credential_not_exist)

您可以通过为Heroku应用程序创建服务帐户来解决此问题。您可以按照https://signup.secrethub.io/进行操作。您可以在Heroku中将结果凭证配置为SECRETHUB_CREDENTIAL环境变量(有关方法,请参见this guide)。