本記事ではMicrosoft Fabric(以下、Fabric)のAPIを使用して、メタデータの取得を行う手順を解説していきます。APIにはいろいろな種類がありますが、今回は対象のテナントに属するFabricのワークスペースIDの一覧の取得を行います。
前提として、操作するユーザーにはFabric管理者および、グローバル管理者権限が付与されているものとします。
対象者はAzureポータルの操作および、Fabriポータルの操作、PowerShellの操作ができる方とします。
API利用設定
FabricのAPIを実行するためには、Azureポータルおよび、Fabricポータルでの設定が必要です。以下、順番に設定を行っていきます。
Azureポータルの設定
Azureポータルにログインして、検索ウィンドウで”Entra”を入力し、”Microsoft Entra ID”をクリックします。

左のメニューの”アプリの登録”をクリックします。

”新規登録”をクリックします。

任意の名前を入力し、画面下部の”登録”をクリックします。

アプリケーション(クライアント)IDとディレクトリ(テナント)IDを控えておき、左メニューの”証明書とシークレット”をクリックします。

”新しいクライアントシークレット”をクリックします。

”追加”をクリックします。

”値”と”シークレットID”をコピーして控えておきます。

左メニューの”APIのアクセス許可”をクリックして、”アクセス許可の追加”をクリックします。

右側の”Power BI Service”をクリックします。

アプリケーションに必要なアクセス許可の種類の”委任されたアクセス許可”をクリックし、検索Windowで”Tenant”を入力します。アクセス許可のTenantから”Tenant.Read.All”にチェックを入れて、”アクセス許可の追加”をクリックします。

”【操作しているテナント名】に管理者の同意を与えます”をクリックします。

”はい”をクリックします。

Tenant.Read.Allの状態が緑のチェックになっていることを確認します。

Entra IDの左メニューから”グループ”をクリックします。

”新しいグループ”をクリックします。

グループの種類がセキュリティになっていることを確認し、グループ名に任意の名前を入力して、”メンバーが選択されていません”をクリックします。右側のメンバーの追加で、先ほど作成したアプリケーションを検索し、チェックを入れて”選択”をクリックします。

1人のメンバーを選択しました、と表示されていることを確認して”作成”をクリックします。

以上でAzureポータルの設定は完了です。
Fabricポータルの設定
Fabricポータルにログインして、右上の歯車アイコンをクリックし、右下の”管理ポータル”をクリックします。

”テナント設定”をクリックし、右ペインを下のスクロールして、”サービスプリンシパルはFabricの公開用APIを呼び出すことができます”が有効化され、組織全体が選択されていることを確認します。
※ 有効化されていない場合には有効化し、適用先を組織全体にして、適用をクリックします。

更にスクロールし、”サービスプリンシパルは読み取り専用管理APIにアクセスできます”が有効化されていることを確認します。適用先の特定のセキュリティグループに、前述の手順で作成したグループ名を登録して、”適用”をクリックします。

以上でFabricポータルの設定は完了です。
APIの実行
今回はワークスペースIDの一覧を取得する次のAPIを実行します。
"https://api.powerbi.com/v1.0/myorg/admin/workspaces/modified"
PowerShellを起動して以下のコードを実行します。ディレクトリ(テナント)ID、アプリケーション(クライアント)ID、クライアントシークレットの値には前述の手順で控えておいたものを代入します。
$tenantId = "ディレクトリ(テナント)ID"
$clientId = "アプリケーション(クライアント)ID"
$clientSecret = "クライアントシークレットの値"
$tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
# Power BI API scope
$scope = "https://analysis.windows.net/powerbi/api/.default"
# Request body for client credentials token
$body = @{
client_id = $clientId
scope = $scope
client_secret = $clientSecret
grant_type = "client_credentials"
}
# Get Access Token
try {
$response = Invoke-RestMethod -Method Post -Uri $tokenEndpoint -ContentType "application/x-www-form-urlencoded" -Body $body
$accessToken = $response.access_token
} catch {
Write-Error "Failed to obtain access token: $_"
exit
}
# API endpoint to get modified workspaces (Admin API)
$apiUri = "https://api.powerbi.com/v1.0/myorg/admin/workspaces/modified"
# Set Authorization header
$headers = @{
Authorization = "Bearer $accessToken"
}
# Call Power BI API
try {
$result = Invoke-RestMethod -Uri $apiUri -Headers $headers -Method Get
# Output the result - you can customize how to display/process
$result | ConvertTo-Json -Depth 5
} catch {
Write-Error "Failed to call Power BI API: $_"
}
上記を実行すると、以下のようにテナントに属するFabricのワークスペースIDの一覧が出力されます。(IDの箇所を黒でマスキングしてるので、見にくい点はご容赦ください)

おわりに
APIを利用することで、Fabricのメタデータを取得することが可能です。
また、取得だけではなく、以下のようにFabric自体の操作も行うことができるので運用にも応用ができるかと思います。
Fabric 容量 - REST API (Azure Fabric) |Microsoft Learn
土山 和也(日本ビジネスシステムズ株式会社)
ユーザーサポート、開発、運用、構築業務を経験し、現在はアーキテクトとして提案・プロジェクト支援に従事。専門はデータベースでDBA歴十数年。Azure/AWSを担当。
担当記事一覧