我应该将使用 Elastic Beanstalk 部署的 NodeJS 应用程序的 API 密钥存储在哪里?

Posted

技术标签:

【中文标题】我应该将使用 Elastic Beanstalk 部署的 NodeJS 应用程序的 API 密钥存储在哪里?【英文标题】:Where should I store API keys for my NodeJS app deployed with Elastic Beanstalk? 【发布时间】:2018-06-27 02:25:03 【问题描述】:

我使用 NodeJS 构建了一个应用程序,该应用程序使用多个第三方付费服务,可通过他们的 API 访问。

根据最佳实践,我没有将包含这些 API 密钥的文件提交到我的存储库。但是,我现在想使用 Elastic Beanstalk 进行部署,但我似乎无法在不提交密钥的情况下直接从我的存储库进行部署。

什么是部署具有必要密钥的应用程序而不会因为将应用程序提交到不安全的存储库而危及其安全性的正确/最佳方法?

【问题讨论】:

【参考方案1】:

许多第三方托管服务(如 AWS、Heroku、Openshift 等)允许您为应用程序设置环境变量。一般来说,将 API 密钥设置为环境变量是安全性方面的最佳做法,因为它可以避免将它们存储在本地或版本历史记录中。

至于如何设置,这将取决于服务。

编辑:亚马逊在这里提供了一个页面:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html

简短的回答是使用:

eb setenv key=value

【讨论】:

以上是关于我应该将使用 Elastic Beanstalk 部署的 NodeJS 应用程序的 API 密钥存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Elastic Beanstalk 进行部署时,是不是应该将静态文件存储在单独的 S3 中?

将 npm db-migrate 与 Elastic Beanstalk 一起使用

如何将 mongoDB Docker 映像部署到 Elastic Beanstalk?

我应该如何限制我的 Elastic Beanstalk 环境的负载平衡 Web 流量?

为 Elastic Beanstalk 环境配置 HTTPS

我可以将 Ruby 版本 2.1.2 与 Amazon Elastic Beanstalk 一起使用吗?