2011-08-31 138 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