Security

Mongo Sharding - 配置伺服器和 Mongo 身份驗證

  • January 28, 2014

我需要盡快對數據庫進行分片,並且不清楚在mongosconfig伺服器上啟用身份驗證的最佳實踐是什麼。

我想用密碼保護一切。

  1. 每個配置伺服器都應該auth啟用嗎?
  2. 如果是這樣,那麼在每個使用者中設置相同的使用者?只是為了管理員數據庫?或者是否需要為配置數據庫創建一個?
  3. 我猜你不需要在 mongos 上創建任何使用者,因為它應該從配置和分片本身繼承,這是正確的嗎?
  4. 添加新分片時,是否需要為新分片上的每個分片數據庫設置相同的使用者?

謝謝!

我會一次拿這些:

每個配置伺服器都應該啟用身份驗證嗎?

是的,基本上你執行的每個 mongod 實例都應該啟用 auth (和密鑰文件,這意味著 auth)。

如果是這樣,那麼在每個使用者中設置相同的使用者?只是為了管理員數據庫?或者是否需要為配置數據庫創建一個?

分片環境中的管理數據庫實際上將存在於配置伺服器上。因此,您將擁有所有三個上的 admin 數據庫的副本(它們將彼此相同)。您應該始終通過 連接到配置數據庫,mongos並且您不會在那裡創建其他數據庫,因此無需添加特定使用者。

我猜你不需要在 mongos 上創建任何使用者,因為它應該從配置和分片本身繼承,這是正確的嗎?

您添加的第一個分片(如果它具有現有數據庫)將是這些數據庫的主分片(永遠)。該主分片將包含這些數據庫的身份驗證記錄,即使您隨後將集合分片到多個分片。在您分片之後創建的任何後續數據庫都可能存在於另一個分片上,並且它們的憑據將儲存在那裡。基本的經驗法則是:用於mongos在分片環境中管理您的使用者。

**注意:**以上在 MongoDB 2.4 及更低版本中是正確的。2.6 中的計劃更改將把所有憑據集中到分片環境中的配置數據庫中,並消除一些複雜性。但是,經驗法則仍然適用,使用mongos

添加新分片時,是否需要為新分片上的每個分片數據庫設置相同的使用者?

正如上一個問題的答案所暗示的那樣,只要您始終通過連接mongos(推薦 - 它知道每個數據庫的主分片是什麼,並將適當地路由您的身份驗證請求),就沒有必要這樣做。在某些極端情況下,您可能需要在所有分片上擁有使用者,在這種情況下,您必須在每個分片上添加(和維護)它們,但對於一般用途,這不是必需的。

引用自:https://serverfault.com/questions/570032