แชร์ผ่าน


ตั้งค่าหรือลบป้ายชื่อระดับความลับโดยใช้ API ของผู้ดูแลระบบ Power BI REST

เพื่อให้เป็นไปตามข้อกําหนดการปฏิบัติตามข้อกําหนด องค์กรมักจําเป็นต้องจัดประเภทและติดป้ายชื่อข้อมูลที่ละเอียดอ่อนทั้งหมดใน Power BI งานนี้อาจเป็นเรื่องท้าทายสําหรับผู้เช่าที่มีข้อมูลจํานวนมากใน Power BI เพื่อทําให้งานง่ายขึ้นและมีประสิทธิภาพมากขึ้น คุณสามารถใช้ REST API ของผู้ดูแลระบบ Power BI เพื่อตั้งค่า Labels ทางโปรแกรมและ removeLabels บนวัตถุ Power BI จํานวนมากได้

API ตั้งค่าหรือลบป้ายชื่อจากวัตถุโดย ID สิ่งประดิษฐ์

ข้อกําหนดและข้อควรพิจารณา

  • ผู้ใช้ต้องเป็นผู้ดูแลระบบ Fabric เพื่อเรียกใช้ API เหล่านี้
  • ผู้ใช้ที่เป็นผู้ดูแลระบบ (และผู้ใช้ที่ได้รับมอบสิทธิ์ ถ้ามี) ต้องมีสิทธิ์ในการใช้งานเพียงพอในการตั้งค่าหรือลบป้ายชื่อออก
  • หากต้องการตั้งค่าป้ายชื่อระดับความลับโดยใช้ setLabels API ผู้ใช้ผู้ดูแลระบบ (หรือผู้ใช้ที่ได้รับมอบสิทธิ์ ถ้ามี) จะต้องมีป้ายชื่อรวมอยู่ในนโยบายป้ายกํากับของพวกเขา
  • API อนุญาตให้มีการร้องขอได้สูงสุด 25 คําขอต่อชั่วโมง คําขอแต่ละรายการสามารถอัปเดตได้ถึง 2000 วัตถุ
  • ขอบเขตที่จําเป็น: ผู้เช่า.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}");
                    }
                }

            }

        }