Mongodb

為什麼mongodb中的數據庫有角色?

  • January 28, 2020

我已經閱讀了有關mongodb 基於角色的訪問控制的內容,並且在很大程度上理解了它。我正在閱讀本教程,當您在 mongo shell 上執行 show roles 時,它會為給定數據庫返回一組不同的角色。

  1. 為什麼每個數據庫都有自己的角色?然而,我們將角色分配給使用者。這是否意味著如果您在該數據庫中創建一個使用者,他們只能分配該數據庫中存在的角色?
  2. 與將所有用途保存在單個數據庫中相比,擁有身份驗證數據庫的重要性是什麼,例如管理員?擁有不同的身份驗證數據庫有什麼好處嗎?

我認為在數據庫中定義usersroles其他任何地方都沒有任何意義。admin如果您在其他地方定義它們,那麼您的使用者/角色管理可能會變得難以管理。

db.createRole()

除了在 admin 數據庫中創建的角色外,一個角色只能包含適用於其數據庫的權限,並且只能從其數據庫中的其他角色繼承。

在 admin 數據庫中創建的角色可以包括應用於 admin 數據庫、其他數據庫或集群資源的權限,並且可以從其他數據庫以及 admin 數據庫中的角色繼承。

因此,在“非管理員”數據庫中創建角色會受到更多限制。但是,創建使用者和角色通常是一項管理員任務,並且通常管理員無論如何都擁有全部權力。也許當您想提供一個 MongoDB 遊樂場(例如https://mongoplayground.net/)時,​​這樣的限制可能會很有用。

請注意,當您執行 MongoDB Sharded Cluster時,使用者和角色通常在 Config Server Replica Set 中定義。當您直接連接到分片時,分片會聯繫配置伺服器以驗證您的連接。但是,當您的分片與集群斷開連接時,它就無法聯繫配置伺服器。為此,您可以直接在分片上定義分片本地使用者,請參閱創建分片本地使用者管理員。我認為這是使用者未在公共admin數據庫中定義的唯一有用的例外。

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