Nastavení nebo odebrání popisků citlivosti pomocí rozhraní REST API pro správu Power BI

Aby organizace splňovaly požadavky na dodržování předpisů, často se vyžadují ke klasifikaci a označení všech citlivých dat v Power BI. Tato úloha může být náročná pro tenanty, kteří mají velké objemy dat v Power BI. Pokud chcete úlohu zjednodušit a efektivněji, můžete pomocí rozhraní REST API pro správu Power BI programově nastavit a odebratbely u velkého počtu artefaktů Power BI.

Rozhraní API nastavují nebo odebírají popisky z artefaktů podle ID artefaktů.

Požadavky a důležité informace

  • Uživatelé musí být správci prostředků infrastruktury, aby mohli tato rozhraní API volat.
  • Pokud je uživatel správce (a delegovaný uživatel, pokud je zadaný), musí mít dostatečná práva k používání k nastavení nebo odebrání popisků.
  • Pokud chcete nastavit popisek citlivosti pomocí rozhraní SETLabels API, musí mít uživatel správce (nebo delegovaný uživatel, pokud je k dispozici) popisek zahrnutý v zásadách popisku.
  • Rozhraní API umožňují maximálně 25 požadavků za hodinu. Každý požadavek může aktualizovat až 2 000 artefaktů.
  • Požadovaný obor: Tenant.ReadWrite.All

Dokumentace k rozhraní API

Vzorek

Následující ukázka ukazuje, jak nastavit a odebrat popisky citlivosti na řídicích panelech Power BI. Podobný kód lze použít k nastavení a odebrání popisků u sémantických modelů, sestav a toků dat.

            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}");
                    }
                }

            }

        }