Limitare l'accesso agli oggetti del modello Power BI

Completato

Il modellatore dei dati può limitare l'accesso degli utenti agli oggetti del modello Power BI. La Sicurezza a livello di oggetto può limitare l'accesso a tabelle e colonne specifiche e ai relativi metadati. In genere, la Sicurezza a livello di oggetto si applica per proteggere gli oggetti che archiviano dati sensibili, ad esempio i dati personali dei dipendenti.

Quando Power BI applica la Sicurezza a livello di oggetto, non solo limita l'accesso a tabelle e colonne, ma può anche proteggere i metadati. Quando si proteggono i metadati, non è possibile recuperare informazioni su tabelle e colonne protette usando DMV.

Importante

I modelli tabulari possono nascondere tabelle e colonne (e altri oggetti) usando una prospettiva. La prospettiva definisce subset visualizzabili di oggetti del modello che consentono di concentrarsi in modo specifico sugli autori dei report. Le prospettive sono destinate a ridurre la complessità di un modello, aiutando gli autori dei report a trovare risorse di interesse. Tuttavia, le prospettive non sono una funzionalità di sicurezza perché non proteggono gli oggetti. Un utente può comunque eseguire query su una tabella o una colonna anche quando non è visibile.

Si consideri un esempio di Adventure Works. Questa organizzazione ha una tabella delle dimensioni del data warehouse denominata DimEmployee. La tabella include colonne che archiviano il nome dei dipendenti, il numero di telefono, l'indirizzo di posta elettronica e lo stipendio. Anche se gli utenti generici del report possono visualizzare il nome e i dettagli di contatto dei dipendenti, non devono essere in grado di visualizzare i valori relativi allo stipendio. Solo il personale delle risorse umane senior è autorizzato a visualizzare i valori relativi allo stipendio. Il modello di dati ha quindi usato la Sicurezza a livello di oggetto per concedere l'accesso alla colonna degli stipendi solo a personale specifico delle risorse umane.

Screenshot della visualizzazione di un diagramma modello della tabella Employee, che include la colonna Salary con restrizioni.

La Sicurezza a livello di oggetto è una funzionalità ereditata da Azure Analysis Services (AAS) e SQL Server Analysis Services (SSAS). La funzionalità è disponibile in Power BI Premium per garantire la compatibilità con le versioni precedenti per i modelli migrati in Power BI. Per questo motivo, non è possibile configurare completamente la Sicurezza a livello di oggetto in Power BI Desktop.

Configurare la Sicurezza a livello di oggetto

Per configurare la Sicurezza a livello di oggetto, è necessario iniziare creando ruoli. È possibile creare i ruoli in Power BI Desktop nello stesso modo in cui si configura la Sicurezza a livello di riga. Successivamente, è necessario aggiungere regole di Sicurezza a livello di oggetto ai ruoli. Questa funzionalità non è supportata da Power BI Desktop, quindi è necessario adottare un approccio diverso.

L'utente aggiunge le regole di Sicurezza a livello di oggetto a un modello di Power BI Desktop usando un endpoint XML for Analysis (XMLA). Gli endpoint XMLA sono disponibili con Power BI Premium e consentono di accedere al motore di Analysis Services nel servizio Power BI. L'endpoint di lettura/scrittura supporta la gestione dei set di dati, la gestione del ciclo di vita delle applicazioni, la modellazione avanzata dei dati e altro ancora. È possibile usare API abilitate per endpoint XMLA per lo scripting, ad esempio Tabular Model Scripting Language (TMSL) o il modulo SqlServer di PowerShell. In alternativa, è possibile usare uno strumento client, ad esempio SSMS. Sono disponibili anche opzioni di strumenti di terze parti, ad esempio l'editor tabulare, uno strumento open source per la creazione, il mantenimento e la gestione dei modelli.

Per impostazione predefinita, tutte le tabelle e le colonne del modello non hanno limitazioni. È possibile impostarle su Nessuno o Lettura. Se impostate su Nessuno, gli utenti associati al ruolo non possono accedere all'oggetto. Se impostate su Lettura, gli utenti associati al ruolo possono accedere all'oggetto. Quando si limitano colonne specifiche, assicurarsi che la tabella non sia impostata su Nessuno.

Dopo aver aggiunto le regole della Sicurezza a livello di oggetto, è possibile pubblicare il modello nel servizio Power BI. Usare lo stesso processo per la Sicurezza a livello di riga per eseguire il mapping di account e gruppi di sicurezza rispetto ai ruoli.

Considerazioni

In un report di Power BI, quando un utente non ha l'autorizzazione per accedere a una tabella o a una colonna, riceverà un messaggio di errore. Il messaggio informerà che l'oggetto non esiste.

Screenshot di un messaggio di errore di Power BI Desktop visualizzato quando un oggetto visivo del report prova a eseguire una query su una colonna con restrizioni.

Valutare attentamente se la Sicurezza a livello di oggetto è la soluzione giusta per il progetto. Quando un utente apre un report di Power BI che esegue una query su un oggetto con restrizioni (per l'utente), il messaggio di errore potrebbe generare confusione e creare un'esperienza negativa. All'utente sembra che il report non sia funzionante. Un approccio migliore potrebbe essere quello di creare un set separato di modelli o report per i diversi requisiti degli utenti dei report.

Restrizioni

Ci sono alcune limitazioni da tenere in considerazione quando si implementa la Sicurezza a livello di oggetto.

Non è possibile combinare la Sicurezza a livello di riga e la Sicurezza a livello di oggetto nello stesso ruolo. Se è necessario applicare la Sicurezza a livello di riga e la Sicurezza a livello di oggetto nello stesso modello, creare ruoli separati dedicati a ciascun tipo. Inoltre, non è possibile impostare la sicurezza a livello di tabella se questa interrompe una catena di relazioni. Ad esempio, se ci sono relazioni tra le tabelle A e B e tra le tabelle B e C, non è possibile proteggere la tabella B. Se la tabella B è protetta, una query sulla tabella A non può spostare le relazioni tra la tabella A e B e tra la tabella B e C. In questo caso, è possibile configurare una relazione separata tra le tabelle A e C.

Diagram che mostra l'esempio di relazione descritto nel paragrafo precedente.

Tuttavia, le relazioni del modello che fanno riferimento a una colonna protetta funzioneranno, a condizione che la tabella della colonna non sia protetta.

Infine, anche se non è possibile proteggere le misure, una misura che fa riferimento a oggetti protetti viene automaticamente limitata.

Per altre informazioni, vedere Sicurezza a livello di oggetto.