Compartir a través de


Establecimiento o eliminación de etiquetas de confidencialidad con las API REST de administración de Power BI

Para cumplir los requisitos de cumplimiento, a menudo es necesario que las organizaciones clasifiquen y etiqueten todos los datos confidenciales en Power BI. Esta tarea puede resultar complicada para los inquilinos que tienen grandes volúmenes de datos en Power BI. Para facilitar esta tarea y que sea más eficaz, use las API REST de administración de Power BI para establecer setLabels y removeLabels mediante programación en cantidades grandes de artefactos de Power BI.

Las API establecen etiquetas o las quitan de los artefactos por identificador de artefacto.

Requisitos y consideraciones

  • Para llamar a estas API, el usuario debe tener derechos de administrador (por ejemplo, Administrador global de Microsoft 365 o Administrador del servicio Power BI).
  • El usuario administrador (y el usuario delegado, si se proporciona) deben tener derechos de uso suficientes para establecer o quitar etiquetas.
  • Para establecer una etiqueta de confidencialidad con la API setLabels, el usuario administrador (o el usuario delegado, si se proporciona) debe incluir la etiqueta en su directiva de etiqueta.
  • Las API permiten un máximo de 25 solicitudes por hora. Cada solicitud puede actualizar hasta 2000 artefactos.
  • Ámbito requerido: Tenant.ReadWrite.All

Documentación de la API

Muestra

En el ejemplo siguiente se muestra cómo establecer y quitar etiquetas de confidencialidad en los paneles de Power BI. Se puede usar código similar para establecer y quitar etiquetas en modelos semánticos, informes y flujos de datos.

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

            }

        }