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