Orientdb 简明教程

OrientDB - Security

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

Users

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

  1. Admin − 此用户可以不受限制地访问数据库上的所有功能。

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

  3. Writer − 此用户与用户 reader 相同,但它还可以创建、更新和删除记录。

Working with Users

连接到数据库后,可以通过对 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).

Creating a New User

要创建新用户,请使用 INSERT 命令。请记住,在此过程中,你必须将状态设置为 ACTIVE,并授予它一个有效角色。

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

Updating Users

你可以使用 UPDATE 语句更改用户名称。

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

同样,你还可以更改用户的密码。

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

OrientDB 以哈希格式保存密码。触发器 OUserTrigger 在保存记录之前,会透明地加密密码。

Disabling Users

要禁用用户,请使用 UPDATE 将其状态从 ACTIVE 更改为 SUSPENDED。例如,如果你希望禁用除 admin 之外的所有用户,请使用以下命令 −

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

Roles

角色决定用户可以对资源执行哪些操作。该决定主要取决于工作模式和规则。规则本身根据工作模式会采用不同的工作方式。

Working with Roles

连接到数据库后,可以使用对 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).

Creating New Roles

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

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

Working with Modes

规则用于确定属于特定角色的用户在数据库上可以做什么,工作模式用于确定 OrientDB 如何解释这些规则。工作模式有两种类型,由 1 和 0 指定。

  1. Allow All But (Rules) − 默认情况下,这是超级用户模式。使用规则指定此模式的例外情况。如果 OrientDB 未为所请求资源找到规则,则允许用户执行操作。主要对高级用户和管理员使用此模式。默认角色 admin 默认使用此模式,且没有例外规则。在数据库中写为 1。

  2. Deny All But (Rules) − 默认情况下,此模式不允许任何操作。使用规则指定此模式的例外情况。如果 OrientDB 为所请求资源找到规则,则允许用户执行操作。对所有经典用户使用此模式作为默认模式。默认角色 reader 和 writer 使用此模式。在数据库中写为 0。