규정 준수 요구 사항을 충족하기 위해 조직은 종종 Power BI에서 모든 중요한 데이터를 분류하고 레이블을 적용해야 합니다. Power BI에 많은 양의 데이터가 있는 테넌트의 경우 이 작업이 어려울 수 있습니다. 작업을 더 쉽게 효과적으로 수행하기 위해 Power BI 관리 REST API를 사용하여 많은 수의 Power BI 아티팩트에 대해 프로그래밍 방식으로 setLabels와 removeLabels를 설정할 수 있습니다.
API는 아티팩트 ID별로 아티팩트에서 레이블을 설정하거나 제거합니다.
요구 사항 및 고려 사항
- 사용자는 이러한 API를 호출하려면 Fabric 관리자여야 합니다.
- 관리 사용자(및 제공된 경우 위임된 사용자)는 레이블을 설정하거나 제거할 수 있는 충분한 사용 권한이 있어야 합니다.
- setLabels API를 사용하여 민감도 레이블을 설정하려면 관리 사용자(또는 제공된 경우 위임된 사용자)의 레이블 정책에 레이블이 포함되어 있어야 합니다.
- API는 시간당 최대 25개의 요청을 허용합니다. 각 요청은 최대 2000개의 아티팩트까지 업데이트할 수 있습니다.
- 필수 범위: Tenant.ReadWrite.All
API 설명서
예제
다음 샘플에서는 Power BI 대시보드에서 민감도 레이블을 설정하고 제거하는 방법을 보여 줍니다. 유사한 코드를 사용하여 의미 체계 모델, 보고서, 데이터 흐름에 대한 레이블을 설정하고 제거할 수 있습니다.
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}");
}
}
}
}