Dela via


Ange eller ta bort känslighetsetiketter med power BI REST-administratörs-API:er

För att uppfylla efterlevnadskraven måste organisationer ofta klassificera och märka alla känsliga data i Power BI. Den här uppgiften kan vara en utmaning för klienter som har stora mängder data i Power BI. För att göra uppgiften enklare och effektivare kan du använda POWER BI-administratörens REST-API:er för att programatiskt angeLabels och ta bortLabels på ett stort antal Power BI-artefakter.

API:erna anger eller tar bort etiketter från artefakter med artefakt-ID.

Krav och överväganden

  • Användare måste ha administratörsbehörighet (till exempel Global Microsoft 365-administratör eller Infrastrukturadministratör) för att kunna anropa dessa API:er.
  • Administratörsanvändaren (och den delegerade användaren, om den tillhandahålls) måste ha tillräcklig användningsbehörighet för att kunna ange eller ta bort etiketter.
  • Om du vill ange en känslighetsetikett med hjälp av setLabels-API:et måste administratörsanvändaren (eller den delegerade användaren, om den tillhandahålls) ha etiketten inkluderad i sin etikettprincip.
  • API:erna tillåter högst 25 begäranden per timme. Varje begäran kan uppdatera upp till 2 000 artefakter.
  • Obligatoriskt omfång: Tenant.ReadWrite.All

API-dokumentation

Exempel

Följande exempel visar hur du ställer in och tar bort känslighetsetiketter på Power BI-instrumentpaneler. Liknande kod kan användas för att ange och ta bort etiketter på semantiska modeller, rapporter och dataflöden.

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

            }

        }