MongoDB創建一個用戶自定義角色

MongoDB創建一個用戶自定義角色


前提條件


在數據庫中創建一個角色,你必須有:  
    1.在該數據庫資源上的createRole行爲。    
    2.在該數據庫上grantRole行爲給新角色指定權限以及指定繼承的角色。

內嵌角色userAdmin和userAdminAnyDatabase提供了它們各自資源的createRole和grantRole行爲。


創建一個角色管理當前操作


下面的示例創建了角色manageOpRole,只提供了運行db.currentOp()和db.killOp()的權限。


1. 使用適當的權限連接到MongoDB。  
使用在前提條件部分指定的權限,連接到mongod或mongos。    
下面的過程創建了一個用戶管理員siteUserAdmin:

use admin   
db.createUser(    
  {    
    user: "siteUserAdmin",    
    pwd: "password",    
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]    
  }    
)

登錄到MongoDB:  

mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

siteUserAdmin擁有在admin以及其他數據庫創建角色的權限。


2. 創建一個新的角色管理當前操作。  
manageOpRole有權限在多個數據庫以及cluster資源操作。因此,你必須在admin數據庫創建角色。

use admin   
db.createRole(    
   {    
     role: "manageOpRole",    
     privileges: [    
       { resource: { cluster: true }, actions: [ "killop", "inprog" ] },    
       { resource: { db: "", collection: "" }, actions: [ "killCursors" ] }    
     ],    
     roles: []    
   }    
)

新角色被授權能殺掉任何操作。


警告:  
終止運行中的操作要極其小心。只使用db.killOp()來終止客戶端發起的操作而不會終止內部數據庫操作

內嵌的角色ClusterMonitor也提供了權限運行db.currentOp()及其他權限,內嵌的角色hostManager提供了權限運行db.killOp()以及其他權限。


創建一個角色運行mongostat


下面的示例創建一個角色mongostatRole提供了只有運行mongostat的權限。


1. 使用適當的權限連接到MongoDB。  
使用在前提條件部分指定的權限,連接到mongod或mongos。    
下面的過程創建了一個用戶管理員siteUserAdmin:

use admin   
db.createUser(    
  {    
    user: "siteUserAdmin",    
    pwd: "password",    
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]    
  }    
)

登錄到MongoDB:  

mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

siteUserAdmin擁有在admin以及其他數據庫創建角色的權限。


2.創建一個新的角色來管理當前操作。  
mongostatRole有權限在cluster資源操作。因此,你必須在admin數據庫創建角色。

use admin   
db.createRole(    
   {    
     role: "mongostatRole",    
     privileges: [    
       { resource: { cluster: true }, actions: [ "serverStatus" ] }    
     ],    
     roles: []    
   }    
)

內嵌的角色clusterMonitor也提供了權限運行mongostat以及其他權限。


參見:https://docs.mongodb.org/manual/tutorial/manage-users-and-roles/#create-role-to-manage-ops

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章