2.5. Utenti e Gruppi

2.5.1. Premesse

Sanet prevede due tipi di interfacce utente per l'accesso ai dati:

In entrambi i casi, l'accesso ai dati di Sanet viene regolato attraverso la gestione di:

  • utenze con credenziali di accesso (username, password).

  • gruppi di utenze.

  • capability generiche.

  • permessi di accesso in lettura/scrittura alle singole risorse configurate.

2.5.2. Utenti

2.5.2.1. Dati di base

Questi sono i dati associati ad ogni utenza:

Dato

Descrizione

username

Username utilizzato per le procedure di autenticazione

firstname

Nome associato all'utente.

lastname

Cognome associato all'utente.

email

Indirizzo email associato all'utenza.

2.5.2.2. Tipi di utenti

Si distinguono due tipi di utenti:

  • Superutenti o amministratori o admin.

    I superutenti possono accedere a tutte le funzionalita' del sistema senza nessun tipo di restrizione.

  • Utenti (normali)

    L'accesso alle diverse funzionalita' del sistema e' regolamentato da un sistema di gruppi/capabilities descritto in seguito.

2.5.2.3. Abilitazione/Disabilitazione utenti

Un utente puo' essere attivo o disabilitato.

Gli utenti (anche admin) disabilitati non possono effettuare il login (indipendentemente dalla validita' delle credenziali usate).

2.5.2.4. Username lowercase

Gli username delle utenze in sanet3 devono rispettare le seguenti regole:

  • possono contenere solo carattere alfabetici lowercase

  • possono contenere numeri (ma non possono iniziare con numeri)

Important

L'interfaccia web di Sanet3 puo' essere configurata per accettare o meno username anche con caratteri maiuscoli alfabetici in maiuscolo. Per alterare questo comportamento bisogna cambiare la costante AUTH_WEB_LOGIN_USERNAME_CASE_SENSITIVE nel file settings.py.

Important

Anche se la procedura di login WEB puo' supportare username con caratteri in maiuscolo, i moduli di autenticazione gestiscono sempre e comunque username con caratteri solo in minuscolo.

2.5.2.5. Password e metodi di autenticazione

Il sistema di autenticazione degli utenti (verifica username/password) e' regolato da moduli di autenticazione.

E' possibile utilizzare piu' moduli di autenticazione contemporaneamente.

Si rimanda alla sezione Configurazione autenticazione per dettagli.

2.5.3. Gruppi

2.5.3.1. Introduzione

Le diverse funzionalita' di Sanet sono accessibili tramite interfaccia utente da parte di un utente solo se questo e' in possesso delle opportune autorizzazioni.

Per semplificare la configurazione della autorizzazioni, gli utenti sono organizzati logicamente in gruppi.

Le autorizzazioni/permessi vengono assegnate ad un gruppo.

Gli utenti ereditano le autorizzazioni/permessi dai gruppi di cui fanno parte.

Valgono le seguenti regole di associazione utente/gruppo:

  1. Un gruppo puo' contenere zero o piu' utenti.

  2. Un utente puo' far parte di piu' gruppi.

Note

come gia' detto, gli utenti superuser o amministratori fanno eccezione e possono sempre accedere a tutte le funzionalita/risorse del sistema.

2.5.3.2. Gruppi e Tenant

La visibilita' dei dati di un tenant da parte di un utente e' sempre mediata attraverso l'appartenenza ad un gruppo.

Un gruppo puo' essere configurato per accedere ai dati di monitoraggio di zero o piu' tenant.

Tutti gli utenti appartenti ad un gruppo, possono vedere i dati dei tenant visibili da quel gruppo

digraph prova {
user1;
user2;
user3;

group1;
group2;

tenant1;
tenant2;
tenant3;

user1 -> group1;
user2 -> group1;
user3 -> group2;
user3 -> group3;

group1 -> tenant1;
group3 -> tenant1;
group2 -> tenant2;
group2 -> tenant3;
}

2.5.3.2.1. Tenant di default per utente

Per ogni utente e' possibile indicare un tenant di default tra quelli visibili da quell'utente.

2.5.3.2.1.1. Accesso al tenanti di default tramite interfaccia web

Quando un utente effettua la procedura di autenticazione viene "posizionato" sul suo tenant di default.

L'algoritmo per la sezione del tenant di default e' la seguente:

step 1) Se esiste un tenant configurato di default, restituisce quello.

step 2) Trova tutti i tenant visibili dai gruppi a cui appartiene l'utente.

            Se tra questi c'e' il tenant primario, restituisce quello.

            Se non c'e' nessun primario, restituisce il primo tenant in ordine alfabetico.

step 3) Se l'utente e' admin, comunque visualizza il tenant primary.

2.5.4. Gruppi e Capabilities generiche

Le azioni che gruppo e' autorizzato o meno a fare da interfaccia utente sui dati di Sanet sono regolamentate da un sistema di capabilites.

Ad ogni azione e' associata una capability. Se un gruppo e' autorizzato a quella capability puo' effettuare l'azione corrispondente.

Questo e' l'elenco delle capability previste:

Core

Configurazione template di un tenant

Codice

Descrizione

core.template.dg.edit

Creare/modificare/cancellare datagroup-template

Codice

Descrizione

core.template.element.edit

Creare/modificare/cancellare element-template (node-template,ecc.)

Configurazione elementi di monitoraggio di un tenant

Codice

Descrizione

core.element.create

Creare un elemento (node, interface, storage, service, device)

core.element.delete

Cancellare un elemento

core.element.conf

Modificare gli attributi di un elemento (nome, xform, ecc.)

core.element.conf_monitoring

Aggiungere/cancellare/modificare i datagroup di un elemento

core.link.edit

Aggiungere/cancellare/modificare link tra interfacce

Gestione note

Codice

Descrizione

notes.note.tenant.edit

Aggiungi/rimuovi note al tenant

notes.note.element.edit

Aggiungi/rimuovi note di un elemento

notes.note.tag.edit

Aggiungi/rimuovi note di un tag

Gestione Tagging

Codice

Descrizione

tags.tagtree.create

Crea nuovo

tags.tagtree.delete

Cancella

tags.tagtree.edit

Modifica flag (allnodes, nostate, ecc.)

tags.tag.create

Create a tag

tags.tag.delete

Delete a tag

tags.tag.edit

Edit tag ( change tag map, ecc..)

tags.tag.tag_element

Tag/Untag

tags.tag.state.force_reload

Force tag's state reload

Mappe Logiche

Codice

Descrizione

maps.logic.create

Create a logic map

maps.logic.delete

Delete a logic map

maps.logic.edit

Edit a logic map

Geo referenziazione

Codice

Descrizione

geomaps.set_pos

Set geo position of an element

Reportistica

Codice

Descrizione

report.read

Vedere i report (sia normali che periodici)

report.normal.create

Creare un nuovo report

report.normal.delete

Cancellare un report

report.periodic.create

Creare un nuovo report periodico

report.periodic.delete

Cancellare un report periodico

report.normal.process

Forzare la generazione di un report via web

Sistema di Discovery

Codice

Descrizione

discovery.read

Visualizzare lo stato del discovery

discovery.element.edit

Modificare un elemento scoperto in fase di discovery

discovery.element.link

Collegare/scollegare un elemento scoperto con un elemento di monitoraggio

discovery.element.edit

Modificare un elemento scoperto in fase di discovery

discovery.element.link

Collegare/scollegare un elemento scoperto con un elemento di monitoraggio

Interfaccia Web

Codice

Descrizione

gui.view_sensible_data

Mostare/Non mostare dati "sensibili" via web (community, SNMPv3)

gui.view.extra_menus

Vedere o meno i pulsanti per accedere alle applicazioni esterne

gui.view.system_status

Vedere lo stato del sistema dal pulsante system

Gestione WebScenario

Codice

Descrizione

webscenario.access

Permette di accedere ai webscenario

webscenario.element.create

Crea un nuovo webscenario

Per la configurazione delle capability si rimanda alla sezione Configurazione.

2.5.5. Permessi

2.5.5.1. Ownership

Viene definito owner (o proprietario) l'utente che crea una determinata entita' nel database di Sanet.

  • L'owner di un datagroup-template e' l'utente che crea il template.

  • L'owner di un element-template (node-template, interface-template, ecc.) e' l'utente che crea il template.

  • L'owner di un nodo e tutte le sue sotto-entita' (e datagroup/condition/ecc.) e' l'utente che ha creato il nodo.

  • L'owner di un tag e' l'utente che ha creato il tagtree in cui risiede quel tag.

L'utente owner ha sempre accesso alle entita' da lui create, indipendentemente dai gruppi/permessi configurati.

Quando un utente viene rimosso dal sistema, le entita' da lui create assumono owner nullo.

Important

Solo gli utenti admin possono vedere/accedere ad entita' con owner nullo.

Important

Solo gli utenti admin possono cambiare l'owner associato ad una entita'.

2.5.5.2. Gruppi e tipologie di permessi (ACL)

Esistono due tipologie di permessi che possono essere configurate per accedere ad una entita' in Sanet:

  • READ-ONLY (o semplicemente READ): l'utente in possesso di questo permesso puo' vedere una entita'.

  • READ-WRITE: l'utente in possesso di questo permesso puo' vedere e modificare una entita'.

I permessi vengono assegnati a livello di gruppo per ogni tenant.

Un utente eredita tutti i permessi di tutti gruppi a cui appartiene.

In presenza di due tipi di permessi diversi sulla stessa entita', eredita il permesso piu' autorizzativo (READ-WRITE vince su READ-ONLY)

2.5.5.3. Permessi dei gruppi sui datagroup-template di un tenant

I permessi read/write su un datagroup-template di un tenant deve essere indicato per ogni gruppo.

2.5.5.4. Permessi dei gruppi sugli element-template

I permessi read/write su un datagroup-template di un tenant deve essere indicato per ogni gruppo.

2.5.5.5. Permessi dei gruppi su tagtree

I permessi read/write su un datagroup-template di un tenant deve essere indicato per ogni gruppo.

2.5.5.6. Permessi dei gruppi sugli elementi di monitoraggio

L'accesso in read/write agli elementi di monitoraggio viene configurato indirettamente tramite il tagging.

Se un elemento di monitoraggio compare all'interno di un tag definito in un tagtree, un utente ha accesso a quell'elemento con i permessi corrispondenti ai permessi che ha sul tagtree.

Important

Un utente puo' taggare un elemento in un tagtree su cui ha permessi READ-WRITE solo se ha gia' precedenti permessi READ-WRITE (su altri tagtree).

2.5.5.7. Permessi e datagroup-template della LIBRARY

Solo gli utenti admin possono accedere in scrittura sui datagroup-template definiti nella library.

Gli utenti normali possono accedere in lettura ai datagroup-template definiti nella library.

2.5.6. Utente predefinito e gruppo predefinito

Quando il sistema viene installato la prima volta, viene creato automaticamente un utente amministratore predefinito e un gruppo associato a questo utente.

Note

Username e group name sono modificabili da file di configurazione, vedi DEFAULT_ADMIN_USERNAME in {{SANET_INSTALL_DIR}}/conf/default_settings.py o anche:

$ sanet-data get_config DEFAULT_ADMIN_USERNAME

$ sanet-data get_config DEFAULT_ADMIN_GROUP