SPN + Azure Runbook + Webhook = Power BI Refresh (pt. 1) (한국어)

(Perico Riccardo) (2020 년 8 월 17 일)

iv id의 멋진 arcticle 을 최근 읽었습니다. = “f7c3c30753″>

Nicky Van Vroenhoven .

시나리오에서 Nicky는 특정 작업 후 Power BI 데이터 세트 새로 고침을 실행해야합니다. SQL Server 에이전트 작업의 단계이며 실제 사용자의 자격 증명을 사용하지 않고 .

그는 로그인하고 SPN을 통해 데이터 세트 새로 고침을 실행하는 PowerShell 스크립트를 만들었습니다.

이 내용을 읽은 후이를 캡슐화 할 수 있을지 생각하기 시작했습니다. 다양한 유형의 애플리케이션에 대한 진입 점이 될 수있는 다른 아키텍처.

아이디어는 PowerShell 스크립트를 Azure Automation Runbook

그런 다음 URI에 대한 게시 요청을 간단히 수행 할 수있는 모든 애플리케이션에서 사용할 수 있도록합니다.

장점 :

1. 하나의 중앙 집중식 스크립트 버전

2. Power BI 관리 모듈 이 애플리케이션 컴퓨터에 설치되어 있지 않지만 설치되었습니다. 실행이 시작될 때 온 디맨드로 프로비저닝 된 VM 세트의 클라우드 에서 실행됩니다

3. Runbook을 예약 할 수 있습니다 (이미 Power BI 새로 고침을 예약 할 수 있기 때문에 추가 기능 일 수도 있습니다).

4. 암호화 된 자격 증명 지원 SPN 암호를 몰라도 작동하도록합니다

5. 변수 지원 새로 고침 컨텍스트를 동적으로 변경합니다

6. 웹 후크는 간단한 POST 호출로 블랙 박스로 노출되도록 지원합니다.

다음 전제 조건이 이미 있다고 가정 해 보겠습니다. 현재 위치 :

-AAD에서 SPN 생성 및 설정

-SPN에 대해 Power BI 테넌트 수준에서 사용하도록 설정된 API

-SPN 사용자가있는 Worspace V2 admin

이미 설정되어 있고 지금부터 설정을 실행하는 것이 매우 쉬운 경우 Azure Portal에서 수동으로 수행 할 수 있지만 Az 모듈 , 복제가 더 빠르고 쉬우 며 “클릭”이 적습니다. 🙂 (PowerShell 5.1.X에서 일부 버그를 발견했기 때문에 MSFT에서 제안한대로 PowerShell 7.x를 사용합니다.)

먼저 리소스 생성을위한 설정 매개 변수 :

$resource\_group\_name = ""
$automation\_account\_name = ""
$automation\_account\_location = ""
$runbook\_name = ""
$tenant\_id = ""
$group\_id = "" # Workspace ID
$dataset\_id = "" # Dataset to Refresh ID
$app\_id = "" # Service PRincipal ID
$Password = ConvertTo-SecureString "ThisIsMyPassword" -AsPlainText -Force # Secret from Service Principal

그런 다음 연결 azure 구독

Connect-AzAccount

Azure Automation 만들기 계정 (원하는 경우 기존 계정을 사용할 수 있음)

New-AzAutomationAccount -ResourceGroupName $resource\_group\_name -Location $automation\_account\_location -Name $automation\_account\_name

PowerShell 코드를 호스팅 할 Runbook 을 생성합니다 (PowerShell과 동일한 Type 매개 변수에 유의)

New-AzAutomationRunbook -Name $runbook\_name -ResourceGroupName $resource\_group\_name -AutomationAccountName $automation\_account\_name -Type PowerShell

데이터 세트를 새로 고침하는 데 필요한 ID 값을 호스팅 할 3 개의 변수를 만듭니다.

New-AzAutomationVariable -Name ‘TenantID’ -Description ‘Power BI Tenant ID’ -Value $tenant\_id -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name -Encrypted $falseNew-AzAutomationVariable -Name ‘GroupID’ -Description ‘Power BI Workspace ID’ -Value $group\_id -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name -Encrypted $falseNew-AzAutomationVariable -Name ‘DatasetID’ -Description ‘Power BI Dataset ID’ -Value $dataset\_id -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name -Encrypted $false

Azure Automation의 자격 증명 기능을 활용하여 안전하게 SPN 암호 저장 :

$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $app\_id, $passwordNew-AzAutomationCredential -name ‘SPN’ -Description ‘Service Principal’ -Value $Credential -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name

전체 코드 :

환경이 준비되었습니다.

수동으로 2 단계 만 수행하면됩니다.

1. MicrosoftPowerBIMgmt.Profile PowerShell 모듈 을 Azure Automation으로 가져옵니다. 이를 통해 Azure Automation은 해당 모듈에 포함 된 cmdlet을 사용할 수 있습니다.

a. Azure Portal 열기

b. Azure Automation 계정으로 이동합니다.

c. 왼쪽 블레이드의 “Shared Resources”에서 “Modules Gallery”를 클릭합니다.

d. “MicrosoftPowerBIMgmt.Profile”을 검색합니다.

이자형. 그것을 선택하고 “가져 오기”를 클릭하십시오.

2. Power BI 새로 고침을 수행하기위한 PowerShell 스크립트 추가 API 호출을 통해

최신 글

보관함

메타