OrientDB - Segurança

Como o RDBMS, o OrientDB também fornece segurança com base em conceitos, usuários e funções bem conhecidos. Cada banco de dados possui seus próprios usuários e cada usuário possui uma ou mais funções. As funções são a combinação de modos de trabalho e conjunto de permissões.

Comercial

Por padrão, o OrientDB mantém três usuários diferentes para todos os bancos de dados no servidor -

  • Admin - Este usuário tem acesso a todas as funções do banco de dados, sem limitação.

  • Reader- Este usuário é um usuário somente leitura. O leitor pode consultar qualquer registro no banco de dados, mas não pode modificá-lo ou excluí-lo. Ele não tem acesso a informações internas, como os próprios usuários e funções.

  • Writer - Este usuário é igual ao usuário leitor, mas também pode criar, atualizar e excluir registros.

Trabalho com usuários

Quando você está conectado a um banco de dados, você pode consultar os usuários atuais no banco de dados usando SELECT consultas no OUser classe.

orientdb> SELECT RID, name, status FROM OUser

Se a consulta acima for executada com sucesso, você obterá a seguinte saída.

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

Criação de um novo usuário

Para criar um novo usuário, use o comando INSERT. Lembre-se, ao fazer isso, você deve definir o status como ACTIVE e atribuir a ele uma função válida.

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

Atualizando usuários

Você pode alterar o nome do usuário com a instrução UPDATE.

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

Da mesma forma, você também pode alterar a senha do usuário.

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

OrientDB salva a senha em formato hash. O gatilhoOUserTrigger criptografa a senha de forma transparente antes de salvar o registro.

Desativando usuários

Para desabilitar um usuário, use UPDATE para mudar seu status de ACTIVE para SUSPENDED. Por exemplo, se você deseja desabilitar todos os usuários, exceto o administrador, use o seguinte comando -

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

Funções

Uma função determina quais operações um usuário pode executar em um recurso. Principalmente, essa decisão depende do modo de trabalho e das regras. As próprias regras funcionam de maneira diferente, dependendo do modo de trabalho.

Trabalho com funções

Quando você está conectado a um banco de dados, você pode consultar as funções atuais no banco de dados usando SELECT consultas no ORole classe.

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

Se a consulta acima for executada com sucesso, você obterá a seguinte saída.

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

Criação de novas funções

Para criar uma nova função, use a instrução INSERT.

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

Trabalhando com Modos

Onde as regras determinam o que os usuários pertencentes a certas funções podem fazer nos bancos de dados, os modos de trabalho determinam como o OrientDB interpreta essas regras. Existem dois tipos de modos de trabalho, designados por 1 e 0.

  • Allow All But (Rules)- Por padrão, é o modo de superusuário. Especifique exceções a isso usando as regras. Se o OrientDB não encontrar regras para um recurso solicitado, ele permite que o usuário execute a operação. Use este modo principalmente para usuários avançados e administradores. A função admin padrão usa este modo por padrão e não tem regras de exceção. É escrito como 1 no banco de dados.

  • Deny All But (Rules)- Por padrão, este modo não permite nada. Especifique exceções a isso usando as regras. Se o OrientDB encontrar regras para um recurso solicitado, ele permitirá que o usuário execute a operação. Use este modo como padrão para todos os usuários clássicos. As funções padrão, leitor e escritor, usam este modo. Ele é escrito como 0 no banco de dados.