Condividi tramite


Impostare o rimuovere etichette di riservatezza usando le API di amministrazione REST di Power BI

Per soddisfare i requisiti di conformità, le organizzazioni devono spesso classificare ed etichettare tutti i dati sensibili in Power BI. Questa attività può risultare complessa per i tenant con volumi elevati di dati in Power BI. Per semplificare e rendere più efficace l'attività, è possibile usare le API REST amministrative di Power BI per le operazioni programmatiche di setLabels e removeLabelsin un numero elevato di artefatti di Power BI.

Le API impostano o rimuovono etichette dagli artefatti in base all'ID artefatto.

Problemi e considerazioni

  • Gli utenti devono essere amministratori di Fabric per chiamare queste API.
  • L'utente amministratore (e l'utente delegato, se specificato) deve disporre di diritti di utilizzo sufficienti per impostare o rimuovere etichette.
  • Per impostare un'etichetta di riservatezza usando l'API setLabels, l'utente amministratore (o l'utente delegato, se specificato) deve includere l'etichetta nei criteri di etichetta.
  • Le API consentono un massimo di 25 richieste all'ora. Ogni richiesta può aggiornare fino a 2000 artefatti.
  • Ambito necessario: Tenant.ReadWrite.All

Documentazione sull'API

Esempio

L'esempio seguente illustra come impostare e rimuovere etichette di riservatezza nei dashboard di Power BI. È possibile usare codice simile per impostare e rimuovere etichette su modelli semantici, report e flussi di dati.

            const string adminBearerToken = "<adminBearerToken>";
            const string ApiUrl = "<api url>";
            var persistedDashboardId = Guid.Parse("<dashboard object Id>");
            var credentials = new TokenCredentials(adminBearerToken, "Bearer");

            var artifacts = new InformationProtectionArtifactsChangeLabel();
            artifacts.Dashboards = new List<ArtifactId> { new ArtifactId(id: persistedDashboardId) };

            using (PowerBIClient client = new PowerBIClient(credentials))
            {
                client.BaseUri = new Uri(ApiUrl);

                // Delete labels

               var removeResponse = client.InformationProtection.RemoveLabelsAsAdmin(artifacts);

                foreach (var updateLabelResult in removeResponse.Dashboards)
                {
                    if (updateLabelResult.Status == Status.Succeeded)
                    {
                        Console.WriteLine($"label has been deleted from artifact {updateLabelResult.Id}");
                    }
                    else
                    {
                        Console.WriteLine($"label has not been deleted from artifact {updateLabelResult.Id}");
                    }
                }

                // Set labels

                var setLabelRequest = new InformationProtectionChangeLabelDetails();
                setLabelRequest.Artifacts = artifacts;
                setLabelRequest.LabelId = Guid.Parse("<label Id>");

                // assignmentMethod (optional)
                setLabelRequest.AssignmentMethod = AssignmentMethod.Priviledged;

                // delegetedUser (optional)
                var delegatedUser = new DelegatedUser();
                delegatedUser.EmailAddress = "<delegated user email address>";

                setLabelRequest.DelegatedUser = delegatedUser;

                var setResponse = client.InformationProtection.SetLabelsAsAdmin(setLabelRequest);
                foreach (var updateLabelResult in setResponse.Dashboards)
                {
                    if (updateLabelResult.Status == Status.Succeeded)
                    {
                        Console.WriteLine($"label has been upsert on artifact {updateLabelResult.Id}");
                    }
                    else
                    {
                        Console.WriteLine($"label has not been upsert on artifact {updateLabelResult.Id}");
                    }
                }

            }

        }