SPN + Azure Runbook + Webhook = Power BI Refresh (bod 1)

(Perico Riccardo) (17. srpna 2020)

Čekal jsem skvěle arcticle od Nicky Van Vroenhoven .

Ve svém scénáři musí Nicky aktivovat aktualizaci datové sady Power BI po konkrétním krok v práci agenta serveru SQL Server, a to je nutné provést bez použití přihlašovacích údajů skutečného uživatele .

Udělal to vytvořením skriptu PowerShell, který se přihlásí a spustí aktualizaci datové sady prostřednictvím SPN.

Po přečtení toho začnu přemýšlet, jestli bych to mohl zapouzdřit do odlišná architektura, která by mohla být vstupním bodem pro mnoho typů různých aplikací.

Cílem je zabalit skript PowerShell do Runbooku Azure Automation

a poté jej zpřístupnit všem aplikacím, které mohou jednoduše provést žádost o příspěvek na URI.

Výhody:

1. Pouze jedna centralizovaná verze skriptu

2. Modul pro správu Power BI není nainstalován na aplikačním stroji, ale je nainstalován a provedeno v cloudu na sadě virtuálních počítačů zřízených na vyžádání při spuštění spuštění

3. Runbook lze naplánovat (možná to není výhoda, pouze další funkce, protože již můžeme naplánovat aktualizaci Power BI)

4. Podpora šifrovaných pověření , aby fungovala bez znalosti tajemství SPN

5. Proměnné podporují dynamickou změnu kontextu vaší aktualizace

6. Webhooks podporuje vystavit jej jako černou skříňku jednoduchým POST voláním

Předpokládejme již následující předpoklady na místě:

– SPN vytvořeno a nastaveno v AAD

– Povolená rozhraní API používají na úrovni tenanta Power BI pro SPN

– Worspace V2 s uživatelem SPN jako admin

Pokud je nastavení od nynějška spuštěno, je to docela snadné, mohlo by to provést ručně portál Azure, ale dávám přednost PowerShell s Az modul , je to rychlejší, snáze se replikuje a méně „klikavě kliká“ 🙂 (použijte PowerShell 7.x, jak navrhuje MSFT, protože jsem našel nějaké chyby používající jej v PowerShell 5.1.X).

Nejprve nastavení parametrů pro vytváření zdrojů:

$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

Poté připojit k azurovému předplatnému

Connect-AzAccount

Vytvoření Azure Automation Účet (můžete použít existující)

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

Vytvořte Runbook , který bude hostovat náš kód PowerShell (všimněte si parametru Type rovného PowerShell)

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

Vytvořte 3 proměnné, které budou hostovat hodnoty pro ID potřebné k aktualizaci datové sady:

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

Bezpečně ukládejte tajemství SPN využívající funkci pověření Azure Automation:

$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

Celý kód:

Prostředí je připraveno.

Provedení pouze dvou ručních kroků:

1. Importujte modul MicrosoftPowerBIMgmt.Profile PowerShell do Azure Automation. To umožňuje Azure Automation používat rutiny obsažené v tomto modulu.

a. Otevřete portál Azure

b. Přejděte na váš účet Azure Automation

c. V levém okně v části „Sdílené zdroje“ klikněte na „Galerie modulů“

d. Vyhledejte „MicrosoftPowerBIMgmt.Profile“

E. Vyberte jej a klikněte na „Importovat“

2. Přidejte skript PowerShellu a proveďte aktualizaci Power BI prostřednictvím volání API