概要
Microsoft Fabric / Power BI の Workspace 棚卸し向けに、各 Workspace の Admin ユーザー / グループ / Service Principal を一覧化する Fabric Notebook です。
参考 Notebook は以下に置いています。
目的
- Workspace ごとの Admin / Owner 相当の担当者を確認する
- Fabric / Power BI Workspace の権限棚卸しに利用する
- ガバナンス、運用引き継ぎ、管理者レビューに利用する
Fabric / Power BI Workspace には単一の
Ownerフィールドはないため、本 Notebook ではworkspaceRole = Adminを Owner 相当として扱います。
処理概要
-
notebookutils.credentials.getToken("pbi")で Fabric REST API 用トークンを取得 - Fabric Admin API で Workspace 一覧を取得
- 各 Workspace のアクセス詳細を取得
-
workspaceRole = Adminのみを抽出 - Notebook 上に Summary / Detail / Error を表示
利用 API:
GET https://api.fabric.microsoft.com/v1/admin/workspaces
GET https://api.fabric.microsoft.com/v1/admin/workspaces/{workspaceId}/users
前提条件
- Fabric Notebook を実行できる Workspace があること
- 実行ユーザーまたは実行 ID が Fabric Admin API を呼び出せること
- 必要な権限:
Tenant.Read.AllまたはTenant.ReadWrite.All - PySpark Notebook ランタイムを利用できること
使い方
1. Notebook を配置
Fabric Workspace に Notebook をインポートし、例として以下の名前で保存します。
NB_Export_Workspace_Admins
配置先 Workspace 名の例:
Fabric Governance Hub
Fabric Admin Operations
Fabric Workspace Inventory
2. パラメーターを確認
Notebook の最初のセルで必要に応じて変更します。
CAPACITY_ID = ""
EXCLUDE_PERSONAL_WORKSPACES = True
EXCLUDE_ADMIN_MONITORING_WORKSPACE = True
WORKSPACE_STATE = "Active"
ADMIN_ONLY = True
REQUEST_INTERVAL_SECONDS = 18
MAX_WORKSPACES_TO_PROCESS = None
初回テストでは、少数の Workspace のみ処理することを推奨します。
MAX_WORKSPACES_TO_PROCESS = 5
REQUEST_INTERVAL_SECONDS = 5
確認後、本番向けに戻します。
MAX_WORKSPACES_TO_PROCESS = None
REQUEST_INTERVAL_SECONDS = 18
3. Notebook を実行
全セルを上から順に実行します。最後に以下の 3 つが表示されます。
| 出力 | 内容 |
|---|---|
df_summary |
Workspace ごとの Admin 一覧 |
df_detail |
Admin プリンシパル単位の詳細 |
df_errors |
API 呼び出し失敗時のエラー |
出力サンプル
以下はマスキング済みのサンプルです。実際の ID、メールアドレス、tenant 名は置き換えています。
Summary sample
workspace_id,workspace_name,workspace_type,workspace_state,capacity_id,domain_id,admin_names_or_emails,admin_principal_types,admin_count
<workspace-id-003>,testworkspace1,Workspace,Active,<capacity-id-001>,,admin@example.onmicrosoft.com,User,1
<workspace-id-004>,testworkspace2,Workspace,Active,<capacity-id-001>,,admin@example.onmicrosoft.com; user01@example.onmicrosoft.com,User,2
<workspace-id-005>,testworkspace3,Workspace,Active,<capacity-id-001>,,admin@example.onmicrosoft.com,User,1
Detail sample
workspace_id,workspace_name,workspace_type,workspace_state,capacity_id,domain_id,principal_id,principal_name,principal_type,user_principal_name,group_type,service_principal_app_id,admin_name_or_email,access_type,workspace_role,extracted_at_utc
<workspace-id-003>,testworkspace1,Workspace,Active,<capacity-id-001>,,<principal-id-001>,System Administrator,User,admin@example.onmicrosoft.com,,,admin@example.onmicrosoft.com,Workspace,Admin,2026-06-08 09:43:19
<workspace-id-004>,testworkspace2,Workspace,Active,<capacity-id-001>,,<principal-id-002>,User 01,User,user01@example.onmicrosoft.com,,,user01@example.onmicrosoft.com,Workspace,Admin,2026-06-08 09:43:38
<workspace-id-004>,testworkspace2,Workspace,Active,<capacity-id-001>,,<principal-id-001>,System Administrator,User,admin@example.onmicrosoft.com,,,admin@example.onmicrosoft.com,Workspace,Admin,2026-06-08 09:43:38
注意事項
- Fabric Admin API にはレート制限があります。大規模 tenant では
REQUEST_INTERVAL_SECONDS = 18を推奨します。 - Admin が Entra ID グループの場合、この Notebook はグループ名まで表示します。メンバー展開には Microsoft Graph API が別途必要です。
-
401/403が出る場合は、実行ユーザーの Fabric 管理者権限または API 権限を確認してください。 - この Notebook は結果を保存しません。必要な場合は、別途 Lakehouse / Table / CSV への書き込み処理を追加してください。