使用 Power BI REST 系統管理員 API 設定或移除敏感度標籤

為了滿足合規性需求,組織通常需要分類和標記 Power BI 中的所有敏感性資料。 對於在 Power BI 中具有大量資料的租用戶而言,此工作可能具有挑戰性。 若要讓工作更容易且更有效率,您可以使用 Power BI 系統管理員 REST API,在大量 Power BI 成品上以程式設計方式設定 setLabelsremoveLabels

API 會依成品識別碼設定或移除成品中的標籤。

需求和考量

  • 使用者必須是 Fabric 系統管理員,才能呼叫這些 API。
  • 管理使用者 (和提供的委派使用者) 必須有足夠的使用權限 (部分機器翻譯) 來設定或移除標籤。
  • 若要使用 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}");
                    }
                }

            }

        }