Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La sicurezza a livello di riga limita l'accesso ai dati per utenti specifici. I filtri limitano i dati a livello di riga e si definiscono i filtri all'interno dei ruoli. Nel servizio Power BI, gli utenti con accesso a un'area di lavoro hanno accesso a modelli semantici in tale area di lavoro. RLS limita l'accesso ai dati solo per gli utenti con autorizzazioni Visualizzatore. Non si applica agli amministratori, ai membri o ai collaboratori.
Per implementare la RLS (sicurezza a livello di riga), seguire questo flusso di lavoro generale:
- Definire ruoli e regole in Power BI Desktop usando espressioni di filtro DAX.
- Publish il modello semantico e il report nel servizio Power BI.
- Aggiungi membri ai ruoli nel servizio Power BI.
- Convalidare usando la funzionalità Test come ruolo per verificare che il filtro dei dati funzioni come previsto.
È possibile configurare la sicurezza a livello di riga (RLS) per i modelli semantici importati in Power BI Desktop o nel servizio Power BI. È possibile configurare anche RLS su modelli semantici che utilizzano DirectQuery, come SQL Server. Per le connessioni dinamiche di Analysis Services o Azure Analysis Services, configurare la sicurezza a livello di riga nel modello, non in Power BI. L'opzione di sicurezza non viene visualizzata per i modelli semantici di connessione dinamica.
Nota
Questo articolo illustra in modo specifico la sicurezza a livello di riga per i modelli semantici di Power BI. Per la sicurezza dei dati in altri elementi di Fabric, vedere Security in Microsoft Fabric.
Nota
Per i modelli semantici Direct Lake in Microsoft Fabric, è supportata la RLS (sicurezza a livello di riga). Tuttavia, se una query DAX ricade nella modalità DirectQuery a causa di funzionalità non supportate, i filtri di sicurezza a livello di riga (RLS) si applicano ancora, ma le caratteristiche delle prestazioni possono cambiare. Monitorare il comportamento di fallback delle query nell'app delle metriche di capacità di Fabric.
Definire i ruoli e le regole in Power BI Desktop
È possibile definire i ruoli e le regole in Power BI Desktop. Con questo editor è possibile passare dall'interfaccia a discesa predefinita a un'interfaccia DAX e viceversa. Quando si esegue la pubblicazione in Power BI, verranno pubblicate anche le definizioni dei ruoli.
Per definire i ruoli di sicurezza:
Importare dati nel report di Power BI Desktop o configurare una connessione DirectQuery.
Nota
Non è possibile definire i ruoli in Power BI Desktop per connessioni dinamiche di Analysis Services. È necessario eseguire questa operazione nel modello di Analysis Services.
Nella scheda Modellazione selezionare Gestisci ruoli.
Nella finestra Gestisci ruoli selezionare Nuovo per creare un nuovo ruolo.
In Ruoli specificare un nome per il ruolo e premere INVIO.
Nota
Non è possibile definire un ruolo con una virgola, ad esempio
London,ParisRole.In Seleziona tabelle selezionare la tabella a cui si vuole applicare un filtro di sicurezza a livello di riga.
In Filtra dati usare l'editor predefinito per definire i ruoli. Le espressioni create restituiscono un valore vero o falso.
Nota
Non tutti i filtri di sicurezza a livello di riga supportati in Power BI possono essere definiti usando l'editor predefinito. Le limitazioni includono espressioni che oggi possono essere definite solo usando DAX, incluse regole dinamiche come username() o userprincipalname(). Per definire i ruoli usando questi filtri passare all'editor DAX.
Facoltativamente, selezionare Passa all'editor DAX per passare all'uso dell'editor DAX per definire il ruolo. Le espressioni DAX restituiscono un valore true o false. Ad esempio:
[Entity ID] = “Value”. L'editor DAX è completo di completamento automatico per le formule (IntelliSense). È possibile selezionare il segno di spunta sopra la casella dell'espressione per convalidare l'espressione e il pulsante X sopra la casella dell'espressione per ripristinare le modifiche.Nota
È possibile usare username() all'interno di questa espressione. Tenere presente che username() ha il formato DOMAIN\username in Power BI Desktop. Nel servizio Power BI e nel server di report di Power BI, ha il formato del User Principal Name (UPN) dell'utente. Inoltre, in questa casella dell'espressione si usano le virgole per separare gli argomenti della funzione DAX anche se si usano impostazioni locali che in genere prevedono il separatore punto e virgola (ad esempio italiano o tedesco).
È possibile tornare all'editor predefinito selezionando Passa all'editor predefinito. Tutte le modifiche apportate in entrambe le interfacce dell'editor vengono salvate in modo permanente passando da un'interfaccia all'altra, ove possibile. Quando si definisce un ruolo usando l'editor DAX che non può essere definito nell'editor predefinito, se si tenta di passare all'editor predefinito verrà visualizzato un avviso che indica che il cambio di editor potrebbe causare la perdita di alcune informazioni. Per mantenere queste informazioni, selezionare Annulla e continuare a modificare questo ruolo solo nell'editor DAX.
Nota
In questa casella dell'espressione, usare le virgole per separare gli argomenti della funzione DAX anche se si usano impostazioni locali che in genere prevedono il separatore punto e virgola (ad esempio italiano o tedesco).
Seleziona Salva.
Non è possibile assegnare gli utenti a un ruolo in Power BI Desktop. Li assegni nel servizio Power BI. È possibile abilitare la sicurezza dinamica all'interno di Power BI Desktop usando le funzioni DAX username() o userprincipalname() e configurando le relazioni appropriate.
Modelli di filtro DAX comuni
Gli esempi seguenti illustrano le comuni espressioni di filtro DAX che è possibile usare per definire i ruoli RLS:
Sicurezza statica a livello di riga: restringe i dati a un valore fisso:
[Region] = "West"Sicurezza a livello di riga dinamica con UPN: limita l'accesso ai dati in base all'indirizzo email dell'utente collegato.
[UserEmail] = USERPRINCIPALNAME()RLS dinamica con USERNAME — Limita i dati basato sul dominio e sul nome utente:
[UserDomain] = USERNAME()RLS dinamica con CUSTOMDATA: limita i dati in base a una stringa personalizzata passata dall'applicazione di embedding.
[AppRole] = CUSTOMDATA()Nota
CUSTOMDATA()viene usato principalmente in scenari incorporati in cui l'applicazione passa una stringa di identità effettiva personalizzata tramite l'API REST Power BI.
La Dynamic RLS è l'approccio più comune perché consente a una singola definizione di ruolo di filtrare i dati in modo diverso per ogni utente, in base a una tabella di mapping degli utenti nel modello di dati.
Filtro incrociato bidirezionale
Per impostazione predefinita, i filtri per la sicurezza a livello di riga usano i filtri unidirezionali, indipendentemente dal fatto che le relazioni siano unidirezionali o bidirezionali.
È possibile abilitare manualmente il filtro incrociato bidirezionale con sicurezza a livello di riga selezionando la relazione e quindi la casella di controllo Applica filtro di sicurezza in entrambe le direzioni. Selezionare questa opzione se è stata implementata anche la sicurezza a livello di riga dinamica a livello di server, in cui la sicurezza a livello di riga si basa sul nome utente o sull'ID di accesso. Se una tabella fa parte di più relazioni bidirezionali, è possibile selezionare questa opzione solo per una di queste relazioni.
Caution
L'abilitazione del filtro di sicurezza bidirezionale può influire negativamente sulle prestazioni delle query, soprattutto nei modelli con molte relazioni o set di dati di grandi dimensioni. Testare attentamente prima di eseguire la distribuzione nell'ambiente di produzione.
Per altre informazioni, vedere Filtro incrociato bidirezionale con DirectQuery in Power BI e l'articolo tecnico Protezione del modello semantico tabulare di BI.
Gestire la sicurezza nel modello
Per gestire la sicurezza nel modello semantico, aprire l'area di lavoro in cui è stato salvato il modello semantico nel servizio Fabric e seguire questa procedura:
In Fabric selezionare il menu Altre opzioni per un modello semantico. Questo menu viene visualizzato quando si passa il puntatore su un nome di modello semantico.
Seleziona Sicurezza.
Sicurezza ti porta alla pagina Sicurezza del livello di ruolo, dove puoi aggiungere membri a un ruolo che hai creato. Gli utenti con ruoli collaboratore o area di lavoro superiore visualizzano l'opzione Sicurezza e possono assegnare utenti a un ruolo. La proprietà del modello semantico o l'autorizzazione di compilazione possono essere necessarie anche a seconda dello scenario.
Nota
È possibile gestire la sicurezza solo nei modelli con ruoli di sicurezza a livello di riga già definiti in Power BI Desktop o quando si modifica il modello di dati nel servizio Power BI. Se il modello non ha ruoli già definiti, non è possibile gestire la sicurezza nel servizio Power BI.
Gestione dell'appartenenza ai ruoli
Aggiungere membri
Nel servizio Power BI, è possibile aggiungere un membro al ruolo digitando l'indirizzo di posta elettronica o il nome dell'utente o del gruppo di sicurezza. Non è possibile aggiungere gruppi creati in Power BI. È possibile aggiungere membri esterni all'organizzazione. Per indicazioni su come RLS funziona con utenti esterni B2B guest, vedere Considerazioni per gli utenti esterni guest B2B.
Per configurare la sicurezza a livello di riga, è possibile usare i gruppi seguenti.
- Gruppo di distribuzione
- Gruppo abilitato alla posta elettronica
- Gruppo di sicurezza Microsoft Entra
Important
Microsoft 365 gruppi non sono supportati e non possono essere aggiunti ad alcun ruolo. Solo i tipi di gruppo elencati in precedenza sono supportati per l'appartenenza ai ruoli RLS.
È possibile visualizzare il numero di membri che fanno parte del ruolo in base al numero tra parentesi accanto al nome del ruolo o accanto a Membri.
Rimuovere membri
È possibile rimuovere i membri selezionando l'icona X accanto al nome.
Convalida del ruolo all'interno del servizio Power BI
È possibile verificare che il ruolo definito funzioni correttamente nel servizio Power BI testando il ruolo.
- Selezionare Altre opzioni (...) accanto al ruolo.
- Seleziona Test come ruolo.
Nota
I dashboard non sono disponibili per test tramite l'opzione Testa come ruolo. Si viene reindirizzati al report pubblicato da Power BI Desktop con questo modello semantico, se presente.
Quando il report viene caricato, verificare quanto segue:
- Il report visualizza solo le righe di dati che corrispondono all'espressione di filtro definita nel ruolo.
- Gli oggetti visivi, le tabelle e i grafici riflettono i dati filtrati, non il set di dati completo.
- Se si usa la sicurezza a livello di riga dinamica, i dati corrispondono all'identità visualizzata nell'intestazione Now viewing as .
Nell'intestazione di pagina viene visualizzato il ruolo applicato. Provare altri ruoli, una combinazione di ruoli o una persona specifica selezionando Visualizza come. Qui vengono visualizzati dettagli importanti sulle autorizzazioni relative alla persona o al ruolo sottoposto a test. Per ulteriori informazioni su come le autorizzazioni interagiscono con RLS, vedere Esperienza utente RLS.
Testare altri report connessi al modello semantico selezionando Visualizzazione nell'intestazione della pagina. È possibile testare solo i report che si trovano nella stessa area di lavoro del modello semantico.
Per tornare alla visualizzazione normale, selezionare Torna alla sicurezza a livello di riga.
Nota
La funzionalità Test come ruolo non funziona per i modelli DirectQuery con accesso Single Sign-On (SSO) abilitato. Inoltre, non tutti gli aspetti di un report possono essere convalidati nella funzionalità "Test come ruolo", incluse le visualizzazioni di Q&A, le visualizzazioni di approfondimenti rapidi e
Tip
Se Test come ruolo non mostra i risultati previsti, provare a eseguire le operazioni seguenti:
- Verificare che la sintassi dell'espressione filtro DAX sia corretta e faccia riferimento ai nomi di colonna corretti.
- Assicurarsi di aver selezionato il ruolo corretto da testare.
- Per la RLS dinamica, verificare che la tabella di mappatura utente contenga valori corrispondenti per
USERPRINCIPALNAME()oUSERNAME(). - Per i modelli DirectQuery con SSO abilitato, Il test come ruolo non è supportato. Accedere invece come utente effettivo del ruolo visualizzatore per convalidare il filtro dei dati.
Uso delle funzioni DAX username() o userprincipalname()
È possibile sfruttare la funzione DAX username() o userprincipalname() all'interno del set di dati. Queste funzioni possono essere usate all'interno di espressioni in Power BI Desktop. Quando si pubblica il modello, verrà usata all'interno del servizio Power BI.
All'interno di Power BI Desktop, username() restituirà un utente nel formato DOMINIO\utente, mentre userprincipalname() restituirà un utente nel formato user@contoso.com.
All'interno del servizio Power BI, username() e userprincipalname() restituiranno il Nome Principale Utente (UPN, User Principal Name). simile a un indirizzo di posta elettronica.
Uso di RLS (sicurezza a livello di riga) con aree di lavoro in Power BI
Se pubblichi il tuo report di Power BI Desktop in un workspace nel servizio Power BI, i ruoli RLS vengono applicati ai membri assegnati al ruolo di Viewer nel workspace. Anche se ai visualizzatori vengono concesse autorizzazioni di compilazione per il modello semantico, la sicurezza a livello di riga viene comunque applicata. Ad esempio, se i visualizzatori con autorizzazioni di creazione/modifica usano Analizza in Excel, la visualizzazione dei dati è limitata dalla sicurezza a livello di riga (RLS). I membri dell'area di lavoro assegnati a Admin, Member o Contributor dispongono dell'autorizzazione di modifica per il modello semantico e, pertanto, la sicurezza a livello di riga (RLS) non è applicabile a loro. Se si desidera che RLS (sicurezza a livello di riga) venga applicata alle persone in un'area di lavoro, è possibile assegnarle solo il ruolo Visualizzatore. Altre informazioni sui ruoli nelle aree di lavoro.
Considerazioni per gli utenti esterni (guest B2B)
Se si condividono contenuti di Power BI con utenti esterni tramite Microsoft Entra B2B, è importante comprendere come l'RLS (sicurezza a livello di riga) interagisce con le identità degli utenti ospiti.
Risoluzione UPN per gli utenti ospiti B2B
Quando un utente guest B2B esterno accede a un report di Power BI, la funzione DAX USERPRINCIPALNAME() restituisce in genere un identificatore simile a un messaggio di posta elettronica, ad esempio user@partner.com. In alcune configurazioni potrebbe restituire un UPN guest nel #EXT# formato , ad esempio user_partner.com#EXT#@yourtenant.onmicrosoft.com.
Questa distinzione è importante per la RLS dinamica. Se la tabella di mapping utente archivia un formato di identificatore diverso da quello USERPRINCIPALNAME() restituito, l'espressione di filtro non corrisponde e l'utente guest potrebbe non visualizzare dati o dati non corretti.
Comportamento di USERNAME() per gli ospiti B2B
La USERNAME() funzione DAX restituisce l'identificatore di dominio\nome utente dell'utente. Per gli utenti guest B2B, questa funzione restituisce in genere l'UPN del tenant principale del guest (ad esempio, user@partner.com) anziché un formato domain\username. Poiché USERNAME() e USERPRINCIPALNAME() spesso restituiscono lo stesso valore per i guest B2B, la maggior parte delle implementazioni viene usata USERPRINCIPALNAME() per coerenza.
Tip
Se la sicurezza a livello di riga dinamica esistente usa USERNAME(), verificare prima di condividere il contenuto esternamente quale valore restituisce per gli utenti guest nell'ambiente. Puoi controllare aggiungendo una visualizzazione a schede che mostri USERNAME() in un report di test.
Approccio consigliato: Archiviare e usare in modo coerente lo stesso formato di identificatore nella tabella di mapping utente del valore restituito da USERPRINCIPALNAME(). Nella maggior parte dei casi, l'uso degli indirizzi di posta elettronica semplifica la gestione:
[UserEmail] = USERPRINCIPALNAME()
Dove la UserEmail colonna contiene indirizzi di posta elettronica come user@partner.com per gli utenti interni ed esterni.
Nota
Il valore restituito da USERPRINCIPALNAME() è l'identificatore di accesso dell'utente (UPN), non necessariamente il relativo indirizzo di posta elettronica. Per la maggior parte degli utenti questi sono gli stessi, ma possono differire (ad esempio, quando il messaggio di posta elettronica di un utente è un alias). Quando si compila la tabella di mapping utente, usare il valore restituito da USERPRINCIPALNAME() anziché dall'attributo mail da Microsoft Entra ID.
Important
Se si utilizza la sicurezza a livello di riga dinamica con USERPRINCIPALNAME(), testare sempre con utenti guest esterni reali. La funzionalità Test as role usa la propria identità e non rivela problemi di risoluzione UPN dell'utente esterno.
Nota
Il comportamento di risoluzione UPN per i guest B2B può variare a seconda della configurazione Microsoft Entra ID, ad esempio le impostazioni di accesso tra tenant e il tipo di utente guest. Convalidare sempre il comportamento nell'ambiente specifico.
Risoluzione dei problemi: il guest esterno non vede dati
Se un utente guest B2B visualizza un report vuoto o riceve un messaggio "nessun dato", seguire questa procedura:
-
Verificare il formato UPN restituito - creare una misura di test usando
USERPRINCIPALNAME()e visualizzarla in una scheda visiva. Chiedere all'utente guest di visualizzare il report per visualizzare il valore effettivo restituito. -
Controllare la tabella di mapping utente - verificare che la tabella di mapping contenga una riga con un valore che corrisponda esattamente a quanto
USERPRINCIPALNAME()restituisce per tale ospite. - Verificare la distinzione tra maiuscole e minuscole: i confronti tra stringhe DAX non fanno distinzione tra maiuscole e minuscole per impostazione predefinita, ma verificare che l'origine dati non abbia introdotto valori con distinzione tra maiuscole e minuscole.
- Visualizzare le impostazioni di accesso tra tenant- Se l'organizzazione usa criteri di accesso tra tenant, questi possono influire sul formato UPN visualizzato Power BI.
- Testare con l'utente guest reale : la funzionalità Test come ruolo usa la tua identità. Convalidare sempre con l'account guest esterno reale. Per altre informazioni sulla condivisione di contenuto Power BI con utenti esterni, vedere Distribute Power BI contenuto a utenti guest esterni con Microsoft Entra B2B.
Considerazioni e limitazioni
È possibile visualizzare le limitazioni correnti per la sicurezza a livello di riga nei modelli cloud qui:
- Se in precedenza sono stati definiti ruoli e regole nel servizio Power BI, sarà necessario crearli di nuovo in Power BI Desktop.
- È possibile definire il RLS solo nei modelli semantici creati con Power BI Desktop. Se si desidera abilitare RLS per i modelli semantici creati con Excel, è necessario prima convertire i file in file di Power BI Desktop (PBIX). Altre informazioni.
- Le entità servizio non possono essere aggiunte a un ruolo di sicurezza a livello di riga (Row-Level Security, RLS). Di conseguenza, la sicurezza a livello di riga (RLS) non viene applicata alle app che utilizzano un'entità di servizio come l'identità effettiva finale.
- Sono supportate solo le connessioni di importazione e DirectQuery. Le connessioni dinamiche ad Analysis Services vengono gestite nel modello locale.
- Con RLS abilitato, l'uso della funzione DAX USERELATIONSHIP() nelle query e misure DAX può causare errori imprevisti. Per risolvere questo problema, riprogettare le espressioni DAX per evitare USERELATIONSHIP() e usare invece relazioni a livello di modello o altri modelli DAX.
- La funzionalità Test as role/View as role non funziona per i modelli DirectQuery con l'accesso Single Sign-On (SSO) abilitato.
- La funzionalità "Esegui test come ruolo/Visualizza come ruolo" mostra solo i report dell'area di lavoro dei modelli semantici.
- La funzione "Test come ruolo/Visualizza come ruolo" non funziona per i report impaginati.
Tenere presente che se un report di Power BI fa riferimento a una riga con RLS configurata, verrà visualizzato lo stesso messaggio come per un campo eliminato o inesistente. Per questi utenti, sembra che il report non funzioni correttamente.
Domande frequenti
Domanda: Cosa accade se sono stati precedentemente creati ruoli e regole per un set di dati nel servizio Power BI? Continueranno a funzionare anche se non si esegue alcuna operazione?
Risposta: No, gli oggetti visivi non verranno visualizzati correttamente. È necessario ricreare i ruoli e le regole in Power BI Desktop e quindi pubblicarli nel servizio Power BI.
Domanda: È possibile creare questi ruoli per le origini dati di Analysis Services?
Risposta: Sì, è possibile solo se i dati sono stati importati in Power BI Desktop. Se si usa una connessione dinamica, non è possibile configurare la sicurezza a livello di riga all'interno del servizio Power BI. Definisci la sicurezza a livello di riga nel modello di Analysis Services in locale.
Domanda: È possibile usare RLS per la restrizione delle colonne o delle misure accessibili agli utenti?
Risposta: No, se un utente può accedere a una riga specifica di dati, può visualizzare tutte le colonne di dati per tale riga. Per limitare l'accesso alle colonne e ai metadati delle colonne, è consigliabile usare la sicurezza a livello di oggetto.
Domanda: La sicurezza a livello di riga consente di nascondere i dati dettagliati, ma di concedere l'accesso ai dati riepilogati nelle visualizzazioni?
Risposta: No. È possibile proteggere singole righe di dati, ma gli utenti possono visualizzare sempre i dettagli o i dati riepilogati.
Domanda: Per l'origine dati sono già stati definiti ruoli di sicurezza, ad esempio ruoli di SQL Server o ruoli di SAP BW. Qual è la relazione tra questi ruoli e la sicurezza a livello di riga?
Risposta: La risposta varia a seconda che i dati vengano importati o che si usi DirectQuery. Quando si importano dati nel set di dati di Power BI, i ruoli di sicurezza nell'origine dati non vengono utilizzati. In questo caso, è necessario definire RLS per applicare regole di sicurezza per gli utenti che si connettono su Power BI. Quando si utilizza DirectQuery, i ruoli di sicurezza nell'origine dati vengono utilizzati. Quando un utente apre un report di Power BI invia una query all'origine dati sottostante, che applica le regole di sicurezza ai dati in base alle credenziali dell'utente.
Domanda: un utente può appartenere a più ruoli?
Risposta: un utente può appartenere a più ruoli e i ruoli possono essere sommati. Ad esempio, se un utente appartiene ai ruoli "Vendite" e "Marketing", può visualizzare i dati per entrambi questi ruoli.
Contenuto correlato
- Limitare l'accesso ai dati con sicurezza a livello di riga per Power BI Desktop
- Pianificazione dell'implementazione di Power BI: Pianificazione della sicurezza per gli utenti dei report
- Sicurezza a livello di riga per scenari integrati per ISV
- Distribute Power BI contenuto a utenti guest esterni con Microsoft Entra B2B
Domande? Provare a rivolgersi alla community di Power BI per suggerimenti. Contribuire con idee per migliorare Power BI