2011-08-31 58 views
2

我一直在玩Iris沙发使用蒲团,卷曲和阅读CouchDB security Wiki page和我有点困惑读者,管理员&服务器管理员。CouchDB /虹膜沙发 - noob安全问题

我正确地说,在创建“创建服务器管理”弹出不是实际上创建一个服务器管理员,(维基提到这只能通过编辑一个local.ini文件)?

你真正做的是建立在_users数据库文件 - 为用户提供用户名密码&通过身份验证,之后他们的名字和角色相比,对数据库的安全对象定义的任何名称/角色?

此外,我注意到,“require_valid_user”默认设置为false,所以假设Iris Couch有一个服务器管理员,这是否意味着尽管用户必须提供他们的用户名/密码进行身份验证 - 它们被验证为匿名的,所以没有比较任何数据库定义的安全性?

如果我想限制用户到特定的数据库,我需要将“require_valid_user”设置设置为true吗?

干杯

+0

确定 - 感谢[Jason](http://getsatisfaction.com/iriscouch/topics/security_problem-qy2g2?utm_content=topic_link&utm_medium=email&utm_source=reply_notification)我意识到我错过了一些关键信息 - 创建服务器管理员创建该用户在配置的“管理”部分中的引用。这基本上意味着用户可以做他们喜欢的(!),而不管我的情况如何。一旦我从该部分删除了我的test2用户引用,他们就不再有权访问数据库了 - 正如所料。 – Neil

回答

4

当您使用“创建服务器管理员”弹出窗体时,这与编辑.ini文件相同。 (在内部,蒲团将查询作为HTTP API的a/_config URL来编辑.ini文件。)

_users数据库是所有用户帐号,其密码及其角色的权威位置。当用户使用密码(或使用会话cookie)查询CouchDB时,将使用该名称和角色来授予或拒绝他们的查询。是否允许或不允许查询的决定是先检查数据库中的_security对象。他们必须位于“读者”部分:他们的姓名在“姓名”列表中,或者他们的角色必须在“角色”列表中。我建议你avoid the require_valid_user option。这是非常专业的情况。

+0

谢谢杰森 - 这正是我正在发生的事情。 但是,我对测试数据库有以下_security设置 - “{”admins“:{”names“:[”neil“],”roles“:[”admin“]},”readers“:{”names “:” 客 “],” 角色 “:” 客“]}}'。 当我创建一个新的服务器admin - '{“_id”:“org.couchdb.user:test2”,“_ rev”:“1-084965a94ea3d7a24116f33245a0ef95”,“name”:“test2”,“type”:“user “,”roles“:[]}' - 这个用户可以从我的测试数据库中读取吗? 因为这个用户名和角色都不出现在_security文档中,我希望他们*不能被授权? – Neil

+0

user'test2' should not * read * with readers ='{“names”:[“guest”],“roles”:[“guest”]}'。如果您遇到问题,请加入Freenode IRC#couchdb或通过电子邮件发送用户邮件列表。这可能很简单。 – JasonSmith

3

您可以拥有特定于数据库的用户和角色。您需要修改给定数据库的“文档”_security。在维基上还记录了here

+0

谢谢,但我一直在阅读该wiki页面,因此为什么我将它包含在我的文章中。 我要求的是我看到的行为的一些确认 - 我有数据库特定的用户和角色,但是如果我在_users数据库中创建用户,该用户可以执行任何操作,而不考虑_security文档。 – Neil