Gestire il multi-tenancy con le funzionalità di analisi incorporata di Power BIManage multi-tenancy with Power BI embedded analytics

Questa pagina è stata utile?

Quando si progetta un'applicazione SaaS multi-tenant, è necessario scegliere con attenzione il modello di tenancy più adatto alle esigenze dell'applicazione SaaS.When designing a multi-tenant SaaS application, you must carefully choose the tenancy model that best fits the needs of your SaaS application. Questo processo è valido anche per Power BI come parte che gestisce l'analisi incorporata di un'applicazione SaaS.This process is also valid for Power BI as an embedded analytics part of your SaaS application. Un modello di tenancy determina la modalità di mapping e gestione dei dati di ogni tenant all'interno di Power BI e dell'account di archiviazione.A tenancy model determines how each tenant’s data is mapped and managed within Power BI and the storage account. Il modello di tenancy influisce sulla progettazione e la gestione delle applicazioni.Your tenancy model impacts application design and management. Il passaggio a un modello diverso in un secondo momento può diventare costoso e causare disservizi.Switching to a different model later may become costly and disruptive.

Con Power BI Embedded, esistono due principali approcci fondamentali per mantenere la separazione tra i tenant.With Power BI Embedded, there are two main fundamental approaches to maintaining separation between tenants.

  1. Isolamento basato sull'area di lavoro con la creazione di un'area di lavoro di Power BI separata per ogni tenant.Workspace-based isolation - creating a separate Power BI Workspace per tenant.
  2. Isolamento basato sulla sicurezza a livello di riga in cui i dati sottostanti vengono usati per controllare e gestire l'accesso ai dati per ogni utente o gruppo.Row-level security-based isolation - where the underlying data is used to control and manage access to data per user or group.

Questo articolo descrive i diversi approcci e li analizza in base a diversi criteri di valutazione.This article describes the different approaches and analyzes them according to several evaluation criteria.

Concetti e terminologiaConcepts and terminology

AAD - Azure Active Directory.AAD - Azure Active Directory.

Applicazione AAD -Identità di applicazione in AAD.AAD application - An application identity in AAD. Per l'autenticazione è richiesta un'applicazione AAD.An AAD application is required for authentication.

Applicazione SaaS (Software-as-a-Service) - Sistema implementato da un'organizzazione o un ISV che in genere è un servizio online.SaaS application (software-as-a-service) - A system implemented by an enterprise or ISV that is usually an online service. Anche i sistemi software correlati per la gestione di più tenant (organizzazioni) dei clienti.Its also related software systems for serving multiple customer tenants (organizations). In questo articolo l'applicazione SaaS usa Power BI Embedded per fornire servizi di analisi ai diversi tenant.For this article, the SaaS application uses Power BI Embedded to serve analytics to its different tenants. Power BI Embedded può essere usato anche per tutti i tipi di applicazioni quando dispongono di una connessione online.Power BI Embedded can also work for all types of applications when they have an online connection.

Tenant - Singolo cliente (organizzazione) che usa l'applicazione SaaS ed eventuali risorse o dati inseriti dal cliente nell'applicazione SaaS.Tenant – A single customer (organization) that uses the SaaS application and any resources or data that the customer brings to the SaaS application.

Power BI - Servizio cloud di Power BI che funge da piattaforma per Power BI Embedded.Power BI - The Power BI cloud service that serves as a platform for Power BI Embedded.

Tenant di Power BI - Set di risorse di Power BI associato a un singolo tenant AAD.Power BI tenant - Is a set of Power BI resources associated with a single AAD tenant.

Area di lavoro di Power BI - Contenitore per il contenuto in Power BI.Power BI workspace - A container for content in Power BI.

Artefatti di Power BI - Esistono diversi artefatti di Power BI nelle aree di lavoro di Power BI, ad esempio dashboard, report, set di dati e flussi di dati.Power BI artifacts – There are several Power BI artifacts in Power BI workspaces such as dashboards, reports, datasets, and dataflows.

Power BI Embedded - Set di API pubbliche che consentono agli sviluppatori di creare applicazioni per gestire il contenuto di Power BI e incorporare gli elementi di Power BI.Power BI Embedded - A set of public APIs that allow developers to build applications that manage Power BI content and embed Power BI elements.

Sicurezza a livello di riga - Offre la possibilità di controllare l'accesso utente ai dati per le singole righe in una tabella.Row-level security (RLS) - Gives the ability to control user access to the data for individual rows in a table. È possibile implementare la sicurezza a livello di riga a livello di origine dati o nel modello semantico di Power BI.You can implement row-level security at the data source level or in the Power BI semantic model.

Utente master - Identità che rappresenta l'applicazione SaaS di Power BI e usata dall'applicazione SaaS per le chiamate alle API di Power BI.Master user - The identity that represents the SaaS application in Power BI and that the SaaS application uses when calling Power BI APIs. Deve essere un utente AAD con una licenza di Power BI Pro.Needs to be an AAD user with a Power BI Pro license.

Utente dell'applicazione AAD (entità servizio) - Identità che rappresenta l'applicazione SaaS di Power BI e usata dall'applicazione SaaS per le chiamate alle API di Power BI.AAD Application user (service principal) - The identity that represents the SaaS application in Power BI and that the SaaS application uses when calling Power BI APIs. Deve essere un'applicazione Web AAD.Needs to be an AAD web application. Può sostituire l'uso di un utente master per l'autenticazione con Power BI.Can replace the use of a master user to authenticate with Power BI.

Capacità - Set di risorse dedicate all'esecuzione del servizio Power BI.Capacity - A set of resources dedicated to running the Power BI service. Capacità Premium di Power BI - Destinate alle aziende di grandi dimensioni che usano Power BI internamente, mentre le capacità di Power BI Embedded sono destinate agli sviluppatori per lo sviluppo di applicazioni SaaS per terze parti.Power BI Premium capacities Intended for enterprise companies using Power BI internally, while Power BI Embedded capacities intend for application developers to develop SaaS applications for third parties.

Licenza di Power BI Pro - Licenza per utente che concede i diritti per pubblicare contenuti nelle aree di lavoro delle app, utilizzare le app senza capacità Premium, condividere i dashboard e sottoscrivere dashboard e report.Power BI Pro license - A user-based license, which grants rights to publish content to app workspaces, consume apps without Premium capacity, share dashboards, and subscribe to dashboards and reports.

Modalità di connettività dati - Connessione a origini dati in Power BI che può essere stabilita in modalità diverse:Data connectivity modes - Connecting data sources to Power BI that can be done in different modes:

  • Importazione, ovvero il modo più comune per ottenere i dati.Import - which is the most common way to get data.
  • DirectQuery, per la connessione diretta ai dati nel relativo repository di origine.DirectQuery - connect directly to the data in its source repository.
  • Connessione dinamica, ovvero un'altra modalità che prevede la connessione diretta a dati di Analysis Services (sia in Azure che in locale).Live connection - another mode that connects directly to Analysis Services data (both Azure and on-premises).

Criteri di valutazioneEvaluation criteria

La scelta ottimale del modello di tenancy appropriato per un'applicazione SaaS varia a seconda dei requisiti aziendali e tecnici specifici, dell'architettura dei dati e di altri aspetti.The optimal choice for the right tenancy model for your SaaS application varies according to specific business and technical requirements, data architecture and more. Una profonda comprensione di questi requisiti e delle opzioni disponibili per i modelli di tenancy, così come dei potenziali compromessi, può essere utile per definire un'architettura solida, efficiente, conveniente e scalabile per l'applicazione SaaS.Deep understanding of these requirements along with available tenancy model options and trade-offs can help define robust, performant, cost-effective, and scalable architecture for your SaaS application.

Le aree seguenti sono quelle di cui tenere conto per la scelta tra i diversi modelli di tenancy.The following are a set of areas to consider when choosing between the different tenancy models.

Architettura dei datiData architecture

In genere, gli sviluppatori che creano applicazioni con Power BI Embedded hanno già a disposizione un database singolo o multi-tenant.Usually, developers building applications with Power BI Embedded already have a single or multi-tenant database. È più facile usare un modello di tenancy per Power BI Embedded simile al modello di tenancy del database.It's easier to use a tenancy model for Power BI Embedded which is similar to the tenancy model of the database. Se il modello di tenancy del database non è ancora stato definito, è possibile prendere in considerazione altri aspetti prima di scegliere l'architettura dei dati.If the database tenancy model hasn’t been defined yet, you may want to consider other aspects before deciding on your data architecture.

Isolamento dei datiData Isolation

I dati archiviati sono sensibili?How sensitive is the data being stored? Qual è il livello di isolamento necessario per separare i tenant dei diversi clienti?What level of isolation do you need separating different customer tenants? La risposta potrebbe variare nei diversi settori o per clienti specifici con requisiti particolari.The answer might vary across different industries or specific customers that have certain requirements.

ScalabilitàScalability

Per trovare la soluzione ottimale, definire la scala che si prevede di raggiungere nel futuro.To find the best solution, define the scale you reach in the foreseeable future. Tenere presente che una soluzione che potrebbe essere adatta nel presente, potrebbe risultare insufficiente con l'aumento dell'utilizzo e dei dati.Remember that a solution that might be suitable now might not suffice when usage and data scale up. Per l'analisi della scalabilità, tenere conto di quanto segue:When analyzing scalability, consider the following list:

  • Numero di tenant (clienti).Number of tenants (customers).
  • Numero di report, dashboard e set di dati per ogni tenant.Number of reports, dashboards, and datasets for each tenant.
  • Dimensioni dei dati in ogni set di dati e frequenza degli aggiornamenti.Size of data on each dataset and frequency of refreshes.
  • Numero di utenti.Number of users.
  • Numero di utenti simultanei nei periodi di picco.Number of concurrent users in peak times.

Alcune applicazioni SaaS potrebbero avere un numero ridotto di clienti e un utilizzo limitato, ma grandi quantità di dati.Some SaaS applications might have a low number of customers and low usage, but large amounts of data. Altre potrebbero avere molti clienti e un utilizzo elevato, ma una piccola quantità di dati e report per ogni cliente.Others might have many customers and high usage, but a small amount of data and reports for each customer. Numeri elevati in una qualsiasi di queste situazioni possono influire sui costi e la complessità operativa futuri.High numbers in any of these situations can impact future costs and operational complexity.

Automazione e complessità operativaAutomation & operational complexity

Individuare i processi frequenti che devono essere automatizzati.Identify frequently occurring processes that need automation.

  • Qual è la frequenza di onboarding di nuovi tenant?What is the frequency of onboarding new tenants? Quali operazioni sono necessarie per completare l'onboarding di ognuno?What actions are needed to fully onboard each one?
  • Qual è la frequenza di rilascio di contenuto di Power BI nuovo o aggiornato, che deve essere distribuito?What is the release cadence for new or updated Power BI content, that needs to be deployed?
  • Quanti ruoli di sicurezza a livello di riga sono definiti per ogni tenant?How many row-level security roles are defined for each tenant?

L'identificazione di questi processi e della relativa modalità di gestione può essere utile per comprendere la complessità operativa per la manutenzione di ogni modello.Identifying these processes and how you address them can help you understand the operational complexity involved in maintaining each model.

Requisiti di residenza dei dati e necessità di supportare più aree geograficheData Residency Requirements and the need to support multiple geographies

Power BI Embedded supporta la distribuzione in più aree geografiche (funzionalità di anteprima).Power BI Embedded supports multi-geo deployment (preview feature). La funzionalità Multi-Geo consente alle risorse di Power BI Embedded di essere distribuite in aree diverse con contenuto specifico assegnato ad aree specifiche.Multi-Geo enables Power BI Embedded resources to be deployed in different regions with specific content assigned to reside in specific regions. Questa funzionalità può essere usata in tutti i modelli, ma può influire sulla quantità di contenuto per la gestione e i costi.This feature can be used across all models, but can have an impact on the amount of content to manage and cost. Attualmente la funzionalità Multi-Geo è progettata per soddisfare i requisiti di residenza dei dati e non migliora le prestazioni spostando i dati più vicino agli utenti.Currently multi-geo is designed for meeting data residency requirements and doesn't improve performance by moving data closer to consumers.

CostoCost

Power BI Embedded usa un modello di acquisto basato sulle risorse, come Power BI Premium.Power BI Embedded has a resource-based purchase model, like Power BI Premium. Si acquistano una o più capacità con memoria e potenza di elaborazione fisse.You purchase one or more capacities with fixed computing power and memory. Questa capacità è l'elemento di costo principale quando si usa Power BI Embedded.This capacity is the main cost item when working with Power BI Embedded. Non sono previsti limiti al numero di utenti che usano la capacità.There's no limit on the number of users using the capacity. L'unico limite è rappresentato dalle prestazioni della capacità.The only limit is the performance of the capacity. È richiesta una licenza di Power BI Pro per ogni utente master o per utenti specifici che devono accedere al portale di Power BI.A Power BI Pro license is required for each master user, or specific users that need to access the Power BI portal.

È consigliabile testare e misurare il carico previsto per la capacità simulando l'ambiente e l'utilizzo reali ed eseguendo test di carico sulla capacità.We recommend testing and measuring the expected load on your capacity by simulating live environment and usage and run load testing on the capacity. È possibile misurare il carico e le prestazioni con le varie metriche disponibili nella capacità di Azure oppure con l'app Premium Capacity Metrics.You can measure the load and performance with the various Metrics available in the Azure capacity or Premium capacity metrics app.

Creazione e personalizzazione del contenutoContent customization and authoring

Esistono due approcci alle applicazioni SaaS che offrono agli utenti la possibilità di modificare e creare report o caricare i dati nel servizio come parte del flusso:There are two approaches to SaaS applications that give users the ability to edit and create reports or upload data into the service as part of the flow:

  • Modalità di creazione/modifica in un iFrame incorporato - L'utente ottiene una visualizzazione del report o una nuova area di disegno vuota all'interno dell'applicazione SaaS.Edit/Create mode in an embedded iFrame - The user gets a view of the report or a new blank canvas inside the SaaS application. In questo modo è possibile usare la barra degli strumenti di Power BI per creare contenuto in base a un set di dati nell'area di lavoro.This way they can use the Power BI toolbar to create content based on a dataset in the workspace. Questa opzione è consigliata poiché è nel contesto dell'utente in un ambiente familiare.We recommend this option since it’s in the user’s context in a familiar environment. Avviare il lavoro e le modifiche è più semplice e l'utente crea un report collegato a un set di dati esistente.It’s easier to get started working and editing, and the user creates a report attached to an existing dataset.

  • Usare Power BI Desktop per creare il contenuto e caricarlo tramite l'interfaccia utente dell'applicazione SaaS nell'area di lavoro.Use Power BI Desktop to create content and upload it through the SaaS application UI to the workspace. Con questo approccio, gli utenti hanno più strumenti a disposizione tramite Power BI Desktop.In this approach, users have more tools to work with using the Power BI Desktop. Tuttavia, questo approccio non è consigliato perché gli utenti devono avere familiarità con uno strumento aggiuntivo all'esterno del contesto dell'applicazione SaaS.However, we do not recommend this approach since users need to be familiar with an additional tool outside of the SaaS application context. Il caricamento di un file PBIX significa che l'utente sta aggiungendo un ulteriore set di dati, che potrebbe essere un duplicato dei set di dati già presenti nell'area di lavoro.Uploading a PBIX file means the user is adding an additional dataset, that might be a duplicate of datasets already in the workspace.

Isolamento basato sull'area di lavoro di Power BIPower BI workspace-based isolation

Con l'isolamento basato sull'area di lavoro di Power BI, l'applicazione SaaS supporta più tenant da un singolo tenant di Power BI.With Power BI workspace-based isolation, the SaaS application supports multiple tenants from a single Power BI tenant. L'isolamento basato sull'area di lavoro contiene tutto il contenuto di Power BI usato da diversi tenant.Workspace-based isolation contains all the Power BI content that different tenants use. La separazione dei tenant viene eseguita a livello di area di lavoro di Power BI, tramite la creazione di più aree di lavoro.The separation of tenants is done at the Power BI workspace level, by creating multiple workspaces. Ogni area di lavoro contiene i set di dati, i report e i dashboard pertinenti per il tenant.Each workspace contains the relevant datasets, reports, and dashboards for that tenant. Inoltre, ogni area di lavoro è connessa solo ai dati di tale tenant.Also, each workspace is connected only to that tenant’s data. Se è necessario un ulteriore isolamento, è possibile creare un utente master o un'entità servizio per ogni area di lavoro e il relativo contenuto.If you need additional isolation, you can create a master user or a service principal for each workspace and its content.

Area di lavoro

Architettura dei datiData architecture

Esistono due approcci principali alla gestione dei dati del tenant.There are two main approaches to manage tenant’s data.

  • Un database separato per ogni tenantA separate database per tenant
  • Un singolo database multi-tenantA single multi-tenant database

Se l'archiviazione delle applicazioni SaaS mantiene un database separato per ogni tenant, la scelta più ovvia è usare i set di dati a tenant singolo in Power BI con la stringa di connessione per ogni set di dati che punta al database corrispondente.If the SaaS application storage is keeping a separate database per tenant, then the natural choice is to use single-tenant datasets in Power BI with the connection string for each dataset pointing to the matching database.

Se l'archiviazione delle applicazioni SaaS usa un database multi-tenancy per tutti i tenant, è facile separare i tenant in base all'area di lavoro.If the SaaS application storage is using a multi-tenancy database for all tenants, it’s easy to separate tenants by workspace. È possibile configurare la connessione al database per il set di dati di Power BI con una query di database con parametri che recupera solo i dati del tenant pertinenti.You can configure the database connection for the Power BI dataset with a parameterized database query that only retrieves the relevant tenant’s data. È possibile aggiornare la connessione con Power BI Desktop o usando l'API con parametri nella query.You can update the connection using the Power BI Desktop or using the API with parameters on the query.

Isolamento dei datiData isolation

I dati in questo modello di tenancy sono separati a livello di area di lavoro.Data in this tenancy model is separated at the workspace level. Un mapping semplice tra un'area di lavoro e un tenant impedisce agli utenti di un tenant di visualizzare il contenuto da un altro tenant.A simple mapping between a workspace and a tenant prevents users from one tenant seeing content from another tenant. L'uso di un singolo utente master richiede di avere accesso a tutte le aree di lavoro diverse.Using a single master user demands you to have access to all the different workspaces. La configurazione dei dati da mostrare a un utente finale viene definita durante la generazione del token di incorporamento, un processo esclusivamente di back-end, che gli utenti finali non possono vedere o modificare.The configuration of which data to show an end user is defined during the generation of the embed token, a backend-only process which end users can’t see, or change.

Per aggiungere ulteriore isolamento, uno sviluppatore di applicazioni può definire un utente master o un'applicazione per ogni area di lavoro anziché un singolo utente master o un'applicazione con accesso a più aree di lavoro.To add additional isolation, an application developer can define a master user or an application per workspace rather than a single master user or application with access to multiple workspaces. In questo modo, è possibile garantire che qualsiasi errore umano o perdita di credenziali non determini l'esposizione dei dati di più clienti.This way, you can ensure that any human error or credential leak does not cause multiple customers' data to be exposed.

ScalabilitàScalability

Un vantaggio di questo modello è che la separazione dei dati in più set di dati per ogni tenant consente di superare i limiti di dimensioni di un singolo set di dati (attualmente 10 GB in una capacità).One advantage of this model is that separating the data into multiple datasets for each tenant overcomes the size limits of a single dataset (currently 10 GB in a capacity). In caso si sovraccarico della capacità è possibile eliminare i set di dati inutilizzati per liberare memoria per i set di dati attivi.When the capacity is overloaded, it can evict unused datasets to free memory for active datasets. Questa attività non è possibile con un singolo set di dati di grandi dimensioni.This task isn't possible with a single large dataset. Con l'uso di più set di dati è anche possibile separare i tenant in più capacità di Power BI, se necessario.Using multiple datasets, it is also possible to separate tenants into multiple Power BI capacities if needed.

Nonostante questi vantaggi, è necessario considerare la possibile scala futura dell'applicazione SaaS.Despite these advantages, one must consider the scale that the SaaS application can reach in the future. Ad esempio, si potrebbero raggiungere i limiti per il numero di artefatti che è possibile gestire.For example, one might reach limitations around the number of artifacts one can manage. Per altri dettagli, vedere le limitazioni per la distribuzione più avanti in questo articolo.See deployment limitations later in this article for more details. Lo SKU della capacità usato introduce un limite per le dimensioni della memoria disponibile per i set di dati, per il numero di aggiornamenti eseguibili contemporaneamente e per la frequenza massima di aggiornamenti dei dati.The capacity SKU used introduces a limit on the size of memory that datasets need to fit in, how many refreshes can run at the same time and the maximum frequency of data refreshes. È consigliabile eseguire test quando si gestiscono centinaia o migliaia di set di dati.It's recommended to test when managing hundreds or thousands of datasets. È anche consigliabile tenere conto del volume medio e di picco per l'utilizzo, così come di eventuali tenant specifici con grandi set di dati o di modelli di utilizzo diversi, gestiti in modo differente rispetto agli altri tenant.It is also recommended to consider the average and peak volume of usage, as well as any specific tenants with large datasets, or different usage patterns, that are managed differently than other tenants.

Automazione e complessità operativaAutomation & operational complexity

Con l'isolamento basato sull'area di lavoro di Power BI, uno sviluppatore di applicazioni potrebbe dover gestire centinaia o migliaia di artefatti.With Power BI workspace-based isolation, an application developer might need to manage hundreds or thousands of artifacts. È fondamentale definire i processi frequenti nella gestione del ciclo di vita dell'applicazione e assicurarsi di avere a disposizione il set corretto di strumenti per eseguire queste operazioni su larga scala in questo modello di tenancy.It’s essential to define the processes that frequently happen in your application lifecycle management, and ensure you have the right set of tools to perform these operations at scale in this tenancy model. Alcuni esempi di operazioni includono:Some example operations include:

  • Aggiunta di un nuovo tenant (cliente)Adding a new tenant (customer)
  • Aggiornamento di un report o dashboard per alcuni o tutti i tenantUpdating a report or dashboard for some or all the tenants
  • Aggiornamento dello schema del set di dati per alcuni o tutti i tenantUpdating the dataset schema for some or all the tenants
  • Personalizzazioni non pianificate per tenant specificiUnplanned customizations for specific tenants
  • Frequenza degli aggiornamenti dei set di datiFrequency of dataset refreshes

Ad esempio, la creazione di un'area di lavoro per un nuovo tenant è un'attività comune, che deve essere automatizzata.For example, creating a workspace for a new tenant is a common task, which needs automation. Con l'API REST di Power BI è possibile ottenere la completa automazione durante la creazione di aree di lavoro.With the Power BI REST API, you can achieve full automation when creating workspaces.

Esigenze Multi-GeoMulti-Geo needs

La funzionalità Multi-Geo implica l'acquisto di una capacità nelle aree geografiche desiderate e l'assegnazione di un'area di lavoro a tale capacità.Multi-geo involves purchasing capacity in the desired regions and assigning a workspace to that capacity. Se è necessario supportare diversi tenant in aree diverse, è necessario assegnare l'area di lavoro del tenant a una capacità nell'area desiderata.If you need to support different tenants in different regions, you need to assign the tenant’s workspace to a capacity in the desired region. Questa attività è un'operazione semplice, con costi non superiori rispetto alla configurazione di tutte le aree di lavoro nella stessa capacità.This task is a simple operation and one where the cost is not more than having all workspaces in the same capacity. Tuttavia, in presenza di tenant che richiedono dati residenti in più aree, tutti gli artefatti nell'area di lavoro devono essere duplicati nella capacità in ogni area, con conseguente aumento sia dei costi che della complessità di gestione.However, if you have tenants that need data resident in multiple regions, all artifacts in the workspace need to be duplicated in each regional capacity, increasing both cost and management complexity.

CostoCost

Gli sviluppatori di applicazioni che usano Power BI Embedded devono acquistare la capacità Power BI Embedded per passare alla produzione.Application developers using Power BI Embedded need to purchase Power BI Embedded capacity to go to production. È importante comprendere l'impatto del modello di isolamento basato sull'area di lavoro e del relativo effetto sulle capacità.It’s important to understand the impact of workspace-based isolation model and their effect on capacities.

Il modello di isolamento basato sull'area di lavoro è adatto alle capacità per i motivi seguenti:The workspace-based isolation model sits well with capacities for the following reasons:

  • L'oggetto più piccolo che è possibile assegnare in modo indipendente a una capacità è un'area di lavoro (non è possibile, ad esempio, assegnare un report), quindi separando i tenant in base alle aree di lavoro, si ottiene la massima flessibilità per la gestione di ogni tenant e delle relative esigenze di prestazioni, nonché per l'ottimizzazione dell'utilizzo della capacità aumentando o riducendo le risorse.The smallest object you can independently assign to a capacity is a workspace that is, you can’t assign a report, for example), so by separating tenants by workspaces, you get full flexibility in managing each tenant and its performance needs, and optimizing capacity utilization by scaling up/down. Ad esempio, i tenant di grandi dimensioni ed essenziali con volume e volatilità elevati possono essere gestiti in una capacità separata per garantire un livello di servizio coerente, raggruppando invece i tenant più piccoli in un'altra capacità per ottimizzare i costi.For example, large and essential tenants with high volume and volatility can be managed in a separate capacity to ensure a consistent service level, while grouping smaller tenants in another capacity to optimize costs.

  • Separare le aree di lavoro significa anche separare i set di dati tra i tenant in modo che i modelli di dati possono trovarsi in blocchi più piccoli, anziché in un singolo set di dati di grandi dimensioni.Separating workspaces also means separating datasets between tenants so that data models can be in smaller chunks, rather than in a single large dataset. Questa attività consente alla capacità gestire meglio l'utilizzo della memoria, eliminando i set di dati piccoli e inutilizzati quando non sono necessari e mantenendo un livello di prestazioni soddisfacente per gli utenti.This task allows the capacity to manage memory usage better, evicting small, and unused datasets when not needed, while keeping users satisfied with the performance.

Gli sviluppatori di applicazioni devono tenere conto del limite per il numero di aggiornamenti paralleli, perché i processi di aggiornamento potrebbero richiedere capacità extra in presenza di più set di dati.Application developers need to consider the limit on the number of parallel refreshes, as refresh processes might need extra capacity when you have multiple datasets.

Creazione e personalizzazione del contenutoContent customization and authoring

Per i principali casi d'uso della creazione del contenuto, lo sviluppatore dell'applicazione deve valutare attentamente quali tenant dispongono di capacità di modifica e quanti utenti in ogni tenant sono autorizzati a eseguire operazioni di modifica.For the primary use cases of content creation, the application developer needs to carefully consider which tenants can have editing capabilities, and how many users in each tenant can edit. Consentire le modifiche a più utenti in ogni tenant può comportare la generazione di molti contenuti, con la possibilità di raggiungere un limite per il set di dati, come il numero di report per set di dati o il numero di set di dati in un'area di lavoro.Permitting multiple users in each tenant to edit can result in many contents being generated, that can reach a dataset limitation such as the number of reports per dataset, or the number of datasets in a workspace. Se si concede agli utenti questa capacità, è consigliabile monitorare attentamente la generazione del contenuto e aumentare le risorse in base alle esigenze.If you give users this capability, we recommend monitoring the content generation closely and scale up as needed. Per gli stessi motivi, non è consigliabile usare questa capacità per la personalizzazione del contenuto, in cui ogni utente può apportare piccole modifiche a un report e salvarlo per uso personale.For the same reasons, we don’t recommend using this capability for content personalization, where each user can make small changes to a report and save it for themselves. Se l'applicazione SaaS consente la personalizzazione del contenuto, è consigliabile introdurre criteri di conservazione dell'area di lavoro per il contenuto specifico degli utenti e comunicarli, in modo da semplificare il flusso di eliminazione del contenuto quando gli utenti finali passano a una nuova posizione, lasciano l'azienda o non usano più la piattaforma.If the SaaS application allows content personalization, consider introducing and communicating workspace retention policies for user-specific content to facilitate the flow of content deletion when end users move to a new position, leaving the company or not using the platform anymore.

Isolamento basato sulla sicurezza a livello di rigaRow-level security-based isolation

Con l'isolamento basato sulla sicurezza a livello di riga, l'applicazione SaaS usa una singola area di lavoro per ospitare più tenant.With row-level security-based isolation, the SaaS application uses a single workspace to host multiple tenants. Questo significa che ogni artefatto, report, dashboard e set di dati di Power BI viene creato una sola volta e usato da tutti i tenant.It means each Power BI artifact report, dashboard, & dataset, is created once all tenants use it. La separazione dei dati tra i tenant viene ottenuta usando la sicurezza a livello di riga sul set di dati multi-tenant.Data separation between tenants is accomplished using row-level security on the multi-tenant dataset. Quando gli utenti finali accedono all'applicazione SaaS e aprono il contenuto, viene generato un token di incorporamento per la sessione dell'utente, con ruoli e filtri che garantiscono che l'utente veda solo i dati per cui è autorizzato.When end users log into the SaaS application and open content, an Embed token is generated for that user’s session, with the roles and filters that ensure the user only sees the data they are permitted to see. Se utenti dello stesso tenant non sono autorizzati a visualizzare gli stessi dati, lo sviluppatore dell'applicazione deve implementare ruoli gerarchici sia tra i tenant che all'interno dello stesso tenant.If users from the same tenant are not permitted to view the same data, the application developer needs to implement hierarchical roles both between tenants and within the same tenant.

Sicurezza a livello di riga

Architettura dei datiData architecture

L'implementazione dell'isolamento basato sulla sicurezza a livello di riga è più comoda quando i dati di tutti i tenant sono archiviati in un unico data warehouse.Implementing row-level security-based isolation is most comfortable when all tenants’ data is stored in a single data warehouse. In questo caso, lo sviluppatore dell'applicazione può passare solo i dati pertinenti dal data warehouse al set di dati di Power BI, tramite DirectQuery o importazione dei dati.In this case, the application developer can pass only the relevant data from the data warehouse into the Power BI dataset, either via Direct Query or data import. Se i dati nel database sono separati per ogni tenant, devono essere combinati in un singolo set di dati e ciò comporta un livello inferiore di separazione tra i tenant esistenti nel database.If data in the database is separated per tenant, it needs to be combined into a single dataset, which results in a lower degree of separation between tenants that existed in the database.

Isolamento dei datiData isolation

Con l'isolamento basato sulla sicurezza a livello di riga, la separazione dei dati avviene tramite definizioni di sicurezza a livello di riga per il set di dati e questo significa che tutti i dati coesistono.With row-level security-based isolation, data separation is accomplished using row-level security definitions on the dataset, which means all the data coexist. Questa forma di separazione dei dati è più soggetta alla perdita di dati a causa di errori degli sviluppatori.This form of data separation is more susceptible to data leakage through developer error. Anche se la sicurezza a livello di riga viene applicata sul back-end e protetta da un utente finale, se i dati sono altamente sensibili o i clienti richiedono la separazione dei dati, potrebbe essere preferibile usare l'isolamento basato sull'area di lavoro.Even though row-level security is done on the backend and secured from an end user, if the data is highly sensitive or customers are asking for data separation, it might be better to use workspace-based isolation.

ScalabilitàScalability

Con l'isolamento basato sulla sicurezza a livello di riga, i dati devono rientrare nel limite di dimensioni del set di dati, che attualmente corrisponde a 10 GB.With row-level security-based isolation, the data needs to fit within the dataset size limit, which is currently 10 GB. Con l'introduzione dell'aggiornamento incrementale e il prossimo rilascio di un endpoint XMLA per set di dati di Power BI, è previsto un aumento significativo del limite di dimensioni per i set di dati.With the introduction of incremental refresh and the upcoming release of an XMLA endpoint for Power BI datasets, the dataset size limit is expected to increase significantly. Tuttavia, i dati devono comunque rientrare nella memoria della capacità, con una quantità di memoria rimanente sufficiente per l'esecuzione degli aggiornamenti dei dati.However, the data still needs to fit into the capacity’s memory, with enough remaining memory for data refreshes to run. Per le distribuzioni su larga scala è necessaria una grande capacità per evitare che gli utenti riscontrano problemi a causa di requisiti di memoria che superano i limiti della capacità corrente.Large-scale deployments need a large capacity to avoid users experiencing issues due to memory exceeding the limits of the current capacity. Alcuni modi alternativi per gestire la scalabilità includono l'uso di aggregazioni o la connessione diretta all'origine dati tramite DirectQuery o una connessione dinamica, in alternativa alla memorizzazione nella cache di tutti i dati della capacità di Power BI.Alternative ways to handle scale include using aggregations or connecting to the data source directly using DirectQuery or Live connection, rather than caching all the data in the Power BI capacity.

Automazione e complessità operativaAutomation & operational complexity

La gestione degli artefatti è decisamente più comoda con l'isolamento basato sulla sicurezza a livello di riga rispetto all'isolamento basato sull'area di lavoro, perché esiste una sola versione di un artefatto per ogni ambiente (sviluppo/test/produzione), anziché una versione per ogni tenant.Managing artifacts is far more comfortable using row-level security-based isolation than with workspace-based isolation as there is only one version of an artifact for each environment (dev/test/production), instead of a version per tenant. Su larga scala, la gestione degli artefatti implica la gestione e l'aggiornamento di decine di artefatti, anziché da migliaia a decine di migliaia.At a large scale, managing artifacts means managing and updating tens of artifacts, rather than thousands to ten-thousands.

Power BI non include ancora un'API per modificare o creare regole e ruoli per la sicurezza a livello di riga.Power BI doesn’t yet have an API to modify or create RLS roles and rules. L'aggiunta o la modifica dei ruoli può essere eseguita solo manualmente in Power BI Desktop.Adding or changing roles can only be done manually in the Power BI Desktop. Se è necessario applicare una gerarchia di sicurezza a livello di riga, la gestione può essere complessa e soggetta a errori in assenza di un'attenta pianificazione.If an RLS hierarchy needs to be applied, it can be complicated and error-prone to manage if you don't plan it carefully.

Se lo sviluppatore dell'applicazione deve gestire molti ruoli e definizioni di ruolo che devono essere creati o aggiornati di frequente, l'isolamento basato sulla sicurezza a livello di riga non è scalabile, dal punto di vista della gestibilità.If the application developer needs to manage many roles and role definitions that need to be created or updated frequently, row-level security-based isolation isn't scalable, from a manageability perspective.

Un'altra complessità operativa è la necessità di monitorare attentamente l'utilizzo della memoria e sviluppare un meccanismo efficiente di avvisi e ridimensionamento per garantire un'esperienza soddisfacente agli utenti.Another operational complexity is the need to closely monitor memory utilization and build a robust mechanism of alerts and scaling to ensure users get a smooth experience.

Esigenze Multi-GeoMulti-Geo needs

Poiché tutti i dati sono archiviati in un singolo set di dati, è difficile soddisfare i requisiti di residenza dei dati che richiedono l'associazione di determinati dati a località specifiche.Since all the data is stored in a single dataset, it is challenging to meet data residency requirements that require certain data to be bound to specific locations. Ciò può aumentare anche notevolmente il costo dell'uso di più aree, perché tutti i dati vengono replicati e archiviati in ogni area.It can also significantly increase the cost of using multiple regions as all the data is replicated and stored in each region. Se solo numero limitato di tenant richiede aree geografiche diverse, è possibile mantenere solo i dati di tali tenant in un'area diversa, usando il modello di isolamento basato sull'area di lavoro descritto in precedenza.If only a limited number of tenants need different geographies, you can keep only those tenants’ data in a different region, using the workspace-based isolation model described above.

CostoCost

Il fattore di costo principale con l'isolamento basato sulla sicurezza a livello di riga è il footprint della memoria del set di dati.The primary cost driver with row-level security-based isolation is the memory footprint of the dataset. È necessaria una capacità sufficiente per archiviare il set di dati e mantenere un buffer di memoria aggiuntiva per eventuali picchi nella richiesta di memoria.You need enough capacity to store the dataset and keep some additional memory buffer for any peaks in memory demand. Un modo per tenere conto di queste esigenze consiste nell'archiviare i dati in un database di SQL Server o in un cubo di SQL Server Analysis Services e usare DirectQuery o una connessione dinamica per recuperare i dati dall'origine dati in tempo reale.One way to mitigate this situation is to store the data in a SQL Server database or SQL Server Analysis Services cube and using Direct Query or a Live connection to retrieve the data from the data source in real time. Questo approccio aumenta il costo delle origini dati, ma riduce la necessità di capacità di grandi dimensioni a causa delle esigenze di memoria, riducendo di conseguenza i costi della capacità di Power BI.This approach increases the cost of the data sources, but reduces the need for large capacity because of memory needs, hence reducing the cost of Power BI capacity.

Creazione e personalizzazione del contenutoContent customization and authoring

Quando gli utenti finali modificano o creano report, possono usare il set di dati multi-tenant di produzione.As end users edit or create reports, they can use the production multi-tenant dataset. Per questo motivo, è consigliabile usare solo l'opzione con iFrame incorporato per modificare o creare report, poiché si basa sullo stesso set di dati, con sicurezza a livello di riga applicata.For that reason, we advise only using the embedded iFrame option to edit or create reports, as it relies on the same dataset, with row-level security applied. Consentire agli utenti il caricamento di file PBIX con set di dati aggiuntivi può essere costoso e difficile da gestire con l'isolamento basato sulla sicurezza a livello di riga.Having users uploading PBIX files with additional datasets can be costly and difficult to manage with row-level security-based isolation. Inoltre, quando gli utenti generano nuovo contenuto nella stessa area di lavoro, è necessario assicurarsi che l'area di lavoro di produzione non raggiunga i limiti massimi ed elaborare un meccanismo efficiente per stabilire quale contenuto è connesso a quale tenant.Also, when users generate new content that is in the same workspace, you need to make sure the production workspace doesn't hit its limits and build a robust mechanism to distinguish which content is connected to which tenant.

Confronto di riepilogo tra i diversi approcciSummary comparison of the different approaches

Importante

L'analisi seguente si basa sullo stato corrente del prodotto.The following analysis is based on the current state of the product. Dato che vengono rilasciate nuove funzionalità con cadenza mensile, verranno fornite in modo continuativo nuove capacità e funzionalità in risposta alle limitazioni e ai punti deboli esistenti.As we are releasing new features on a monthly cadence, we continue to provide new capabilities and features that answer existing limitations and weak spots. Assicurarsi di controllare i post di blog mensili per scoprire le novità e tornare a questo articolo per vedere gli effetti delle nuove funzionalità sulle raccomandazioni per il modello di tenancy.Make sure to check our monthly blog posts to see what’s new and come back to this article to see how new features affect the tenancy model recommendation.

Criteri di valutazioneEvaluation Criteria Basato sull'area di lavoroWorkspace-based Basato sulla sicurezza a livello di rigaRow-level security-based
Architettura dei datiData architecture Più semplice in presenza di un database separato per ogni tenantEasiest when there's a separate database per tenant Più semplice quando tutti i dati per tutti i tenant si trovano in un unico data warehouseEasiest when all the data for all tenants are in a single data warehouse
Isolamento dei datiData isolation Buono.Good. Ogni tenant ha un set di dati dedicato.Each tenant has a dedicated dataset. Moderato.Moderate. Tutti i dati sono nello stesso set di dati condiviso ma gestiti tramite controllo di accesso.All data is in the same shared dataset but managed through access-control.
ScalabilitàScalability Media.Medium. La suddivisione dei dati in più set di dati abilita l'ottimizzazione.Breaking the data into multiple datasets enables optimization. Minima.Lowest. Vincolata dai limiti per i set di dati.Constrained by dataset limits.
Esigenze Multi-GeoMulti-Geo needs Appropriato quando la maggior parte dei tenant è in un'unica area.Good fit when most tenants are only in one region. Non consigliato.Not recommended. Necessità di archiviare l'intero set di dati in più aree.Needs to keep the entire dataset stored in multiple regions.
Automazione e complessità operativaAutomation & operational complexity Buona automazione per singolo tenant.Good automation for the individual tenant. Complessità di gestione di molti artefatti su larga scala.Complex to manage many artifacts at scale. Facilità di gestione degli artefatti di Power BI, ma complessità di gestione della sicurezza a livello di riga su larga scala.Easy to manage Power BI artifacts but complex to manage RLS at scale.
CostoCost Medio-basso.Low-medium. Possibilità di ottimizzare l'utilizzo per ridurre il costo per tenant.Can optimize utilization to reduce cost-per-tenant. Possibili aumenti quando sono necessari aggiornamenti frequenti.Might increase when frequent refreshes are needed. Medio-alto se si usa la modalità Importazione.Medium- high if using Import mode. Medio-basso se si usa la modalità DirectQuery.Low- medium if using Direct Query mode.
Creazione e personalizzazione del contenutoContent customization and authoring Buona soluzione.Good fit. Potrebbero subentrare limitazioni su larga scala.Might hit limitations at large scale. Generazione di contenuto solo in iFrame incorporatoContent generation in embedded iFrame only

Considerazioni e limitazioni per la distribuzioneDeployment considerations and limitations

Limiti per gli artefatti di Power BI:Power BI Artifact limits:

  • Il numero di aree di lavoro V1 (gruppi) di cui un singolo utente/applicazione può essere membro/amministratore è 250.The number of workspaces V1 (groups) that a single user/application can be a member/admin of is 250.
  • Il numero di aree di lavoro V2 (cartelle) di cui un singolo utente/applicazione può essere membro/amministratore è 1000.The number of workspaces V2 (folders) that a single user/application can be a member/admin of is 1000.
  • Il numero di set di dati in una singola area di lavoro è 1000.The number of datasets in a single workspace is 1000.
  • Il numero di report/dashboard connessi a un singolo set di dati è 1000.The number of reports/dashboards connected to a single dataset is 1000.
  • Il limite delle dimensioni di memoria del set di dati per caricare un file PBIX è 10 GB.THe dataset memory size limit to upload a .pbix file is 10 GB.

Considerazioni e limitazioni per le capacità di Power BI:Power BI Capacity considerations and limitations:

  • Ogni capacità può usare solo la memoria e i vCore allocati, in base allo SKU acquistato.Each capacity can only use its allocated memory and V-cores, according to the SKU purchased.
  • Per le dimensioni del set di dati consigliate per ogni SKU, vedere Supporto per set di dati di grandi dimensioni in Power BI Premium.For the recommended dataset size for each SKU, reference Premium large datasets.
  • Le dimensioni massime per il set di dati in una capacità dedicata sono 10 GB.The max dataset size in a dedicated capacity is 10 GB.
  • Il numero di aggiornamenti pianificati per un set di dati in modalità Importazione al giorno è 48.The number of scheduled refreshes for an import mode dataset in a day is 48.
  • L'intervallo tra gli aggiornamenti pianificati per un set di dati in modalità Importazione è 30 minuti.The time between scheduled refreshes for an import mode dataset is 30 minutes.
  • Per informazioni sul numero di aggiornamenti che è possibile eseguire contemporaneamente in una capacità, vedere Ottimizzazione e gestione delle risorse della capacità Microsoft Power BI Premium.For the number of refreshes that can run concurrently on a capacity, reference resource management and optimization.
  • Il tempo medio per il ridimensionamento di una capacità è compreso tra 1 e 2 minuti.The average time of scaling a capacity is between 1-2 minutes. Durante questo periodo, la capacità non è disponibile.During that time, the capacity isn't available. È consigliabile usare un approccio scale-out per evitare tempi di inattività.We recommend using a scale-out approach to avoid downtime.

Passaggi successiviNext steps