我想创建一个使用CouchDB作为分布式数据库的应用程序。每个用户都将使用本地CouchDB副本,这种方式将能够脱机工作。 每个本地副本将与中央副本同步,这不是主副本,现在更容易使用中央副本。
鉴于此设计,我如何保护本地和中央数据库?
安全我的意思是,在允许读取或写入数据库之前,用户必须使用用户名和密码进行身份验证。
当然,更重要的方面是保护中央数据库,因为任何本地都可以并且最终会被黑客攻击,但中央(或远程)数据库应该更安全。 我读过人们建议将CouchDB置于代理之后,但复制过程如何代表用户进行身份验证?
谢谢你, IDO。
答案 0 :(得分:4)
我认为我不能提供一些智能的Couch特定建议,因为所有要点都属于一般安全问题,但这里是:
对于初学者,请确保节点之间的通信已加密。自1.1以来,CouchDB原生支持SSL,因此对于早期版本,您必须将其置于一些代理中,该代理将处理SSL(nginx,apache的mod_proxy,varnish)或限制VPN访问。
检查角色和用户权限。禁止所有不需要的东西。需要有效的用户等...
确保如果有人通过身份验证,并不意味着您可以信任他。确保密切验证所有数据 - 大量使用validate_doc_update
函数。检查每个人是否都在访问他们真正有权访问的数据。再次认证并不意味着授权。