Filtra accesso ai dati

I filtri controllano l'accesso di sicurezza ai valori dei dati nel cubo Essbase. Essi costituiscono la forma di sicurezza più granulare disponibile. I filtri definiscono un set di limitazioni da applicare a celle o intervalli di celle particolari del cubo. Gli amministratori o i manager assegnano il filtro per regolare l'accesso per utenti o gruppi.

Il ruolo di sicurezza di cui si dispone determina se è possibile creare, assegnare, modificare, copiare, rinominare o eliminare i filtri.

  • Se si dispone del ruolo Gestione applicazioni è possibile gestire qualsiasi filtro per qualsiasi utente o gruppo. I filtri non hanno effetto su di sé.
  • Se si dispone del ruolo Aggiornamento database è possibile gestire i filtri per le applicazioni create personalmente.
  • Se si dispone del ruolo Gestione database è possibile gestire i filtri all'interno delle applicazioni o dei cubi personali.
  • Se si dispone del ruolo Accesso a database (predefinito), si usufruisce dell'accesso in lettura ai valori dei dati di tutte le celle, a meno che l'accesso non sia ulteriormente limitato da filtri.

Creare un filtro utilizzando l'interfaccia Web Essbase

Nella sezione di personalizzazione del database dell'interfaccia Web Essbase è possibile creare un filtro di sicurezza che limita l'accesso del cubo agli utenti o ai gruppi.

È possibile creare più filtri per un cubo. Quando si modifica un filtro, le modifiche apportate alla definizione del filtro vengono propagate a tutti gli utenti che ne fanno uso.

  1. Passare all'editor di filtri.
    1. Nella Home page aprire l'applicazione, quindi aprire il database (cubo).
    2. Fare clic su Filtri.
  2. Fare clic su Aggiungi.
  3. Immettere un nome filtro nella casella di testo Nome filtro.
  4. Nell'editor di filtri fare clic su Aggiungi.
  5. Sotto Accesso fare clic e usare il menu a discesa per selezionare un livello di accesso.
    • Nessuno: i dati non possono essere recuperati né aggiornati

    • Lettura: i dati possono essere recuperati, ma non aggiornati

    • Scrittura: i dati possono essere recuperati e aggiornati

    • MetaRead: i metadati (nomi delle dimensioni e dei membri) possono essere recuperati e aggiornati

      Il livello di accesso MetaRead ha la priorità su tutti gli altri livelli di accesso. Nei file MetaRead esistenti vengono applicati filtri di dati aggiuntivi. L'uso di filtri sulle combinazioni di membri, mediante le relazioni AND, non si applica a MetaRead. MetaRead filtra ogni membro separatamente, mediante una relazione di tipo OR.

  6. Selezionare la riga sotto Specifica membro e immettere i nomi dei membri, quindi fare clic su Salva.

    È possibile filtrare i membri separatamente oppure filtrare combinazioni di membri. Specificare i nomi delle dimensioni o dei membri, i nomi alias, le combinazioni di membri, i set di membri definiti da funzioni o i nomi delle variabili di sostituzione, preceduti dal carattere E commerciale (&). Separare più voci con le virgole.

  7. Creare righe aggiuntive per il filtro in base alle esigenze.

    Se le righe dei filtri si sovrappongono o creano un conflitto, le specifiche dell'area cubo più dettagliate avranno la priorità su quelle meno dettagliate e i diritti di accesso più permissivi avranno la priorità su quelli meno permissivi. Ad esempio, se si concede a un utente l'accesso Lettura per Actual e l'accesso Scrittura per Jan, l'utente usufruirebbe dell'accesso Scrittura per Jan Actual.

  8. Fare clic su Convalida per assicurarsi che il filtro sia valido.
  9. Fare clic su Salva.

Per modificare un filtro, selezionare il cubo e fare clic sull'opzione Filtri nel pannello a sinistra. Modificare il filtro facendo clic sul nome e apportando le modifiche desiderate nell'editor di filtri. Per modificare una riga esistente, fare doppio clic su tale riga.

Per copiare, rinominare o eliminare, fare clic sul menu Azioni a destra del nome del filtro e scegliere un'opzione.

Dopo aver creato i filtri, assegnarli a utenti o gruppi.

Vedere Controllo dell'accesso alle celle del database mediante filtri di sicurezza.

Creare filtri dinamici efficienti

È possibile creare filtri dinamici basati su dati di origine esterna per ridurre il numero delle definizioni di filtro necessarie.

Invece di gestire un set di filtri di accesso ai dati non modificabili per numerosi utenti, è possibile filtrare l'accesso alle celle del cubo da dati di un'origine esterna, in base ai nomi dei membri e degli utenti.
A tale proposito si utilizza il metodo @datasourceLookup e le variabili $LoginUser e $LoginGroup con la sintassi della definizione dinamica dei filtri. I dati di origine esterna sono disponibili in un file csv o in una tabella relazionale. Per i dati di origine relazionale, è possibile caricare il file .csv in una tabella relazionale.

Sintassi dei filtri dinamici

Utilizzare la sintassi dei filtri dinamici per creare filtri flessibili che potranno essere assegnati a più utenti e gruppi.

Le righe dei filtri possono contenere gli elementi riportati di seguito nella definizione, oltre alle espressioni membro.

$loginuser

Questa variabile memorizza il valore dell'utente collegato corrente in runtime. Può essere utilizzata insieme al metodo @datasourcelookup.

$logingroup

Questa variabile memorizza il valore di tutti i gruppi al quale appartiene l'utente collegato corrente. Include sia i gruppi diretti che i gruppi indiretti. Quando viene utilizzato insieme al metodo @datasourcelookup, ogni gruppo viene esaminato individualmente rispetto all'origine dati.

@datasourcelookup

Questo metodo consente di recuperare i record da un'origine dati.

Sintassi

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
Parametro Descrizione
dataSourceName

Nome dell'origine dati esterna definita in Essbase. Per un'origine dati a livello di applicazione, anteporre il nome dell'applicazione e un punto come prefisso al nome.

columnName

Nome della colonna dall'origine dati da cercare per la variabile columnValue specificata.

columnValue

Valore da cercare in columnName.

returnColumnName

Nome della colonna dell'origine dati da cui restituire una lista di valori.

Nota

I nomi delle colonne dell'origine dati non devono utilizzare parole riservate SQL come USER, GROUP o ROLE. L'uso di parole riservate può causare errori di analisi SQL o un funzionamento imprevisto del filtro.

Descrizione

Una chiamata @datasourcelookup è equivalente alla query SQL seguente:

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup esamina l'origine dati specificata e cerca i record in cui columnName contiene columnValue. Se si specifica columnValue come $loginuser, questo metodo cercherà i record in cui columnName contiene il nome dell'utente collegato corrente.

Essbase forma la riga di definizione del filtro combinando gli elementi della lista come stringa separata da virgole. Se un record qualsiasi contiene caratteri speciali, spazi o solo numeri, questi elementi vengono racchiusi tra virgolette.

Nota

Il parametro @options può essere utilizzato per controllare il funzionamento degli errori di ricerca. Quando stringLookup=true, gli errori di ricerca vengono considerati come errori irreversibili e non vengono restituiti risultati di filtro.

Esempi

Racchiudere i parametri tra virgolette.

La chiamata seguente esamina un'origine dati globale e restituisce la lista dei nomi di negozio (store) di cui Mary è la responsabile.

@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")

La chiamata seguente esamina un'origine dati a livello di applicazione e restituisce la lista dei nomi di negozio (store) di cui l'utente collegato corrente è il responsabile.

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")

La chiamata seguente esamina un'origine dati a livello di applicazione e restituisce la lista dei nomi di negozio (store) in cui il reparto corrisponde a uno qualsiasi dei gruppi ai quali appartiene l'utente collegato.

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")

Se l'utente collegato appartiene a 3 gruppi, il metodo @datasourcelookup indicato in Alto restituirà tutti i valori colonna corrispondenti per ciascun gruppo.

Nell'esempio seguente vengono utilizzate le funzioni SQL all'interno di un'espressione di filtro dinamico.

@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")

Nell'esempio seguente viene eseguita una valutazione con distinzione tra maiuscole e minuscole utilizzando funzioni di involucro esplicite.

@datasourceLookup("Sample.StoreManagersDS",UPPER("STOREMANAGER"),UPPER("$loginuser"),"STORE")

Nell'esempio seguente vengono restituiti i negozi appartenenti al reparto Vendite o Marketing.

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")

Nell'esempio seguente viene utilizzata una funzione di set di membri con @datasourceLookup.

@DESCENDANTS(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE"))

Nell'esempio seguente vengono utilizzate le funzioni del set di membri nidificati con una ricerca dell'origine dati.

@CHILDREN(@LSIBLING(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")))

Nell'esempio seguente viene utilizzato un comportamento di ricerca rigoroso. Se la ricerca non riesce, non viene restituito alcun risultato del filtro.

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))

Workflow per la creazione di filtri dinamici

Per creare i filtri dinamici utilizzare il workflow generale riportato di seguito.

Per questo workflow di filtri dinamici si suppone che l'utente disponga già di un cubo e abbia eseguito il provisioning di utenti e gruppi.

  1. Identificare un'origine dati come file o come origine relazionale.
  2. Definire la connessione e l'origine dati in Essbase, globalmente oppure a livello di applicazione.
  3. Creare filtri a livello di cubo. Andare al cubo e scegliere Filtri.
  4. Definire le righe per ogni filtro con la sintassi del filtro dinamico per utilizzare la variabile $loginuser e la variabile $logingroup in base alle esigenze e il metodo @datasourcelookup.
  5. Assegnare i filtri agli utenti o ai gruppi.
  6. Se il filtro è stato assegnato a un gruppo, assegnare il gruppo all'applicazione da filtrare. Andare all'applicazione e scegliere Autorizzazioni.

Esempio di filtro dinamico

Il filtro dinamico seguente funziona con il cubo Efficient.UserFilters, disponibile nella galleria come modello campione.


Filtro dinamico con tre righe che concede l'accesso MetaRead all'utente collegato.

Per ulteriori informazioni sulle modalità di creazione e applicazione del filtro dinamico, scaricare il modello di cartella di lavoro, Efficient_Filters.xlsx, dalla sezione Tecnico della galleria e attenersi alle istruzioni README della cartella di lavoro. La galleria è disponibile nella sezione File dell'interfaccia Web di Essbase.