Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 programmatiskt 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 vara infrastrukturadministratörer 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.Privileged;
// delegatedUser (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}");
}
}
}
}