OrientDB安全
像RDBMS一样,OrientDB还提供基于众所周知的概念,用户和角色的安全性。 每个数据库都有自己的用户,每个用户都有一个或多个角色。 角色是工作模式和权限集的组合。
Admin - 此用户可以访问数据库上的所有功能,而不受限制。
Reader - 此用户是只读用户。 读者可以查询数据库中的任何记录,但不能修改或删除它们。 它无法访问内部信息,例如用户和角色本身。
Writer - 此用户与用户阅读器相同,但它也可以创建,更新和删除记录。
使用角色
连接到数据库时,可以使用ORole类上的SELECT查询查询数据库上的当前角色。
允许所有(规则) - 默认情况下是超级用户模式。 使用规则指定此的例外。 如果OrientDB找不到所请求资源的规则,则它允许用户执行该操作。 此模式主要适用于高级用户和管理员。 默认角色admin默认情况下使用此模式,并且没有异常规则。 它在数据库中写为1。
拒绝所有(规则) - 默认情况下,此模式不允许任何内容。 使用规则指定此的例外。 如果OrientDB找到所请求资源的规则,则它允许用户执行操作。 将此模式用作所有经典用户的默认模式。 默认角色,reader和writer,使用此模式。 它在数据库中写为0。
用户
默认情况下,OrientDB为服务器中的所有数据库维护三个不同的用户 -Admin - 此用户可以访问数据库上的所有功能,而不受限制。
Reader - 此用户是只读用户。 读者可以查询数据库中的任何记录,但不能修改或删除它们。 它无法访问内部信息,例如用户和角色本身。
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找到所请求资源的规则,则它允许用户执行操作。 将此模式用作所有经典用户的默认模式。 默认角色,reader和writer,使用此模式。 它在数据库中写为0。