📜  OrientDB-安全性

📅  最后修改于: 2020-11-26 05:42:48             🧑  作者: Mango


与RDBMS一样,OrientDB也基于众所周知的概念,用户和角色提供安全性。每个数据库都有自己的用户,每个用户都有一个或多个角色。角色是工作模式和权限集的组合。

用户数

默认情况下,OrientDB为服务器中的所有数据库维护三个不同的用户-

  • 管理员-该用户可以不受限制地访问数据库上的所有功能。

  • 读者-该用户是只读用户。读者可以查询数据库中的任何记录,但不能修改或删除它们。它无权访问内部信息,例如用户和角色本身。

  • Writer-该用户与用户阅读器相同,但是它也可以创建,更新和删除记录。

与用户合作

连接到数据库后,可以通过使用OUser类上的SELECT查询来查询数据库上的当前用户。

orientdb> SELECT RID, name, status FROM OUser 

如果上面的查询成功执行,您将获得以下输出。

---+--------+--------+-------- 
#  | @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). 

创建一个新用户

要创建新用户,请使用INSERT命令。请记住,这样做时必须将状态设置为“活动”并赋予其有效的角色。

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以哈希格式保存密码。触发器OUserTrigger在保存记录之前将对密码进行透明加密。

禁用用户

要禁用用户,请使用UPDATE将其状态从ACTIVE切换为SUSPENDED。例如,如果要禁用除admin以外的所有用户,请使用以下命令-

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

的角色

角色确定用户可以对资源执行哪些操作。该决定主要取决于工作模式和规则。规则本身的工作方式有所不同,具体取决于工作模式。

使用角色

连接到数据库后,可以使用ORole类上的SELECT查询来查询数据库上的当前角色。

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

如果上面的查询成功执行,您将获得以下输出。

--+------+----+--------+------------------------------------------------------- 
# |@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). 

创建新角色

要创建新角色,请使用INSERT语句。

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

使用模式

在规则确定属于某些角色的用户可以在数据库上执行的操作的情况下,工作模式确定OrientDB如何解释这些规则。有两种工作模式,分别由1和0指定。

  • 允许所有(规则) -默认情况下,它是超级用户模式。使用规则指定例外情况。如果OrientDB没有为请求的资源找到任何规则,则它允许用户执行操作。此模式主要适用于高级用户和管理员。默认角色admin默认情况下使用此模式,并且没有异常规则。它在数据库中写为1。

  • 拒绝所有但(规则) -默认情况下,此模式不允许任何操作。使用规则指定例外情况。如果OrientDB找到所请求资源的规则,则它允许用户执行操作。对于所有经典用户,将此模式用作默认模式。默认角色(读取者和写入者)使用此模式。它在数据库中写为0。