天天看點

MongoDB建立一個使用者自定義角色

前提條件

在資料庫中建立一個角色,你必須有:   

    1.在該資料庫資源上的createRole行為。    

    2.在該資料庫上grantRole行為給新角色指定權限以及指定繼承的角色。

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

建立一個角色管理目前操作

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

1. 使用适當的權限連接配接到MongoDB。   

使用在前提條件部分指定的權限,連接配接到mongod或mongos。    

下面的過程建立了一個使用者管理者siteUserAdmin:

1

2

3

4

5

6

7

8

<code>use admin   </code>

<code>db.createUser(    </code>

<code>  </code><code>{    </code>

<code>    </code><code>user</code><code>: </code><code>"siteUserAdmin"</code><code>,    </code>

<code>    </code><code>pwd: </code><code>"password"</code><code>,    </code>

<code>    </code><code>roles: [ { role: </code><code>"userAdminAnyDatabase"</code><code>, db: </code><code>"admin"</code> <code>} ]    </code>

<code>  </code><code>}    </code>

<code>)</code>

登入到MongoDB:   

<code>mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin</code>

siteUserAdmin擁有在admin以及其他資料庫建立角色的權限。

2. 建立一個新的角色管理目前操作。   

manageOpRole有權限在多個資料庫以及cluster資源操作。是以,你必須在admin資料庫建立角色。

9

10

11

<code>db.createRole(    </code>

<code>   </code><code>{    </code>

<code>     </code><code>role: </code><code>"manageOpRole"</code><code>,    </code>

<code>     </code><code>privileges</code><code>: [    </code>

<code>       </code><code>{ resource: { cluster: </code><code>true</code> <code>}, actions: [ </code><code>"killop"</code><code>, </code><code>"inprog"</code> <code>] },    </code>

<code>       </code><code>{ resource: { db: </code><code>""</code><code>, collection: </code><code>""</code> <code>}, actions: [ </code><code>"killCursors"</code> <code>] }    </code>

<code>     </code><code>],    </code>

<code>     </code><code>roles: []    </code>

<code>   </code><code>}    </code>

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

警告:   

終止運作中的操作要極其小心。隻使用db.killOp()來終止用戶端發起的操作而不會終止内部資料庫操作

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

建立一個角色運作mongostat

下面的示例建立一個角色mongostatRole提供了隻有運作mongostat的權限。

2.建立一個新的角色來管理目前操作。   

mongostatRole有權限在cluster資源操作。是以,你必須在admin資料庫建立角色。

<code>     </code><code>role: </code><code>"mongostatRole"</code><code>,    </code>

<code>       </code><code>{ resource: { cluster: </code><code>true</code> <code>}, actions: [ </code><code>"serverStatus"</code> <code>] }    </code>

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

本文轉自UltraSQL51CTO部落格,原文連結: http://blog.51cto.com/ultrasql/1706466,如需轉載請自行聯系原作者