Power BI REST 관리 API를 사용하여 민감도 레이블 설정 또는 제거

규정 준수 요구 사항을 충족하기 위해 조직은 종종 Power BI에서 모든 중요한 데이터를 분류하고 레이블을 적용해야 합니다. Power BI에 많은 양의 데이터가 있는 테넌트의 경우 이 작업이 어려울 수 있습니다. 작업을 더 쉽게 효과적으로 수행하기 위해 Power BI 관리 REST API를 사용하여 많은 수의 Power BI 아티팩트에 대해 프로그래밍 방식으로 setLabelsremoveLabels를 설정할 수 있습니다.

API는 아티팩트 ID별로 아티팩트에서 레이블을 설정하거나 제거합니다.

요구 사항 및 고려 사항

  • 이런 API를 호출하려면 사용자에게 관리자 권한(예: Microsoft 365 전역 관리자 또는 Fabric 관리자)이 있어야 합니다.
  • 관리 사용자(및 제공된 경우 위임된 사용자)는 레이블을 설정하거나 제거할 수 있는 충분한 사용 권한이 있어야 합니다.
  • 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}");
                    }
                }

            }

        }