OrientDB - Seguridad

Al igual que RDBMS, OrientDB también proporciona seguridad basada en conceptos, usuarios y roles bien conocidos. Cada base de datos tiene sus propios usuarios y cada usuario tiene uno o más roles. Los roles son la combinación de modos de trabajo y un conjunto de permisos.

Usuarios

De forma predeterminada, OrientDB mantiene tres usuarios diferentes para todas las bases de datos en el servidor:

  • Admin - Este usuario tiene acceso a todas las funciones de la base de datos sin limitación.

  • Reader- Este usuario es un usuario de solo lectura. El lector puede consultar cualquier registro de la base de datos, pero no puede modificarlo ni eliminarlo. No tiene acceso a información interna, como los propios usuarios y roles.

  • Writer - Este usuario es el mismo que el lector de usuarios, pero también puede crear, actualizar y eliminar registros.

Trabajar con usuarios

Cuando está conectado a una base de datos, puede consultar los usuarios actuales en la base de datos utilizando SELECT consultas sobre el OUser clase.

orientdb> SELECT RID, name, status FROM OUser

Si la consulta anterior se ejecuta correctamente, obtendrá el siguiente resultado.

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

Crear un nuevo usuario

Para crear un nuevo usuario, use el comando INSERT. Recuerde, al hacerlo, debe establecer el estado en ACTIVO y darle un rol válido.

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

Actualización de usuarios

Puede cambiar el nombre del usuario con la instrucción UPDATE.

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

De la misma forma, también puede cambiar la contraseña del usuario.

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

OrientDB guarda la contraseña en formato hash. El gatilloOUserTrigger cifra la contraseña de forma transparente antes de guardar el registro.

Desactivación de usuarios

Para deshabilitar a un usuario, use ACTUALIZAR para cambiar su estado de ACTIVO a SUSPENDIDO. Por ejemplo, si desea deshabilitar a todos los usuarios excepto al administrador, use el siguiente comando:

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

Roles

Un rol determina qué operaciones puede realizar un usuario contra un recurso. Básicamente, esta decisión depende del modo de trabajo y las reglas. Las propias reglas funcionan de manera diferente, dependiendo del modo de trabajo.

Trabajar con roles

Cuando está conectado a una base de datos, puede consultar los roles actuales en la base de datos usando SELECT consultas sobre el ORole clase.

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

Si la consulta anterior se ejecuta correctamente, obtendrá el siguiente resultado.

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

Crear nuevos roles

Para crear un nuevo rol, use la instrucción INSERT.

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

Trabajar con modos

Donde las reglas determinan lo que los usuarios que pertenecen a ciertos roles pueden hacer en las bases de datos, los modos de trabajo determinan cómo OrientDB interpreta estas reglas. Hay dos tipos de modos de trabajo, designados por 1 y 0.

  • Allow All But (Rules)- Por defecto es el modo superusuario. Especifique excepciones a esto usando las reglas. Si OrientDB no encuentra reglas para un recurso solicitado, entonces permite al usuario ejecutar la operación. Utilice este modo principalmente para usuarios avanzados y administradores. El rol de administrador predeterminado usa este modo de manera predeterminada y no tiene reglas de excepción. Está escrito como 1 en la base de datos.

  • Deny All But (Rules)- Por defecto, este modo no permite nada. Especifique excepciones a esto usando las reglas. Si OrientDB encuentra reglas para un recurso solicitado, permite al usuario ejecutar la operación. Utilice este modo como predeterminado para todos los usuarios clásicos. Los roles predeterminados, lector y escritor, usan este modo. Está escrito como 0 en la base de datos.