Ustawianie lub usuwanie etykiet poufności przy użyciu interfejsów API administratora REST usługi Power BI

Aby spełnić wymagania dotyczące zgodności, organizacje często muszą klasyfikować i oznaczać wszystkie poufne dane w usłudze Power BI. To zadanie może być trudne w przypadku dzierżaw, które mają duże ilości danych w usłudze Power BI. Aby ułatwić i bardziej efektywne zadanie, możesz użyć interfejsów API REST administratora usługi Power BI do programowego ustawiania i usuwaniaLabels na dużej liczbie artefaktów usługi Power BI.

Interfejsy API ustawiają lub usuwają etykiety z artefaktów według identyfikatora artefaktu.

Wymagania i zagadnienia

  • Użytkownicy muszą mieć uprawnienia administratora (takie jak administrator globalny platformy Microsoft 365 lub administrator sieci szkieletowej), aby wywoływać te interfejsy API.
  • Użytkownik administracyjny (i użytkownik delegowany, jeśli podano) musi mieć wystarczające prawa użytkowania, aby ustawić lub usunąć etykiety.
  • Aby ustawić etykietę poufności przy użyciu interfejsu API setLabels, administrator (lub użytkownik delegowany, jeśli podano) musi mieć etykietę dołączona do zasad etykiet.
  • Interfejsy API umożliwiają maksymalnie 25 żądań na godzinę. Każde żądanie może zaktualizować maksymalnie 2000 artefaktów.
  • Wymagany zakres: Tenant.ReadWrite.All

Dokumentacja interfejsu API

Przykład

W poniższym przykładzie pokazano, jak ustawić i usunąć etykiety poufności na pulpitach nawigacyjnych usługi Power BI. Podobny kod może służyć do ustawiania i usuwania etykiet na semantycznych modelach, raportach i przepływach danych.

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

            }

        }