OrientDB安全

2018-12-24 15:40 更新

像RDBMS一樣,OrientDB還提供基于眾所周知的概念,用戶和角色的安全性。 每個數(shù)據(jù)庫都有自己的用戶,每個用戶都有一個或多個角色。 角色是工作模式和權(quán)限集的組合。

用戶

默認(rèn)情況下,OrientDB為服務(wù)器中的所有數(shù)據(jù)庫維護(hù)三個不同的用戶 - 
Admin - 此用戶可以訪問數(shù)據(jù)庫上的所有功能,而不受限制。
Reader - 此用戶是只讀用戶。 讀者可以查詢數(shù)據(jù)庫中的任何記錄,但不能修改或刪除它們。 它無法訪問內(nèi)部信息,例如用戶和角色本身。
Writer - 此用戶與用戶閱讀器相同,但它也可以創(chuàng)建,更新和刪除記錄。

使用用戶

連接到數(shù)據(jù)庫時(shí),可以通過對OUser類使用SELECT查詢來查詢數(shù)據(jù)庫上的當(dāng)前用戶。

orientdb> SELECT RID, name, status FROM OUser 

如果上面的查詢執(zhí)行成功,你會得到下面的輸出。

---+--------+--------+-------- 
#  | @CLASS | name   | status 
---+--------+--------+-------- 
0  | null   | admin  | ACTIVE 
1  | null   | reader | ACTIVE 
2  | null   | writer | ACTIVE 
---+--------+--------+-------- 
3 item(s) found. Query executed in 0.005 sec(s). 

創(chuàng)建新用戶

要創(chuàng)建新的用戶,請使用INSERT命令。請記住,在這樣做,你必須將狀態(tài)設(shè)置為有效,給它一個有效的作用。

orientdb> INSERT INTO OUser SET 
               name = 'jay', 
               password = 'JaY',
               status = 'ACTIVE',
               roles = (SELECT FROM ORole WHERE name = 'reader')

更新用戶

您可以使用UPDATE語句的用戶更改名稱。

orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'

以同樣的方式,您還可以更改用戶的密碼。

orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'

OrientDB以哈希格式保存密碼。 觸發(fā)器OUserTrigger在保存記錄之前透明地加密密碼。

禁用用戶

要禁用用戶,請使用UPDATE將其狀態(tài)從ACTIVE切換到SUSPENDED。 例如,如果要禁用除admin以外的所有用戶,請使用以下命令 :

orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'

角色

角色決定用戶可以對資源執(zhí)行的操作。 主要是,這個決定取決于工作模式和規(guī)則。 規(guī)則本身工作方式不同,取決于工作模式。


使用角色
連接到數(shù)據(jù)庫時(shí),可以使用ORole類上的SELECT查詢查詢數(shù)據(jù)庫上的當(dāng)前角色。

orientdb> SELECT RID, mode, name, rules FROM ORole 

如果上面的查詢執(zhí)行成功,你會得到下面的輸出。

--+------+----+--------+------------------------------------------------------- 
# |@CLASS|mode| name   | rules 
--+------+----+--------+------------------------------------------------------- 
0 | null | 1  | admin  | {database.bypassRestricted = 15} 
1 | null | 0  | reader | {database.cluster.internal = 2, database.cluster.orole = 0... 
2 | null | 0  | writer | {database.cluster.internal = 2, database.cluster.orole = 0... 
--+------+----+--------+------------------------------------------------------- 
3 item(s) found.  Query executed in 0.002 sec(s). 

創(chuàng)建新角色

要創(chuàng)建一個新的角色,使用INSERT語句。

orientdb> INSERT INTO ORole SET name = 'developer', mode = 0 

使用模式

在規(guī)則確定屬于某些角色的用戶可以在數(shù)據(jù)庫上做什么的情況下,工作模式確定OrientDB如何解釋這些規(guī)則。 有兩種類型的工作模式,由1和0指定。
允許所有(規(guī)則) - 默認(rèn)情況下是超級用戶模式。 使用規(guī)則指定此的例外。 如果OrientDB找不到所請求資源的規(guī)則,則它允許用戶執(zhí)行該操作。 此模式主要適用于高級用戶和管理員。 默認(rèn)角色admin默認(rèn)情況下使用此模式,并且沒有異常規(guī)則。 它在數(shù)據(jù)庫中寫為1。
拒絕所有(規(guī)則) - 默認(rèn)情況下,此模式不允許任何內(nèi)容。 使用規(guī)則指定此的例外。 如果OrientDB找到所請求資源的規(guī)則,則它允許用戶執(zhí)行操作。 將此模式用作所有經(jīng)典用戶的默認(rèn)模式。 默認(rèn)角色,reader和writer,使用此模式。 它在數(shù)據(jù)庫中寫為0。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號