Mongodb

Mongodb分片集群備份使用者問題

  • June 17, 2014

我們正在使用一個簡單的 python 腳本來備份我們的 mongodb 集群。該腳本通過 ssh 連接到每個 mongod 實例,並執行 mongodump,所有這些都不需要使用者/密碼

自從我們開始使用 mms 監控代理並因此在每個分片上創建一個管理使用者以供 mms 代理連接以來,我們就無法在沒有憑據的情況下使用 mongodump。

問題是我們所有的使用者都是在 mongos 實例上配置的,而不是直接在分片上,所以我們無法執行 mongodump。

最後一件事,是否可以禁用特定分片的身份驗證以便從中創建/刪除使用者?

你有什麼想法?

一旦您將使用者添加到各個分片(您表明您已完成)MMS,您就必須擁有有效的憑據才能出於任何目的進行連接,包括mongodump. 直到您為 添加該使用者之前MMS,分片在啟用身份驗證但未填充使用者的情況下執行(僅當您的所有使用者都在 admin 數據庫中並且對其他數據庫使用委託身份驗證時才會發生這種情況,否則使用 2.4 及更低版本您將擁有每個數據庫至少有一個使用者分片 - 2.6+ 改變了這種行為),因此您無需憑據即可連接。

從本質上講,這是一個開放的漏洞,因此當您在沒有使用者的情況下打開身份驗證時,您不會意外地將自己鎖定在您的實例之外(並且由於預設安全性無論如何都會收緊,因此可能會在某個時候停止工作)。

最重要的是,您需要添加一個使用者來使用mongodump,無論如何這樣做而不是允許未經身份驗證的使用者免費訪問您的實例是一個好主意。如果您執行的是 2.6 或更高版本,那麼內置備份角色正是為此目的而存在,如果您使用的是 2.4 或更早版本,那麼該角色的描述為您提供了成功備份所需的概要(尤其是如果你想備份使用者自己)。

引用自:https://dba.stackexchange.com/questions/68320