SPN + Azure Runbook + Webhook = Power BI frissítés (1. oldal)

(Perico Riccardo) (2020. augusztus 17.)

Nemrégiben olvastam egy nagyszerű sarkvidéket , Nicky Van Vroenhoven .

A forgatókönyvében Nickynek be kell indítania a Power BI-adatkészletet egy adott után. lépés az SQL Server Agent munkájában, és ezt lépésben kell megtenni valódi felhasználó hitelesítő adatainak használata nélkül .

Egy olyan PowerShell-szkript létrehozásával készült, amely bejelentkezik és az SPD-n keresztül frissíti az adatkészletet.

Ennek elolvasása után elkezdek gondolkodni, hogy ezt be tudom-e foglalni egy másik architektúra, amely számos különböző alkalmazás belépési pontja lehet.

Az ötlet az, hogy a PowerShell-parancsfájlt egy Azure Automation Runbook

, majd tegye elérhetővé minden olyan alkalmazás számára, amely egyszerűen képes URI-hez küldeni egy postakérést.

Előnyök:

1. Csak a szkript egyetlen központosított verziója

2. A Power BI felügyeleti modul nincs telepítve az alkalmazás gépére, de telepítve van és a felhőben hajtják végre, a végrehajtás megkezdésekor igény szerint biztosított virtuális gépek halmazán

3. A Runbook ütemezhető (lehet, hogy ez nem adavantage, csak egy kiegészítő szolgáltatás, mivel már ütemezhetünk egy Power BI frissítést)

4. A titkosított hitelesítő adatok támogatják a alkalmazást annak érdekében, hogy az SPN titka ismerete nélkül is működni tudjon.

5. A A változók támogatják a funkciót a frissítés kontextusának dinamikus megváltoztatásához

6. A webhookok támogatják a t, hogy fekete dobozként tegyék közzé egy egyszerű POST-hívással.

Tegyük fel, hogy a következő előfeltételek már léteznek a helyén:

– Az SPN létrehozva és beállítva az AAD-ben

– Az engedélyezett API-k a Power BI bérlői szintjén használják az SPN-hez

– Worspace V2 SPN felhasználóval admin

Ha ez már működik, és mostantól futtatja a telepítést, akkor az nagyon egyszerű, manuálisan megteheti az Azure Portal, de én inkább a PowerShell-et a Az modul , gyorsabb, könnyebben reprodukálható és kevésbé „kattanós-kattintásos” 🙂 (használja az MSFT által javasolt PowerShell 7.x-et, mivel néhány hibát találtam a PowerShell 5.1.X-ben).

Először beállítási paraméterek az erőforrások létrehozásához:

$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

Ezután csatlakozzon az azure előfizetéshez

Connect-AzAccount

Azure Automation létrehozása Fiók (ha akarsz, használhatsz már meglévőt is)

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

Hozzon létre egy Runbook , amely a PowerShell-kódot fogja üzemeltetni (vegye figyelembe a Type paramétert, amely megegyezik a PowerShell-lel)

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

Hozzon létre 3 változót, amelyek az adatkészlet frissítéséhez szükséges azonosítók értékeit fogják tárolni:

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

Az SPN-titkok biztonságos tárolása az Azure Automation hitelesítési adatainak kihasználásával:

$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

Teljes kód:

A környezet készen áll.

Csak 2 manuális lépés a végrehajtáshoz:

1. Importálja a MicrosoftPowerBIMgmt.Profile PowerShell modult az Azure Automation programba. Ez lehetővé teszi az Azure Automation számára, hogy az adott modulban lévő parancsmagokat használja.

a. Nyissa meg az Azure Portal

b. Keresse meg az Azure Automation-fiókot

c. A bal panelen a „Megosztott források” alatt kattintson a „Modulok galéria” elemre.

d. Keressen rá a „MicrosoftPowerBIMgmt.Profile” kifejezésre

e. Válassza ki, és kattintson az „Importálás” gombra.

2. PowerShell-parancsfájl hozzáadása a Power BI frissítéséhez az API-hívásokon keresztül