OrientDB - Sicurezza

Come RDBMS, anche OrientDB fornisce sicurezza basata su concetti, utenti e ruoli ben noti. Ogni database ha i propri utenti e ogni utente ha uno o più ruoli. I ruoli sono la combinazione di modalità di lavoro e set di autorizzazioni.

Utenti

Per impostazione predefinita, OrientDB mantiene tre diversi utenti per tutti i database nel server -

  • Admin - Questo utente ha accesso a tutte le funzioni del database senza limitazioni.

  • Reader- Questo utente è un utente di sola lettura. Il lettore può interrogare qualsiasi record nel database, ma non può modificarli o eliminarli. Non ha accesso alle informazioni interne, come gli utenti e i ruoli stessi.

  • Writer - Questo utente è uguale al lettore dell'utente, ma può anche creare, aggiornare ed eliminare record.

Lavorare con gli utenti

Quando si è connessi a un database, è possibile interrogare gli utenti correnti del database utilizzando SELECT query su OUser classe.

orientdb> SELECT RID, name, status FROM OUser

Se la query precedente viene eseguita correttamente, otterrai il seguente output.

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

Creazione di un nuovo utente

Per creare un nuovo utente, usa il comando INSERT. Ricorda, così facendo, devi impostare lo stato su ATTIVO e assegnargli un ruolo valido.

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

Aggiornamento degli utenti

È possibile modificare il nome per l'utente con l'istruzione UPDATE.

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

Allo stesso modo, puoi anche cambiare la password per l'utente.

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

OrientDB salva la password in un formato hash. Il grillettoOUserTrigger crittografa la password in modo trasparente prima di salvare il record.

Disabilitazione degli utenti

Per disabilitare un utente, utilizzare UPDATE per cambiare il suo stato da ATTIVO a SOSPESO. Ad esempio, se desideri disabilitare tutti gli utenti ad eccezione dell'amministratore, utilizza il seguente comando:

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

Ruoli

Un ruolo determina le operazioni che un utente può eseguire su una risorsa. Principalmente, questa decisione dipende dalla modalità di lavoro e dalle regole. Le regole stesse funzionano in modo diverso, a seconda della modalità di lavoro.

Lavorare con i ruoli

Quando si è connessi a un database, è possibile interrogare i ruoli correnti nel database utilizzando SELECT query su ORole classe.

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

Se la query precedente viene eseguita correttamente, otterrai il seguente output.

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

Creazione di nuovi ruoli

Per creare un nuovo ruolo, utilizzare l'istruzione INSERT.

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

Lavorare con le modalità

Laddove le regole determinano ciò che gli utenti che appartengono a determinati ruoli possono fare sui database, le modalità di lavoro determinano come OrientDB interpreta queste regole. Esistono due tipi di modalità di lavoro, designate da 1 e 0.

  • Allow All But (Rules)- Per impostazione predefinita è la modalità super utente. Specificare le eccezioni a questo utilizzando le regole. Se OrientDB non trova regole per una risorsa richiesta, consente all'utente di eseguire l'operazione. Utilizzare questa modalità principalmente per utenti esperti e amministratori. Il ruolo predefinito admin utilizza questa modalità per impostazione predefinita e non ha regole di eccezione. È scritto come 1 nel database.

  • Deny All But (Rules)- Per impostazione predefinita questa modalità non consente nulla. Specificare le eccezioni a questo utilizzando le regole. Se OrientDB trova le regole per una risorsa richiesta, consente all'utente di eseguire l'operazione. Usa questa modalità come predefinita per tutti gli utenti classici. I ruoli predefiniti, lettore e scrittore, utilizzano questa modalità. È scritto come 0 nel database.