gpt4 book ai didi

ruby-on-rails - 公共(public)铁路应用程序中的敏感数据存储在哪里?

转载 作者:行者123 更新时间:2023-12-03 07:27:06 25 4
gpt4 key购买 nike

我的个人 Rails 项目使用了一些 API,我将这些 API key / secret 存储在 config/environments/products.yml 和development.yml 中作为全局变量。我现在想把这个项目推到github上供其他人使用,但我不希望他们拥有那些敏感数据。我也不希望此文件位于 .gitignore 中,因为应用程序运行需要它。我考虑过将它们放在数据库的某个地方,但我希望找到更好的解决方案。

最佳答案

TLDR:使用环境变量!

我认为@Bryce's comment提供了一个答案,我将把它冲掉。这似乎是一种方法Heroku recommends就是使用环境变量来存储敏感信息(API key 字符串、数据库密码)。因此,请调查您的代码并查看其中包含敏感数据。然后创建存储敏感数据值的环境变量(例如在 .bashrc 文件中)。例如您的数据库:

export MYAPP_DEV_DB_DATABASE=myapp_dev
export MYAPP_DEV_DB_USER=username
export MYAPP_DEV_DB_PW=secret

现在,在您的本地框中,只要需要敏感数据,您只需引用环境变量即可。例如在database.yml中:

development:
adapter: mysql2
encoding: utf8
reconnect: false
database: <%= ENV["MYAPP_DEV_DB_DATABASE"] %>
pool: 5
username: <%= ENV["MYAPP_DEV_DB_USER"] %>
password: <%= ENV["MYAPP_DEV_DB_PW"] %>
socket: /var/run/mysqld/mysqld.sock

我认为database.yml仅在应用程序初始化或重新启动时进行解析,因此这不会影响性能。因此,这将为您的本地开发和公开存储库解决这个问题。剥离敏感数据后,您现在可以像私下一样为公众使用相同的存储库。如果您使用的是 VPS,它也可以解决该问题。只需通过 ssh 连接到它并在生产主机上设置环境变量,就像在开发框中所做的那样。

同时,如果您的生产设置涉及到无法通过 ssh 连接到生产服务器的手动部署(如 Heroku 的情况),则您需要了解如何远程设置环境变量。对于 Heroku,这是通过 heroku config:add 完成的。因此,根据同一篇文章,如果您将 S3 集成到您的应用程序中,并且敏感数据来自环境变量:

AWS::S3::Base.establish_connection!(
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
)

只需让 Heroku 为其创建环境变量即可:

heroku config:add S3_KEY=8N022N81 S3_SECRET=9s83159d3+583493190

该解决方案的另一个优点是它是语言中立的,而不仅仅是 Rails。适用于任何应用程序,因为它们都可以获取环境变量。

关于ruby-on-rails - 公共(public)铁路应用程序中的敏感数据存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com