OrientDB - Sécurité
Comme le SGBDR, OrientDB fournit également une sécurité basée sur des concepts, des utilisateurs et des rôles bien connus. Chaque base de données a ses propres utilisateurs et chaque utilisateur a un ou plusieurs rôles. Les rôles sont la combinaison de modes de travail et d'un ensemble d'autorisations.
Utilisateurs
Par défaut, OrientDB gère trois utilisateurs différents pour toutes les bases de données du serveur -
Admin - Cet utilisateur a accès à toutes les fonctions de la base de données sans limitation.
Reader- Cet utilisateur est un utilisateur en lecture seule. Le lecteur peut interroger tous les enregistrements de la base de données, mais ne peut ni les modifier ni les supprimer. Il n'a pas accès aux informations internes, telles que les utilisateurs et les rôles eux-mêmes.
Writer - Cet utilisateur est le même que le lecteur utilisateur, mais il peut également créer, mettre à jour et supprimer des enregistrements.
Travailler avec les utilisateurs
Lorsque vous êtes connecté à une base de données, vous pouvez interroger les utilisateurs actuels sur la base de données en utilisant SELECT requêtes sur OUser classe.
orientdb> SELECT RID, name, status FROM OUser
Si la requête ci-dessus est exécutée avec succès, vous obtiendrez la sortie suivante.
---+--------+--------+--------
# | @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).
Créer un nouvel utilisateur
Pour créer un nouvel utilisateur, utilisez la commande INSERT. N'oubliez pas, ce faisant, vous devez définir le statut sur ACTIVE et lui attribuer un rôle valide.
orientdb> INSERT INTO OUser SET
name = 'jay',
password = 'JaY',
status = 'ACTIVE',
roles = (SELECT FROM ORole WHERE name = 'reader')
Mettre à jour les utilisateurs
Vous pouvez modifier le nom de l'utilisateur avec l'instruction UPDATE.
orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'
De la même manière, vous pouvez également modifier le mot de passe de l'utilisateur.
orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'
OrientDB enregistre le mot de passe dans un format de hachage. Le déclencheurOUserTrigger crypte le mot de passe de manière transparente avant d'enregistrer l'enregistrement.
Désactiver les utilisateurs
Pour désactiver un utilisateur, utilisez UPDATE pour changer son état de ACTIVE à SUSPENDED. Par exemple, si vous souhaitez désactiver tous les utilisateurs à l'exception de l'administrateur, utilisez la commande suivante -
orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'
Les rôles
Un rôle détermine les opérations qu'un utilisateur peut effectuer sur une ressource. Cette décision dépend principalement du mode de fonctionnement et des règles. Les règles elles-mêmes fonctionnent différemment, selon le mode de fonctionnement.
Travailler avec des rôles
Lorsque vous êtes connecté à une base de données, vous pouvez interroger les rôles actuels sur la base de données en utilisant SELECT requêtes sur ORole classe.
orientdb> SELECT RID, mode, name, rules FROM ORole
Si la requête ci-dessus est exécutée avec succès, vous obtiendrez la sortie suivante.
--+------+----+--------+-------------------------------------------------------
# |@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).
Créer de nouveaux rôles
Pour créer un nouveau rôle, utilisez l'instruction INSERT.
orientdb> INSERT INTO ORole SET name = 'developer', mode = 0
Travailler avec les modes
Lorsque les règles déterminent ce que les utilisateurs appartenant à certains rôles peuvent faire sur les bases de données, les modes de travail déterminent comment OrientDB interprète ces règles. Il existe deux types de modes de fonctionnement, désignés par 1 et 0.
Allow All But (Rules)- Par défaut, c'est le mode super utilisateur. Spécifiez des exceptions à cela à l'aide des règles. Si OrientDB ne trouve aucune règle pour une ressource demandée, alors il permet à l'utilisateur d'exécuter l'opération. Utilisez ce mode principalement pour les utilisateurs expérimentés et les administrateurs. L'administrateur de rôle par défaut utilise ce mode par défaut et n'a pas de règles d'exception. Il est écrit comme 1 dans la base de données.
Deny All But (Rules)- Par défaut, ce mode n'autorise rien. Spécifiez des exceptions à cela à l'aide des règles. Si OrientDB trouve des règles pour une ressource demandée, alors il permet à l'utilisateur d'exécuter l'opération. Utilisez ce mode par défaut pour tous les utilisateurs classiques. Les rôles par défaut, lecteur et rédacteur, utilisent ce mode. Il est écrit 0 dans la base de données.