Condividi tramite


Concedere l'accesso personalizzato ai dati della dimensione (Analysis Services)

Si applica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Dopo avere abilitato l'accesso in lettura a un cubo, è possibile impostare ulteriori autorizzazioni che consentono o negano in modo esplicito l'accesso ai membri della dimensione, comprese le misure presenti all'interno della Dimensione di tipo misure in cui sono contenute tutte le misure usate in un cubo. Se ad esempio sono presenti più categorie di rivenditori, si potrebbe voler impostare le autorizzazioni per escludere i dati per un tipo di attività specifico. La seguente figura mostra l'effetto che si ottiene prima e dopo avere negato l'accesso al tipo di attività Warehouse nella dimensione Reseller.

Tabelle pivot con e senza tabelle pivot del membro della dimensione

Per impostazione predefinita, se è possibile leggere i dati da un cubo SQL Server Analysis Services, si dispone automaticamente delle autorizzazioni di lettura per tutte le misure e i membri della dimensione associati a tale cubo. Sebbene questo comportamento possa essere sufficiente per molti scenari, talvolta i requisiti di sicurezza richiedono una strategia di autorizzazione più segmentata con vari livelli di accesso per diversi utenti nella stessa dimensione.

È possibile limitare l'accesso scegliendo i membri a cui consentire (AllowedSet) o negare (DeniedSet) l'accesso. A tale scopo, selezionare o deselezionare i membri della dimensione per includere o escludere un membro dal ruolo.

La sicurezza delle dimensioni di base è la più semplice. È sufficiente selezionare gli attributi della dimensione e le gerarchie di attributi da includere o escludere nel ruolo. La sicurezza avanzata è più complessa e richiede una certa esperienza nella creazione di script MDX. Di seguito vengono descritti entrambi gli approcci.

Nota

Le istruzioni seguenti presuppongono una connessione client che esegue query in MDX. Se il client usa DAX, ad esempio Power View in Power BI, la sicurezza delle dimensioni non è evidente nei risultati della query.

Prerequisiti

Negli scenari di accesso personalizzati non è possibile usare tutte le misure e i membri della dimensione. La connessione non riesce se un ruolo limita l'accesso a una misura o un membro predefinito oppure limita l'accesso a misure che fanno parte di espressioni di misura.

Verificare la presenza di limitazioni alla sicurezza delle dimensioni: misure predefinite, membri predefiniti e misure usate in espressioni di misura

  1. In SQL Server Management Studio fare clic con il pulsante destro del mouse su un cubo e scegliere Cubo script come | ALTER To | New Editor di query Window.

  2. Cercare DefaultMeasure. Ne verrà trovato uno per il cubo e uno per ogni prospettiva. Quando si definisce la sicurezza delle dimensioni evitare di limitare l'accesso alle misure predefinite.

  3. Cercare quindi MeasureExpression. Un'espressione di misura è una misura, basata su un calcolo, in cui il calcolo include spesso altre misure. Verificare che la misura da limitare non sia usata in un'espressione. In alternativa, procedere con la limitazione dell'accesso, assicurandosi solo di escludere anche tutti i riferimenti a tale misura in tutto il cubo.

  4. Cercare infine DefaultMember. Prendere nota di tutti gli attributi che fungono da membro predefinito di un attributo. Evitare di definire limitazioni in tali attributi quando si configura la sicurezza delle dimensioni.

Sicurezza delle dimensioni di base

  1. In SQL Server Management Studio connettersi all'istanza di SQL Server Analysis Services, espandere Ruoli per il database appropriato in Esplora oggetti e quindi fare clic su un ruolo del database (o creare un nuovo ruolo di database).

    Il ruolo dovrebbe già disporre dell'accesso di lettura al cubo. Vedere Concedere autorizzazioni del cubo o del modello (Analysis Services) se è necessaria assistenza con questo passaggio.

  2. In Dimension Data | Basic selezionare la dimensione per cui si impostano le autorizzazioni.

  3. Scegliere la gerarchia dell'attributo. Non tutti gli attributi saranno disponibili. Nell'elenco Gerarchia dell'attributo sono visualizzati solo gli attributi con AttributeHierarchyEnabled .

  4. Scegliere i membri a cui consentire o negare l'accesso. L'impostazione predefinita è consentire l'accesso tramite l'opzione Seleziona tutti i membri . È consigliabile usare questa impostazione predefinita e quindi deselezionare i singoli membri che non devono essere visibili agli account utente e di gruppo di Windows nel riquadro Appartenenze tramite questo ruolo. In questo modo i nuovi membri aggiunti nelle operazioni di elaborazione successive saranno automaticamente disponibili per gli utenti che si connettono tramite questo ruolo.

    In alternativa, è possibile usare l'opzione Deseleziona tutti i membri per revocare l'accesso a tutti i membri e quindi selezionare i membri a cui consentire l'accesso. Nelle successive operazioni di elaborazione, i nuovi membri non saranno visibili finché non si modifica manualmente la sicurezza dei dati della dimensione per consentirne l'accesso.

  5. Facoltativamente, fare clic su Avanzate e selezionare Consenti totali visualizzati per questa gerarchia attributi. Questa opzione ricalcola le aggregazioni in base ai membri disponibili tramite il ruolo.

    Nota

    Quando si applicano le autorizzazioni che escludono i membri della dimensione, i totali aggregati non vengono ricalcolati automaticamente. Si supponga che il membro Totale di una gerarchia attributi restituisca 200 prima dell'applicazione delle autorizzazioni. Dopo avere applicato le autorizzazioni che negano l'accesso ad alcuni membri, Totale restituisce ancora 200, sebbene i valori del membro visibili all'utente siano molti di meno. Per non confondere gli utenti del cubo, è possibile configurare il membro Totale in modo che rappresenti l'aggregazione solo dei membri ai quali i membri del ruolo hanno accesso anziché l'aggregazione di tutti i membri della gerarchia attributi. Per richiamare questo comportamento, è possibile abilitare Visual Totals nella scheda Avanzate durante la configurazione della sicurezza delle dimensioni. Una volta abilitato, l'aggregato viene calcolato in fase di query anziché recuperato dalle aggregazioni precalcolate. Questa operazione può influire in modo significativo sulle prestazioni. Usarla pertanto solo quando è necessario.

Nascondere le misure

In Concedere l'accesso personalizzato ai dati delle celle (Analysis Services) è stato spiegato che nasconde completamente tutti gli aspetti visivi di una misura, e non solo i dati delle celle, richiedono autorizzazioni per i membri della dimensione. Questa sezione descrive come negare l'accesso ai metadati degli oggetti di una misura.

  1. In Dimension Data | Basic scorrere verso il basso l'elenco Dimensioni fino a raggiungere le dimensioni del cubo e quindi selezionare Misura dimensione.

  2. Nell'elenco delle misure deselezionare la casella di controllo per le misure che non devono essere visualizzate dagli utenti che si connettono tramite questo ruolo.

Nota

Verificare i prerequisiti per informazioni su come identificare le misure che possono violare la sicurezza dei ruoli.

Sicurezza delle dimensioni avanzata

Se si è esperti di MDX, un altro approccio consiste nello scrivere espressioni MDX che impostano i criteri in base ai quali viene consentito o negato l'accesso ai membri. Fare clic su Creadati | dimensione ruolo | Avanzate per specificare lo script.

Per scrivere l'istruzione MDX, è possibile usare Generatore MDX. Per informazioni dettagliate, vedere MDX Builder (Analysis Services - Dati multidimensionali). Nella scheda Avanzate sono disponibili le opzioni seguenti:

Attributo
Consente di selezionare l'attributo per cui gestire la sicurezza dei membri.

Set di membri autorizzati
La proprietà AllowedSet può restituire nessun membro (impostazione predefinita), tutti i membri o alcuni membri. Se si consente l'accesso a un attributo e non si definisce alcun membro del set delle autorizzazioni concesse, verrà consentito l'accesso a tutti i membri. Se si consente l'accesso a un attributo e si definisce un set di membri dell'attributo, saranno visibili solo i membri consentiti in modo esplicito.

La creazione di AllowedSet genera una reazione a catena quando l'attributo fa parte di una gerarchia a più livelli. Si supponga, ad esempio, che un ruolo consenta l'accesso allo stato di Washington. Si consideri uno scenario in cui il ruolo conceda le autorizzazioni alla divisione vendite dello stato di Washington di una società. Per gli utenti che si connettono tramite questo ruolo, le query che includono predecessori (Stati Uniti) o discendenti (Seattle e Redmond) visualizzeranno solo i membri in una catena che includono lo stato di Washington. Poiché gli altri stati non vengono consentiti in modo esplicito, l'effetto sarà identico a quello del caso in cui gli stati vengano negati.

Nota

Se si definisce un set vuoto ({}) di membri dell'attributo, nessun membro dell'attributo sarà visibile al ruolo del database. L'assenza di un set delle autorizzazioni concesse non viene interpretata come set vuoto.

Set di membri non autorizzati
La proprietà DeniedSet può restituire nessun membro, tutti i membri (impostazione predefinita) o alcuni membri dell'attributo. Se il set delle autorizzazioni negate contiene solo un set specifico di membri dell'attributo, al ruolo del database viene negato l'accesso solo a tali membri specifici, oltre ai discendenti se l'attributo fa parte di una gerarchia a più livelli. Si consideri l'esempio della divisione vendite dello stato di Washington. Se Washington viene inserito in DeniedSet, gli utenti che si connettono tramite questo ruolo visualizzeranno tutti gli altri stati eccetto Washington e gli attributi dei relativi discendenti.

Tenere presente, secondo quanto indicato nella sezione precedente, che il set delle autorizzazioni negate è una raccolta fissa. Se l'elaborazione successivamente introduce nuovi membri a cui deve essere negato l'accesso, sarà necessario modificare questo ruolo per aggiungere tali membri all'elenco.

Membro predefinito
La proprietà DefaultMember definisce il set di dati restituito a un client quando un attributo non è incluso in modo esplicito in una query. Quando l'attributo non è incluso in modo esplicito, SQL Server Analysis Services usa uno dei membri predefiniti seguenti per l'attributo:

  • Se il ruolo del database definisce un membro predefinito per l'attributo, SQL Server Analysis Services usa questo membro predefinito.

  • Se il ruolo del database non definisce un membro predefinito per l'attributo, SQL Server Analysis Services usa il membro predefinito definito per l'attributo stesso. Il membro predefinito per un attributo, a meno che l'utente non ne specifichi uno diverso e a condizione che l'attributo non sia definito come non aggregabile, è il membro All .

Si supponga, ad esempio, che un ruolo del database specifichi Male come membro predefinito per l'attributo Gender . A meno che una query includa in modo esplicito l'attributo Gender e specifica un membro diverso per questo attributo, SQL Server Analysis Services restituirebbe un set di dati che includeva solo i clienti maschi. Per altre informazioni sull'impostazione del membro predefinito, vedere Definire un membro predefinito.

Consenti totale visualizzato
La proprietà VisualTotals indica se i valori di cella aggregati visualizzati vengono calcolati in base a tutti i valori di cella o solo in base ai valori di cella visibili al ruolo del database.

Per impostazione predefinita, la proprietà VisualTotals è disabilitata, ovvero è impostata su False. Questa impostazione predefinita ottimizza le prestazioni perché SQL Server Analysis Services può calcolare rapidamente il totale di tutti i valori di cella, invece di dover dedicare tempo a selezionare i valori delle celle da calcolare.

La disabilitazione della proprietà VisualTotals, tuttavia, può creare un problema di sicurezza se un utente può usare i valori di cella aggregati per dedurre i valori relativi ai membri dell'attributo a cui il proprio ruolo del database non può accedere. Ad esempio, SQL Server Analysis Services usa i valori per tre membri dell'attributo per calcolare un valore di cella aggregato. Il ruolo del database può visualizzare due di tali membri dell'attributo. Utilizzando il valore di cella aggregato, un membro di questo ruolo del database sarebbe in grado di dedurre il valore per il terzo membro dell'attributo.

L'impostazione della proprietà VisualTotals su True può eliminare questo rischio. Quando si abilita la proprietà VisualTotals, un ruolo del database può visualizzare solo i totali aggregati per i membri della dimensione per cui dispone delle autorizzazioni.

Controllo
Fare clic su questa opzione per testare la sintassi MDX definita in questa pagina.

Vedere anche

Concedere le autorizzazioni per un cubo o un modello (Analysis Services)
Concedere l'accesso personalizzato ai dati delle celle (Analysis Services)
Concedere le autorizzazioni per le strutture e i modelli di data mining (Analysis Services)
Concedere le autorizzazioni per un oggetto origine dati (Analysis Services)