当前位置:  开发笔记 > 后端 > 正文

你如何保护database.yml?

如何解决《你如何保护database.yml?》经验,为你挑选了3个好方法。

在Ruby on Rails应用程序中,database.yml是一个存储数据库凭据的纯文本文件.

当我部署我的Rails应用程序时,我在Capistrano配方中有一个After deploy回调,它在应用程序的/ config目录中创建了一个到database.yml文件的符号链接.文件本身存储在标准Capistrano/releases目录结构之外的单独目录中.我chmod 400文件所以它只能由创建它的用户读取.

这足以将其锁定吗?如果没有,你还做什么?

有人在加密他们的database.yml文件吗?

Olly.. 39

我解决这个问题的方法是将数据库密码放在一个只有我运行应用程序的用户具有读权限的文件中.然后,在database.yml中我使用ERB来读取文件:

production:
  adapter: mysql
  database: my_db
  username: db_user
  password: <%= begin IO.read("/home/my_deploy_user/.db") rescue "" end %>

工作一种享受.



1> Olly..:

我解决这个问题的方法是将数据库密码放在一个只有我运行应用程序的用户具有读权限的文件中.然后,在database.yml中我使用ERB来读取文件:

production:
  adapter: mysql
  database: my_db
  username: db_user
  password: <%= begin IO.read("/home/my_deploy_user/.db") rescue "" end %>

工作一种享受.


如何改进直接在database.yml上为应用程序用户设置读取权限?
我采用这种方法是因为,a)密码不在database.yml中,因此不提交源控制,b)除了将密码只放在生产服务器上的文件中之外,没有其他工作要求 - 没有Capistrano任务,主结构之外没有文件等

2> James A. Ros..:

您还需要确保SSH系统安全可靠,以防止人们 Capistrano机器人身份登录.我建议限制访问受密码保护的密钥对.

加密服务器上的.yml文件是没用的,因为你必须给bot一个密钥,它将被存储...在同一台服务器上.在您的机器上加密它可能是一个好主意.Capistrano可以在发送之前对其进行解密.



3> slm..:

看看这个github解决方案:https://github.com/NUBIC/bcdatabase.bcdatabase提供加密存储,其中密码可以与yaml文件分开.

bcdatabase

bcdatabase是一个库和实用程序,它为Ruby on Rails应用程序提供数据库配置参数管理.它提供了一种简单的机制,用于将数据库配置属性与应用程序源代码分离,因此无需将密码检入版本控制系统.它集中了单个服务器的参数,因此可以在多个应用程序之间轻松共享,并由单个管理员轻松更新.


更新:bcdatabase现在位于https://github.com/NUBIC/bcdatabase.
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有