서비스 주체를 사용하여 Premium 작업 영역 및 의미 체계 모델 작업 자동화

서비스 주체는 무인 리소스 및 서비스 수준 작업을 수행하기 위해 테넌트 내에서 만든 Microsoft Entra ID 앱 등록 입니다. 이 고유한 사용자 ID 유형에는 앱 이름, 애플리케이션 ID, 테넌트 ID 및 암호용 클라이언트 암호 또는 인증서가 있습니다.

Power BI Premium은 Power BI Embedded와 동일한 서비스 주체 기능을 사용합니다. 자세한 내용은 서비스 주체를 사용하여 Power BI 콘텐츠 포함을 참조하세요.

Power BI Premium에서는 서비스 주체를 XMLA(XML 분석) 엔드포인트와 함께 사용하여 작업 영역 프로비전, 모델 배포, 의미 체계 모델 새로 고침과 같은 의미 체계 모델 관리 작업을 자동화할 수 있습니다.

  • PowerShell.
  • Azure Automation.
  • Azure Logic Apps.
  • 사용자 지정 클라이언트 애플리케이션.

새 작업 영역만 서비스 주체를 사용하여 XMLA 엔드포인트 연결을 지원합니다. 클래식 작업 영역은 지원되지 않습니다. 서비스 주체는 할당된 작업 영역에서 작업을 수행하는 데 필요한 권한만 가지고 있습니다. 권한은 일반 UPN(사용자 계정 이름) 계정과 마찬가지로 작업 영역 액세스를 통해 할당됩니다.

쓰기 작업을 수행하려면 용량의 의미 체계 모델 워크로드에 읽기-쓰기 작업이 사용하도록 설정된 XMLA 엔드포인트가 있어야 합니다. Power BI Desktop에서 게시된 의미 체계 모델은 향상된 메타데이터 형식 기능이 사용하도록 설정되어 있어야 합니다.

서비스 주체 만들기

서비스 주체는 Azure Portal에서 또는 PowerShell을 사용하여 앱 등록으로 만듭니다. 서비스 주체를 만들 때는 앱 이름, 애플리케이션(클라이언트) ID, 디렉터리(테넌트) ID 및 클라이언트 암호를 별도로 복사하고 저장해야 합니다. 서비스 주체를 만드는 방법의 단계는 다음을 참조하세요.

Microsoft Entra 보안 그룹 만들기

기본적으로 서비스 주체는 사용하도록 설정된 모든 테넌트 설정에 액세스할 수 있습니다. 관리자 설정에 따라 액세스가 특정 보안 그룹으로 제한되거나 전체 조직으로 확대될 수 있습니다.

서비스 주체 액세스를 특정 테넌트 설정으로 제한하려면 특정 보안 그룹에만 액세스를 허용할 수 있습니다. 또는 서비스 주체에 대한 전용 보안 그룹을 만들고 원하는 테넌트 설정에서 제외할 수 있습니다. 보안 그룹을 만들고 서비스 주체를 추가하려면 Microsoft Entra ID를 사용하여 기본 그룹 만들기 및 멤버 추가를 참조하세요.

서비스 주체를 사용하도록 설정

Power BI에서 서비스 주체 사용을 시작하려면 먼저 관리자가 Power BI 관리 포털에서 서비스 주체 액세스를 사용하도록 설정해야 합니다.

  1. Power BI 관리 포털로 이동한 다음, 테넌트 설정을 선택합니다.
  2. 개발자 설정으로 스크롤한 다음, 서비스 주체가 Power BI API를 사용하도록 허용을 확장합니다.
  3. 사용을 선택합니다.
  4. 보안 그룹에 권한을 적용하려면 특정 보안 그룹(권장)을 선택합니다.
  5. 그룹 이름을 입력합니다.
  6. 적용을 선택합니다.

테넌트 설정이 선택된 관리 포털을 보여 주는 스크린샷 서비스 주체가 Power BI API를 사용할 수 있도록 허용이 강조 표시된 상태로 확장됩니다.

작업 영역 액세스

서비스 주체가 Premium 작업 영역 및 의미 체계 모델 작업을 수행하는 데 필요한 권한을 갖도록 하려면 서비스 주체를 작업 영역 멤버 또는 관리자로 추가해야 합니다. Power BI 서비스에서 작업 영역 액세스를 사용하는 방법은 여기에 설명되어 있지만 그룹 사용자 추가 REST API를 사용할 수도 있습니다.

  1. 작업 영역에 대한 Power BI 서비스에서 기타>작업 영역 액세스를 선택합니다.

    작업 영역 목록을 보여 주는 스크린샷. 더 많은 아이콘 및 작업 영역 액세스가 강조 표시됩니다.

  2. 애플리케이션 이름으로 검색한 다음, 서비스 주체를 관리자 또는 멤버로 작업 영역에 추가합니다.

    서비스 주체 이름을 표시하는 액세스 대화 상자를 보여 주는 스크린샷. 관리자가 선택되었습니다.

XMLA 엔드포인트의 연결 문자열

서비스 주체를 만들고, 테넌트에 대해 서비스 주체를 사용하도록 설정하고, 서비스 주체를 작업 영역 액세스에 추가한 후 XMLA 엔드포인트를 통해 연결 문자열에서 서비스 주체를 사용자 ID로 사용합니다. 차이점은 user idpassword 매개 변수 대신 애플리케이션 ID, 테넌트 ID 및 애플리케이션 비밀을 지정한다는 것입니다.

Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace name>; Initial Catalog=<dataset name>;User ID=app:<appId>@<tenantId>;Password=<app_secret>;

PowerShell

PowerShell 세션을 열어 다음 예제 코드를 실행합니다.

SQLServer 모듈 사용

다음 예제에서는 AppId, TenantIdAppSecret을 사용하여 의미 체계 모델 새로 고침 작업을 인증합니다.

Param (
        [Parameter(Mandatory=$true)] [String] $AppId,
        [Parameter(Mandatory=$true)] [String] $TenantId,
        [Parameter(Mandatory=$true)] [String] $AppSecret
       )
$PWord = ConvertTo-SecureString -String $AppSecret -AsPlainText -Force

$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord

Invoke-ProcessTable -Server "powerbi://api.powerbi.com/v1.0/myorg/myworkspace" -TableName "mytable" -DatabaseName "mydataset" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential

AMO(Analysis Management Objects) 및 ADOMD.NET

클라이언트 애플리케이션 및 웹앱에 연결할 때 NuGet의 AMO 및 ADOMD 클라이언트 라이브러리 버전 15.1.42.26(2020년 6월) 이상 설치 가능한 패키지를 통해 app:AppID 및 암호 또는 cert:thumbprint 구문을 사용하여 연결 문자열에서 서비스 주체를 지원할 수 있습니다.

다음 예제에서 appIDpassword 값은 모델 데이터베이스 새로 고침 작업을 수행하는 데 사용됩니다.

string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data source=powerbi://api.powerbi.com/v1.0/<tenant>/<workspacename>;Initial catalog=<datasetname>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();