fl0*_*00r 12 ruby ruby-on-rails mongodb mongoid
我正在部署我的第一个小应用程序MongoDB并Mongoid作为驱动程序.
在生产中使用MongoDB的正确安全方法是什么?
我的意思是在我刚开始的开发mongod中就是这样 - 不需要用户名或密码,看起来不安全.
Mongoid也设置默认配置
production:
host: <%= ENV['MONGOID_HOST'] %>
port: <%= ENV['MONGOID_PORT'] %>
username: <%= ENV['MONGOID_USERNAME'] %>
password: <%= ENV['MONGOID_PASSWORD'] %>
database: <%= ENV['MONGOID_DATABASE'] %>
Run Code Online (Sandbox Code Playgroud)
我应该如何在生产服务器上配置此选项和整个MongoDB?
Jes*_*ott 11
要创建需要使用用户名和密码进行连接的生产环境:
在mongo控制台中:
// Add an Admin User (to the admin db)
use admin
db.addUser("theadmin", "anadminpassword")
// Use your database
use supercool
// Add a user (to your database)
db.addUser("joe", "passwordForJoe")
// show all users:
db.system.users.find()
// add readonly user (kinda cool)
db.addUser("readonly", "passwordForJoe", true)
Run Code Online (Sandbox Code Playgroud)
现在,与您的mongodb的所有连接都需要身份验证 - http://www.mongodb.org/display/DOCS/Security+and+Authentication
另外:您可以考虑使用您的Linux防火墙仅允许来自您的Web服务器的27017.
默认情况下,MongoDB不支持身份验证.这是设计使然,预计将由个别应用程序处理.但是,启用对MongoDB的身份验证访问并不困难.我将描述我为典型的rails,mongoid,git,capistrano设置所采取的步骤.
首先将用户添加到管理数据库.没有它,以下步骤都不起作用.
use admin
db.addUser("heisenberg", "knock-knock")
Run Code Online (Sandbox Code Playgroud)为应用程序将使用的db创建用户.在MongoDB中,身份验证适用于每个数据库级别
use breaking_bad
db.addUser("gus", "fring")
Run Code Online (Sandbox Code Playgroud)更好的是,创建用户只是为了安全性和性能优势的只读目的
use breaking_bad
db.addUser("walter", "white", true)
Run Code Online (Sandbox Code Playgroud)为mongodb启用auth标志以尊重所有与身份验证相关的硬件工作.这可以通过mongodb命令的--auth标志来完成.或者更好地在/etc/mongodb.conf中取消注释这一行
auth = true #Uncomment me
Run Code Online (Sandbox Code Playgroud)现在重新启动你的mongodb进程以获取新的更改.
service mongodb restart
Run Code Online (Sandbox Code Playgroud)通过确保您的CRUD应用程序现在失败来检查您是否在正确的轨道上!它失去了对mongodb事件的读/写访问权限.现在将用户名:和密码:属性添加到默认组下的mongoid.yml.
production:
sessions:
default:
database: breaking_bad
hosts:
- albuquerque.com:27017
username: gus
password: fring
Run Code Online (Sandbox Code Playgroud)对于奖励积分,请从git存储库中删除mongoid.yml文件,因为此文件现在具有安全凭据
git rm mongoid.yml
Run Code Online (Sandbox Code Playgroud)添加capistrano任务,将mongoid.yml文件从您的开发机器复制到您的服务器并添加适当的符号链接.cap deploy在此之后
运行
namespace :mongoid do
desc "Copy mongoid config"
task :copy do
upload "config/mongoid.yml", "#{shared_path}/mongoid.yml", :via => :scp
end
desc "Link the mongoid config in the release_path"
task :symlink do
run "test -f #{release_path}/config/mongoid.yml || ln -s #{shared_path}/mongoid.yml #{release_path}/config/mongoid.yml"
end
end
Run Code Online (Sandbox Code Playgroud)使用/etc/mongodb.conf中的bind_ip设置告诉MongoDB只接受来自您的web服务器的连接
使用iptables设置防火墙设置以进一步保护您的设置.或者在VPN中使用它.
进一步阅读:
http://docs.mongodb.org/manual/tutorial/control-access-to-mongodb-with-authentication/ http://docs.mongodb.org/manual/administration/security/
| 归档时间: |
|
| 查看次数: |
7068 次 |
| 最近记录: |