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.