Delen via


Vertrouwelijkheidslabels instellen of verwijderen met power BI REST-beheer-API's

Om te voldoen aan de nalevingsvereisten, moeten organisaties vaak alle gevoelige gegevens in Power BI classificeren en labelen. Deze taak kan lastig zijn voor tenants met grote hoeveelheden gegevens in Power BI. Als u de taak eenvoudiger en effectiever wilt maken, kunt u REST API's van Power BI-beheerders gebruiken om programmatisch in te stellenLabels en RemoveLabels op grote aantallen Power BI-artefacten.

De API's stellen labels in of verwijderen uit artefacten op artefact-id.

Vereisten en overwegingen

  • Gebruikers moeten Fabric-beheerders zijn om deze API's aan te roepen.
  • De gebruiker met beheerdersrechten (en de gedelegeerde gebruiker, indien opgegeven), moet voldoende gebruiksrechten hebben om labels in te stellen of te verwijderen.
  • Als u een vertrouwelijkheidslabel wilt instellen met behulp van de setLabels-API, moet de gebruiker met beheerdersrechten (of de gedelegeerde gebruiker, indien opgegeven), het label hebben opgenomen in het labelbeleid.
  • De API's staan maximaal 25 aanvragen per uur toe. Elke aanvraag kan maximaal 2000 artefacten bijwerken.
  • Vereist bereik: Tenant.ReadWrite.All

API-documentatie

Voorbeeld

In het volgende voorbeeld ziet u hoe u vertrouwelijkheidslabels instelt en verwijdert op Power BI-dashboards. Vergelijkbare code kan worden gebruikt voor het instellen en verwijderen van labels op semantische modellen, rapporten en gegevensstromen.

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

            }

        }