2015-03-31 43 views
4

我想要構建一個Dockerized CouchDB在AWS中運行,爲我的應用程序啓動身份驗證。我有一個Dockerfile安裝CouchDB 1.6.1,並以我需要的方式設置其餘的環境。但是,在我將它放在AWS上並可能暴露給它之前,我想要進行一些身份驗證。該文檔顯示此:如何在Docker中配置CouchDB身份驗證?

http://docs.couchdb.org/en/1.6.1/api/server/authn.html

幾乎不正確地解釋了配置,或者需要什麼基本的安全性。我花了下午的時間閱讀SO問題,文檔和博客,所有關於如何去做,但沒有一致的故事,我不知道2009年的工作現在是否有效,哪些部分已經過時。我在當前的ini文件中看到一些可能的設置,但它們與我在網絡搜索中看到的不匹配。我即將開始嘗試從各種讀物中收集到的各種隨機建議,但我認爲在做試驗和錯誤工作之前我會問。

因爲我想讓它在AWS中運行,所以我需要它能夠在無需手動修改的情況下啓動。我需要我的Dockerfile來完成配置,所以使用Futon不會削減它。如果我需要,我可以添加一個腳本開始運行,以處理那裏無法完成的任務。

我相信我需要設置一個管理員用戶,然後爲用戶定義一個角色,提供一個驗證功能來檢查適當的角色,然後創建具有該角色的用戶。然後,我可以使用Cookie身份驗證(通過SSL)來限制訪問我的應用程序,該應用程序提供正確的登錄並處理會話/ cookie。

它看起來像它可以在Dockerfile中完成。我需要在ini文件中配置authentication_handlers和管理員用戶嗎?我猜測修改數據庫的操作需要通過一些運行時腳本來完成。有沒有人做過這個,或者看過它的一些例子?

UPDATE:

基於Kxepal的建議,我現在有工作。我的Dockerfile來源於klaemo的docker-couchdb,如下所述。解決方案是強制數據庫要求身份驗證,但全新安裝將以Admin-Party身份啓動。爲了避免這種情況,您必須創建一個管理員用戶,該用戶可以保護系統數據,同時保持其他數據庫的打開。首先,在你Dockerfile創建一個管理員用戶:

RUN sed -e '/^\[admins\]$/a admin=openpassword\n' -i /usr/local/etc/couchdb/local.ini 

(只是跟着klaemo的使用的sed -e的模式),當CouchDB的運行它將鹽和哈希此密碼,並在local.ini文件替換它。我提取該密碼並用此代替「openpassword」,這樣我的Dockerfile就沒有純文本密碼。 CouchDB可以通過它的形式告訴它不要再次散列它。

現在保護其他數據庫的正常模式是創建用戶/角色並在驗證功能中使用它們來拒絕對其他數據庫的訪問。由於我只想獲得一個安全的系統來進行測試,所以我選擇推遲使用,並使用local.ini中的設置強制每個人都進行身份驗證。

的Dockerfile現在需要設置require_valid_user標誌:

RUN sed -e '/^\[couch_httpd_auth\]$/a require_valid_user = true\n' -i /usr/local/etc/couchdb/local.ini 

而且需要取消對WWW身份驗證設置:

RUN sed -e 's/^;WWW-Authenticate/WWW-Authenticate/' -i /usr/local/etc/couchdb/local.ini 

其中,由於設置顯示Basic realm="administrator"NSURLProtectionSpace在我的iOS應用需要使用@"administrator"作爲領域。

之後,我現在有一個Dockerfile,它創建一個不允許匿名修改或讀取的CouchDB服務器。

這並沒有解決我所有的配置問題,因爲我需要填充數據庫,但由於我使用python腳本來做到這一點,並且由於我可以在運行時傳遞證書,所以我已經解決了大部分問題。

+1

更簡單的做法是'複製local.ini/usr/local/etc/couchdb /'並用docker build目錄下的'local.ini'文件覆蓋。 – 2016-06-09 08:27:48

+1

看看https://github.com/eHealthAfrica/couchdb-bootstrap來配置其餘的。 – 2016-06-09 08:28:55

+0

你好,你可以分享Docker中安裝couchDB的方法:http://stackoverflow.com/questions/41657570/how-to-add-couchdb-server-into-docker-creation-file?非常感激! – EagerToLearn 2017-01-15 08:21:04

回答

4

要在圖像構建期間設置auth配置,您需要檢查不是API,但需要configuration for server admins。 TL; DR僅將[admin]部分放入local.ini文件中,並以純文本形式輸入用戶名和密碼 - 在開始時,CouchDB將用它替換密碼hash並且CouchDB不會處於Admin Party狀態。

P.S.你檢查了docker-couchdb項目嗎?

+0

非常棒!我完全錯過了這一部分,我現在就試試它。我確實看到了docker-couchdb項目,它幫助我解決了我正確安裝CouchDB的問題。我從閱讀中學到了很多東西,並竊取了一些代碼。但是,它沒有處理認證。 – 2015-03-31 14:55:00

+1

是的,這是做的伎倆,我會更新我的問題,我如何得到它的工作,感謝提示,這正是我需要解決我的問題。 – 2015-04-01 03:59:30

相關問題