Power BI REST yönetici API'lerini kullanarak duyarlılık etiketlerini ayarlama veya kaldırma

Uyumluluk gereksinimlerini karşılamak için kuruluşların genellikle Power BI'daki tüm hassas verileri sınıflandırması ve etiketlemesi gerekir. Bu görev, Power BI'da büyük hacimli verileri olan kiracılar için zor olabilir. Görevi daha kolay ve etkili hale getirmek için çok sayıda Power BI yapıtı üzerinde yönetici REST API'lerini kullanarak programlı olarak etiketleri ayarlayabilir ve etiketleri kaldırabilirsiniz.

API'ler yapıt kimliğine göre etiketleri ayarlar veya yapıtlardan kaldırır.

Gereksinimler ve dikkat edilmesi gerekenler

  • Bu API'leri çağırmak için kullanıcıların Doku yöneticisi olması gerekir.
  • Yönetici kullanıcının (ve varsa temsilci kullanıcının) etiketleri ayarlamak veya kaldırmak için yeterli kullanım haklarına sahip olması gerekir.
  • setLabels API'sini kullanarak bir duyarlılık etiketi ayarlamak için, yönetici kullanıcı (veya varsa temsilci kullanıcı) etiketin, etiket ilkesinde yer alması gerekmektedir.
  • API'ler saatte en fazla 25 isteğe izin verir. Her istek en fazla 2000 yapıt güncelleştirebilir.
  • Gerekli kapsam: Tenant.ReadWrite.All

API belgeleri

Örnek

Aşağıdaki örnekte, Power BI panolarında duyarlılık etiketlerini ayarlama ve kaldırma işlemleri gösterilmektedir. Benzer kod, anlamsal modellerde, raporlarda ve veri akışlarında etiketleri ayarlamak ve kaldırmak için kullanılabilir.

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

            }

        }