Definir ou remover rótulos de sensibilidade usando APIs de administração REST do Power BI
Para atender aos requisitos de conformidade, as organizações geralmente precisam classificar e rotular todos os dados confidenciais no Power BI. Essa tarefa pode ser desafiadora para locatários que têm grandes volumes de dados no Power BI. Para tornar a tarefa mais fácil e eficaz, você pode usar APIs REST de administração do Power BI para definir programaticamente Labels e removeLabels em um grande número de artefatos do Power BI.
As APIs definem ou removem rótulos de artefatos por ID de artefato.
Requisitos e considerações
- Os usuários devem ser administradores de malha para chamar essas APIs.
- O usuário administrador (e o usuário delegado, se fornecido) deve ter direitos de uso suficientes para definir ou remover rótulos.
- Para definir um rótulo de confidencialidade usando a API setLabels, o usuário administrador (ou o usuário delegado, se fornecido) deve ter o rótulo incluído em sua política de rótulo.
- As APIs permitem um máximo de 25 solicitações por hora. Cada solicitação pode atualizar até 2000 artefatos.
- Escopo necessário: Tenant.ReadWrite.All
Documentação da API
Exemplo
O exemplo a seguir demonstra como definir e remover rótulos de sensibilidade em painéis do Power BI. Código semelhante pode ser usado para definir e remover rótulos em modelos semânticos, relatórios e fluxos de dados.
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}");
}
}
}
}