Учебники

OrientDB — Безопасность

Как и RDBMS, OrientDB также обеспечивает безопасность на основе известных концепций, пользователей и ролей. Каждая база данных имеет своих собственных пользователей, и у каждого пользователя есть одна или несколько ролей. Роли — это сочетание режимов работы и набора разрешений.

пользователей

По умолчанию OrientDB поддерживает трех разных пользователей для всей базы данных на сервере —

  • Администратор — этот пользователь имеет доступ ко всем функциям в базе данных без ограничений.

  • Читатель — Этот пользователь только для чтения. Читатель может запрашивать любые записи в базе данных, но не может изменять или удалять их. Он не имеет доступа к внутренней информации, такой как сами пользователи и роли.

  • Writer — этот пользователь такой же, как пользовательский читатель, но он также может создавать, обновлять и удалять записи.

Администратор — этот пользователь имеет доступ ко всем функциям в базе данных без ограничений.

Читатель — Этот пользователь только для чтения. Читатель может запрашивать любые записи в базе данных, но не может изменять или удалять их. Он не имеет доступа к внутренней информации, такой как сами пользователи и роли.

Writer — этот пользователь такой же, как пользовательский читатель, но он также может создавать, обновлять и удалять записи.

Работа с пользователями

Когда вы подключены к базе данных, вы можете запрашивать текущих пользователей в базе данных с помощью запросов SELECT в классе OUser .

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. Помните, что при этом вы должны установить статус ACTIVE и дать ему допустимую роль.

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, чтобы изменить его статус с АКТИВНОГО на СУСПЕДЕННЫЙ. Например, если вы хотите отключить всех пользователей, кроме администратора, используйте следующую команду —

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

Роли

Роль определяет, какие операции пользователь может выполнять с ресурсом. Главным образом, это решение зависит от режима работы и правил. Сами правила работают по-разному, в зависимости от режима работы.

Работа с ролями

Когда вы подключены к базе данных, вы можете запрашивать текущие роли в базе данных, используя запросы SELECT для класса ORole .

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.

Allow All But (Rules) — по умолчанию это режим суперпользователя. Укажите исключения для этого, используя правила. Если OrientDB не находит правил для запрошенного ресурса, он позволяет пользователю выполнить операцию. Используйте этот режим в основном для опытных пользователей и администраторов. Администратор роли по умолчанию использует этот режим по умолчанию и не имеет правил исключения. Это записано как 1 в базе данных.

Запретить все, но (правила) — по умолчанию этот режим ничего не разрешает. Укажите исключения для этого, используя правила. Если OrientDB находит правила для запрошенного ресурса, он позволяет пользователю выполнить операцию. Используйте этот режим по умолчанию для всех классических пользователей. Роли по умолчанию, читатель и писатель, используют этот режим. Это записано как 0 в базе данных.