0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Microsoft Fabric】Notebook で Workspace ごとの Admin 一覧を取得する

0
Last updated at Posted at 2026-06-08

概要

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 相当として扱います。


処理概要

  1. notebookutils.credentials.getToken("pbi") で Fabric REST API 用トークンを取得
  2. Fabric Admin API で Workspace 一覧を取得
  3. 各 Workspace のアクセス詳細を取得
  4. workspaceRole = Admin のみを抽出
  5. 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 への書き込み処理を追加してください。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?