#はじめに
本記事では、MicrosoftAzureが提供しているPowerBI APIを利用し、ServicePrincipalからPowerBIアカウントに接続を行う一連の流れを解説して行きます。
実行環境
AzureActiveDirectory :PowerBI接続用にアプリ(ServicePrincipal)を作成します。
PowerShell:Mac版を使用
MicrosoftPowerBIMgmtモジュール:以下のコマンドより、インストールしてください。(最新版がインストールされます。)
Install-Module -Name MicrosoftPowerBIMgmt
#事前準備
事前準備として、以下の項目を実施します。
・ServicePrincipalの作成
・ServicePrincipalへ自己証明書のインストール
##ServicePrincipalの作成
AzurePortalに接続後、左のブレードからAzureActiveDirectoryを選択、アプリの登録を押下してください。
そして、画面上部の新規登録ボタンを選択、アプリケーションの登録画面に遷移します。下の画面が出てきたらOK
パラメータですが、以下で設定します。
名前:Powerbiapp
その他は規定
登録を押すと、以下のようにServicePrincipalが作成されているはずです。
出来ましたね。アプリケーションIDとディレクトリ(テナント)IDは接続時に使用するため、控えておきましょう。
##ServicePrincipalへ自己証明書のインストール
ServicePrincipalからPowerBIへ接続する際ですが、証明書認証のみの対応のため、今回は自己証明書をServicePrincipalへインストールします。
(ユーザアカウントを利用する場合はID、パスワードで認証可能です。)
自己証明書の作成方法については本記事では省略します。
それでは、先ほど作成したPowerbiappより証明書とシークレットを選択してください。
選択後、以下の画面が表示されます。
この画面から証明書のアップロードを行います。アップロードが正しく完了していると以下のような表示に変わっているはずです。拇印は接続時に使用するため控えておきましょう。
#PowerShellから実際に接続してみる
PowerShellを開きまずは以下のコマンドを実行。PowerBIのモジュールをインポートします。
Import-Module -Name MicrosoftPowerBIMgmt
次にパラメータの設定を行います。
$applicationid = <控えていたアプリケーションID>
$tenantid = <控えていたテナントID>
$thumbprint = <控えていた拇印>
準備が整いました。それでは接続してみましょう。以下のスクリプトを実行。
Connect-PowerBIServiceAccount -ServicePrincipal -ApplicationId $applicationid -CertificateThumbprint $thumbprint -TenantId $tenantid
以下が出力されたら成功です!
Environment : Public
TenantId : <テナントID>(これは出力されてなくてもOKです。)
ClientId : <アプリケーションID>
CertificateThumbprint : <拇印>
#おまけ
PowerBIアカウントに接続できたら次のコマンドレットを実行してみてください。
これはPowerBI側のワークスペース一覧を取得するコマンドレットです。
Get-PowerBIWorkspace
実行すると...?あれ、失敗しましたね...
Get-PowerBIWorkspace: Operation returned an invalid status code 'Unauthorized'
失敗の原因ですが、ServicePrincipalがPowerBI側のリソースをReadする権限がないことに
よるものです。Read権限を付与する方法は次回の記事で書こうと思います。