我想要構建一個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腳本來做到這一點,並且由於我可以在運行時傳遞證書,所以我已經解決了大部分問題。
更簡單的做法是'複製local.ini/usr/local/etc/couchdb /'並用docker build目錄下的'local.ini'文件覆蓋。 – 2016-06-09 08:27:48
看看https://github.com/eHealthAfrica/couchdb-bootstrap來配置其餘的。 – 2016-06-09 08:28:55
你好,你可以分享Docker中安裝couchDB的方法:http://stackoverflow.com/questions/41657570/how-to-add-couchdb-server-into-docker-creation-file?非常感激! – EagerToLearn 2017-01-15 08:21:04