Mongodb 許可權控制以及角色使用

2021-09-11 14:56:44 字數 3447 閱讀 1604

參考:

mongodb通過基於角色的授權授予對資料和命令的訪問許可權,並提供內建角色,提供資料庫系統中通常需要的不同訪問級別。 還可以建立使用者定義的角色。

mongodb中的許可權關鍵字。

要理解清楚mongodb的許可權必須先了解如下一些關鍵字.

user

即使用者,用於提供客戶端連線mongodb的認證賬戶。

role

即角色,資料許可權的集合,建立使用者的時候必須要指定對應的角色,否則使用者無法運算元據庫。

resource

即資源,包括database或collection也可以是database和collection的組合。例如:,當然你也可能看到一種特殊的資源:,它其實表示的是全域性資源。

actions

即許可權操作,」actions」 定義了」user」能夠對 「resource document」執行的操作。例如,增刪改查包括如下操作:find、insert、remove、update。

privilege

即許可權,」privilege」 是一組」resource」 和 「actions」 的組合。

authenticationdatabase

認證庫,即建立角色或使用者時所在的庫。例如,在admin下建立了mongodb使用者那麼登陸的時候需要指定認證庫為admin

即:mongo -host host:port --authenticationdatabase admin -u user -p password

連線mongodb,進入admin庫,執行db.system.users.find().pretty()檢視當前資料庫所用使用者。

如下面的***使用者即為其中之一,我們可以看到這個user中有乙個roles的列表。roles表示***使用者擁有的就是對某一資源的許可權的「集合」。

},"roles" : [

]}

(1).資料庫使用者角色

針對每乙個資料庫進行控制。

read:提供了讀取所有非系統集合,以及系統集合中的system.indexes, system.js, system.namespaces

readwrite: 包含了所有read許可權,以及修改所有非系統集合的和系統集合中的system.js的許可權.

示例:下面**表示,user test在db:test下有readwrite許可權。

db.createuser(]}

);

(2).資料庫管理角色

每乙個資料庫包含了下面的資料庫管理角色。

dbowner:該資料庫的所有者,具有該資料庫的全部許可權。

dbadmin:一些資料庫物件的管理操作,但是沒有資料庫的讀寫許可權。

useradmin:為當前使用者建立、修改使用者和角色。擁有useradmin許可權的使用者可以將該資料庫的任意許可權賦予任意的使用者。

(3).集群管理許可權

admin資料庫包含了下面的角色,使用者管理整個系統,而非單個資料庫。這些許可權包含了複製集和共享集群的管理函式。

clusteradmin:提供了最大的集群管理功能。相當於clustermanager, clustermonitor, and hostmanager和dropdatabase的許可權組合。

clustermanager:提供了集群和複製集管理和監控操作。擁有該許可權的使用者可以操作config和local資料庫(即分片和複製功能)

clustermonitor:僅僅監控集群和複製集。

hostmanager:提供了監控和管理伺服器的許可權,包括shutdown節點,logrotate, repairdatabase等。

備份恢復許可權:admin資料庫中包含了備份恢復資料的角色。包括backup、restore等等。

(4).所有資料庫角色

admin資料庫提供了乙個mongod例項中所有資料庫的許可權角色:

readanydatabase:具有read每乙個資料庫許可權。但是不包括應用到集群中的資料庫。和read相似,但它是全域性。的。

readwriteanydatabase:具有readwrite每乙個資料庫許可權。但是不包括應用到集群中的資料庫。

useradminanydatabase:具有useradmin每乙個資料庫許可權,但是不包括應用到集群中的資料庫。

dbadminanydatabase:提供了dbadmin每乙個資料庫許可權,但是不包括應用到集群中的資料庫。

(5). 超級管理員許可權

root: dbadmin到admin資料庫、useradmin到admin資料庫以及useradminanydatabase。但它不具有備份恢復、直接操作system.*集合的許可權,但是擁有root許可權的超級使用者可以自己給自己賦予這些許可權。

(6). 備份恢復角色:backup、restore;

(7). 內部角色:__system

mongodb除了內建角色外,還有可以自定義角色。

use admin

db.createrole(

,actions: [ "find", "insert", "remove","update" ]}],

roles: [ ]

})

上述語句在admin庫里建立了乙個名為test的角色,該角色擁有有對test庫下的所有集合進行 find、insert、remove、update的操作的許可權。角色建立完畢後 mongodb的admin 下建立乙個系統collection名叫system.roles  裡面儲存的即是角色相關的資訊。可以使用db.system.roles.find();進行檢視。

如建立使用者管理員:

使用者管理員是第乙個要建立的使用者。role為useradminanydatabase,它擁有useradmin每乙個具有useradmin每乙個資料庫許可權。

命令為:

db.createuser(]}

);

db.dropuser('test1')

use admin

db.system.users.find().pretty()

show roles;

如果知道具體role的許可權:

db.getrole("read",);

db.system.roles.find();

Oracle 使用者 角色以及許可權控制

系統許可權請使用dba操作 建立使用者 create user myuser identified by myuser 賦予許可權 grant create session privilege to myuser 賦予表空間 alter user myuser quota unlimited on ...

Oracle 使用者 角色以及許可權控制

oracle 使用者 角色以及許可權控制 首先獲取dba許可權 建立使用者 create user myuser identified by myuser 賦予許可權 grant create session privilege to myuser 賦予表空間 alter user myuser q...

MongoDB使用者的角色許可權

1 當前庫普通操作角色 read 查詢本庫的許可權 readwrite 增刪改查本庫的許可權 2 當前庫管理員操作角色 dbadmin 資料庫物件的管理操作,但沒有資料庫的讀寫許可權 useradmin 在本庫下建立使用者的許可權 dbowner 本庫所有操作的許可權 3 例項級別操作角色 read...