Freigeben über


Festlegen oder Entfernen von Vertraulichkeitsbezeichnungen mit Power BI-Administrator-REST-APIs

Um Complianceanforderungen zu erfüllen, müssen Organisationen häufig alle vertraulichen Daten in Power BI klassifizieren und bezeichnen. Diese Aufgabe kann für Mandanten mit großen Datenmengen in Power BI eine Herausforderung darstellen. Um die Aufgabe einfacher und effektiver durchzuführen, bietet Power BI Administrator-REST-APIs, mit denen setLabels und removeLabels für eine Vielzahl von Power BI-Artefakten programmgesteuert ausgeführt werden können.

Bei diesen APIs werden Bezeichnungen für Artefakte nach Artefakt-ID festgelegt oder entfernt.

Anforderungen und Überlegungen

  • Benutzer*innen müssen Fabric-Administrator*innen sein, um diese APIs aufzurufen.
  • Der Administratorbenutzer (und ggf. der delegierte Benutzer) muss über ausreichende Nutzungsrechte zum Festlegen oder Entfernen von Bezeichnungen verfügen.
  • Um eine Vertraulichkeitsbezeichnung mithilfe der setLabels-API festzulegen, muss der Administratorbenutzer (oder ggf. der delegierte Benutzer) die Bezeichnung in der Bezeichnungsrichtlinie eingeschlossen haben.
  • Die APIs lassen maximal 25 Anforderungen pro Stunde zu. Jede Anforderung kann bis zu 2.000 Artefakte aktualisieren.
  • Erforderlicher Bereich: Tenant.ReadWrite.All

API-Dokumentation

Beispiel

Im folgenden Beispiel wird veranschaulicht, wie Vertraulichkeitsbezeichnungen in Power BI-Dashboards festgelegt und entfernt werden. Mit ähnlichem Code können Bezeichnungen für semantische Modelle, Berichte und Datenflüsse festgelegt und entfernt werden.

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

            }

        }