Concessione di accesso personalizzato ai dati della dimensione

Quando un ruolo del database di MicrosoftSQL Server 2005 Analysis Services (SSAS) dispone dell'autorizzazione di lettura o di lettura/scrittura per le dimensioni di un cubo, è possibile definire la protezione in ogni membro degli attributi della dimensione, processo denominato anche protezione della dimensione. Per impostazione predefinita, un ruolo del database in un cubo per il quale dispone dell'accesso in lettura ha accesso a tutti i membri di tutti gli attributi della dimensione. È possibile definire un set specifico di membri dell'attributo per ogni attributo della dimensione per il quale i membri del ruolo dispongono di diritti di accesso specifici (AllowedSet) o per il quale ai membri sono stati negati in modo specifico i diritti di accesso (DeniedSet). È inoltre possibile definire il membro predefinito per ogni gerarchia dell'attributo. Per impostazione predefinita il membro predefinito è All. Se si negano le autorizzazioni di lettura a determinati membri dell'attributo, è possibile fare in modo che il valore del membro All rappresenti l'aggregazione dei membri ai quali i membri del ruolo hanno accesso anziché l'aggregazione di tutti i membri della gerarchia dell'attributo. Per impostare questo comportamento, attivare VisualTotals. Quando si attiva VisualTotals, l'aggregato viene calcolato in fase di query anziché recuperato dalle aggregazioni precalcolate.

[!NOTA]

Il tipo di accesso di cui dispongono i membri di un ruolo della dimensione dipende dal tipo di accesso consentito, ovvero se si tratta di un accesso in lettura o in lettura/scrittura.

Informazioni sulla proprietà IsAllowed

La proprietà IsAllowed determina se il ruolo del database può accedere o meno ai membri di un attributo. Per impostazione predefinita, un ruolo del database che ha accesso a una dimensione non può accedere alle gerarchie dell'attributo.

Informazioni sulla proprietà AllowedSet

La proprietà AllowedSet utilizza un'espressione MDX (Multidimensional Expression) per determinare quali membri dell'attributo possano essere visualizzati dal ruolo del database, ovvero il set delle autorizzazioni concesse. Il set delle autorizzazioni concesse può includere nessun membro (impostazione predefinita) oppure alcuni o tutti i membri dell'attributo. 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 specifico. Se si definisce in modo specifico un set delle autorizzazioni concesse, questa operazione potrebbe influire sulla visibilità dei membri dell'attributo aggiunti successivamente al set.

Se si limita il set delle autorizzazioni concesse per un attributo, la visibilità degli altri attributi risulta ridotta. Si supponga, ad esempio, che il set delle autorizzazioni concesse per l'attributo Customer includa solo alcuni membri dell'attributo, mentre il set delle autorizzazioni concesse per l'attributo City includa tutti i membri dell'attributo. In questo caso, gli unici membri visibili dell'attributo City saranno le città i cui clienti sono inclusi nel set delle autorizzazioni concesse dell'attributo Customer. Se è presente una città senza alcun cliente, i membri dell'attributo per la città non saranno visibili. In altre parole, un membro dell'attributo è visibile solo se almeno uno dei suoi membri è incluso nel set delle autorizzazioni concesse dell'altro membro dell'attributo.

[!NOTA]

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

Informazioni sulla proprietà DeniedSet

La proprietà DeniedSet utilizza un'espressione MDX (Multidimensional Expression) per determinare i membri dell'attributo per cui a un ruolo del database viene negato l'accesso in modo esplicito, ovvero il set delle autorizzazioni negate. Il set delle autorizzazioni negate può includere nessun membro oppure alcuni o tutti (impostazione predefinita) i membri dell'attributo. Per impostazione predefinita, non viene creato alcun set delle autorizzazioni negate.

Quando il set delle autorizzazioni negate contiene solo un set specifico di membri dell'attributo, il ruolo del database non può accedere solo a tali membri specifici. Se si definisce in modo specifico un set delle autorizzazioni negate, questa operazione potrebbe influire sull'accessibilità dei membri dell'attributo aggiunti successivamente.

Quando si definisce un set specifico di attributi nel set delle autorizzazioni negate, l'effetto di tale set sull'accessibilità degli altri attributi dipende dall'attivazione o meno della proprietà ApplyDenied. Si supponga, ad esempio, che vi sia un set di autorizzazioni negate nell'attributo State e che la proprietà ApplyDenied sia attivata. In questo caso, il ruolo del database non potrà accedere ad alcun attributo Customer per gli stati inclusi nel set delle autorizzazioni negate.

Informazioni sulla proprietà ApplyDenied

La proprietà ApplyDenied indica se i membri di un set delle autorizzazioni negate vengono utilizzati per determinare la visibilità o meno dei membri di una gerarchia dell'attributo al ruolo del database. Per impostazione predefinita, la proprietà ApplyDenied è impostata su True (attivata) per ogni gerarchia dell'attributo.

[!NOTA]

Diversamente dal set delle autorizzazioni negate il cui effetto dipende dalla proprietà ApplyDenied, il set delle autorizzazioni consentite viene sempre applicato per determinare se i membri di una gerarchia dell'attributo siano visibili o meno al ruolo del database.

Quando la proprietà ApplyDenied è attivata ed è stato definito un set delle autorizzazioni negate, il ruolo del database non potrà accedere ad alcun membro di una gerarchia dell'attributo se la gerarchia contiene qualsiasi membro incluso nel set. La proprietà ApplyDenied, ad esempio, è attivata e il set delle autorizzazioni negate è composto da stati inclusi nell'attributo State. Oltre a non poter accedere all'attributo State, il ruolo del database non sarà in grado di accedere all'attributo Customers per qualsiasi stato incluso nel set delle autorizzazioni negate.

Quando la proprietà ApplyDenied è attivata ed è stato definito un set delle autorizzazioni negate, il ruolo del database potrà accedere a qualsiasi membro di una gerarchia dell'attributo se la gerarchia contiene uno o più membri inclusi nel set. La proprietà ApplyDenied, ad esempio, è disattivata e il set delle autorizzazioni negate è composto da stati inclusi nell'attributo State. Benché il ruolo del database non potrà accedere all'attributo State, potrà comunque accedere all'attributo Customers per qualsiasi stato incluso nel set delle autorizzazioni negate.

Informazioni sulla proprietà VisualTotals

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 è disattivata, ovvero è impostata su False. L'impostazione predefinita garantisce prestazioni ottimali, in quanto consente di calcolare in modo rapido il totale di tutti i valori di cella tramite Analysis Services, anziché dedicare il tempo necessario per selezionare i valori di cella da calcolare.

La disattivazione della proprietà VisualTotals, tuttavia, può creare un problema di protezione se un utente può utilizzare i valori di cella aggregati per dedurre i valori relativi ai membri dell'attributo a cui il proprio ruolo del database non può accedere. In Analysis Services, ad esempio, vengono utilizzati 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.

Se un utente può dedurre i valori per i membri dell'attributo a cui il proprio ruolo del database non dispone dell'accesso, le procedure consigliate ai fini della protezione impongono di attivare, impostandola su True, la proprietà VisualTotals per l'attributo. Quando si attiva la proprietà VisualTotals, un ruolo del database può visualizzare solo i totali aggregati per i membri della dimensione per cui dispone delle autorizzazioni. L'attivazione, ad esempio, della proprietà VisualTotals, indica che il ruolo del database visualizzerà un totale aggregato contenente solo gli stati, ovvero i membri dell'attributo State, che è autorizzato a visualizzare. Il totale aggregato non includerà i valori per tutti gli stati.

Informazioni sulla proprietà DefaultMember

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, in Analysis Services viene utilizzato uno dei membri predefiniti seguenti per l'attributo:

  • Se il ruolo del database definisce un membro predefinito per l'attributo, in Analysis Services verrà utilizzato tale membro predefinito.

  • Se il ruolo del database non definisce un membro predefinito per l'attributo, in Analysis Services verrà utilizzato 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 non includa in modo esplicito l'attributo Gender e non specifichi un membro diverso per l'attributo, in Analysis Services verrà restituito un set di dati contenente solo i clienti di sesso maschile. Per ulteriori informazioni sull'impostazione del membro predefinito, vedere Definizione di un membro predefinito.

Impostazione della autorizzazioni di accesso per un membro in una dimensione

Prima di impostare le autorizzazioni di accesso per un membro in una dimensione, può risultare utile analizzare alcuni esempi degli effetti prodotti dalle diverse impostazioni di accesso sul set dei risultati restituito durante l'esecuzione di una query sui membri. Negli argomenti indicati di seguito vengono utilizzate le impostazioni di esempio seguenti:

Dopo avere compreso le modalità di funzionamento delle diverse autorizzazioni di accesso, è possibile iniziare a concedere tali autorizzazioni. Per concedere autorizzazioni di accesso a un membro in una dimensione, un utente deve essere un membro del ruolo del server di Analysis Services oppure di un ruolo del database di Analysis Services che disponga dell'autorizzazione Controllo completo (amministratore).

Quando si utilizza Business Intelligence Development Studio per concedere le autorizzazioni di accesso a un membro in una dimensione, è possibile selezionare le opzioni standard disponibili nella scheda Standard della scheda Accesso ai dati della dimensione oppure quelle incluse nella scheda Avanzate, che consentono un maggior grado di personalizzazione.

Nota importanteImportante

Se un utente o un gruppo di Microsoft Windows appartiene a più ruoli del database, ogni autorizzazione concessa all'utente o al gruppo sarà valida per ogni ruolo del database (unione di autorizzazioni). Se un ruolo del database nega a un utente l'accesso a un membro dell'attributo, ma un ruolo del database diverso ha consentito all'utente l'accesso allo stesso membro dell'attributo, l'utente potrà comunque accedere al membro dell'attributo.

Per consentire a un ruolo del database l'accesso a un membro in una dimensione utilizzando la scheda Standard

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

  2. Fare clic su Accesso ai dati personalizzati della dimensione nel riquadro Selezione pagina, selezionare la dimensione nell'elenco Dimensione e quindi fare clic su Consenti attributo nella scheda Avanzate.

    La selezione di questa opzione consente di impostare la proprietà IsAllowed su True.

  3. Nell'elenco Attributo selezionare l'attributo per cui si desidera specificare i membri che potranno essere visualizzati dal ruolo del database.

  4. Per negare l'accesso ad alcuni membri specifici dell'attributo, immettere l'espressione MDX per i membri desiderati nella casella Set di membri non autorizzati. Tutti gli altri membri dell'attributo saranno visualizzabili.

    • Per consentire l'accesso solo ad alcuni membri specifici, immettere l'espressione MDX per i membri dell'attributo desiderati nella casella Set di membri autorizzati. Nessun altro membro dell'attributo sarà visualizzabile.

Per consentire a un ruolo del database l'accesso a un membro in una dimensione utilizzando la scheda Avanzate

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

  2. Fare clic su Accesso ai dati personalizzati della dimensione nel riquadro Selezione pagina, selezionare la dimensione nell'elenco Dimensione e quindi fare clic su Consenti attributo nella scheda Avanzate.

    La selezione di questa opzione consente di impostare la proprietà IsAllowed su True.

  3. Nell'elenco Attributo selezionare l'attributo per cui si desidera specificare i membri che potranno essere visualizzati dal ruolo del database.

  4. Per negare l'accesso ad alcuni membri specifici dell'attributo, immettere l'espressione MDX per i membri desiderati nella casella Set di membri non autorizzati. Tutti gli altri membri dell'attributo saranno visualizzabili.

    Per consentire l'accesso solo ad alcuni membri specifici, immettere l'espressione MDX per i membri dell'attributo desiderati nella casella Set di membri autorizzati. Nessun altro membro dell'attributo sarà visualizzabile.