日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

Microsoft FabricのService Principals in Fabric Data Warehouseとは?変更点と確認ポイント

Microsoft FabricのFabric Data Warehouseでバッチ処理、CI/CD、外部ツール接続を自動化している場合、「Service Principals in Fabric Data Warehouse」は必ず確認しておきたい公式情報です。結論から言うと、Fabric Data Warehouseでサービスプリンシパル(SPN)を使う目的は、個人ユーザーの資格情報に依存せず、Warehouseの作成・管理・接続・クエリ実行を安全に自動化することです。特に、所有者が退職した場合の停止リスク、30日ごとのサインイン要件、COPY INTOOPENROWSET実行時の初期トークン問題、権限付与の分離が実務上の重要ポイントになります。(Microsoft Learn)

なお、2026年5月8日の公式GitHub履歴では、該当ドキュメントを含むマージが確認できます。一方、Microsoft Learn本文上の最終更新日は2026年3月30日と表示されています。5月8日の差分を見る限り、service-principals.md自体は「data warehouse」を「warehouse」に統一する表記調整、監視ページ名や所有権変更リンク名の修正が中心です。製品仕様が大きく変わったというより、SPN運用で確認すべき前提や制限を正しく理解することが重要です。(GitHub)

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

Service Principals in Fabric Data Warehouseとは

Service Principals in Fabric Data Warehouseは、Microsoft FabricのWarehouseでサービスプリンシパルをセキュリティIDとして使うための公式ドキュメントです。サービスプリンシパルは、Microsoft Entra ID上のアプリケーションを表す非対話型のIDで、人間のユーザーではなく、アプリケーションや自動化ツールが認証・認可を行うために使います。(Microsoft Learn)

Fabric Data Warehouseでは、SPNを使うことで次のような運用が可能になります。

利用シーンSPNを使うメリット
Warehouseの作成・更新・削除個人アカウントではなく自動化用IDでREST APIを実行できる
SSMSなどのクライアント接続Microsoft Entra Service Principal認証でWarehouseへ接続できる
Data Factoryパイプラインスケジュール実行されるT-SQLやCOPY INTOを人のサインインに依存せず実行しやすい
本番運用の権限管理SPNに必要な権限だけを付与し、最小特権で運用できる
監査・モニタリングクエリ実行者としてSPNを識別しやすい

従来のように個人ユーザーの資格情報でWarehouseやデータ連携を作成すると、そのユーザーが退職・異動・アカウント停止になったときに、OneLakeへのアクセスや自動化処理が止まるリスクがあります。公式ドキュメントでも、所有者IDに依存する問題を避けるため、WarehouseをSPNで作成することが推奨されています。(Microsoft Learn)

何が変わるのか:個人ID依存からアプリケーションID中心の運用へ

今回押さえるべき本質は、「Warehouseを誰が操作しているか」を個人ユーザーからアプリケーションIDへ移すことです。

Fabric Data Warehouseでは、管理者・メンバー・共同作成者のワークスペースロールを持つユーザーが、SPN認証を使ってFabric REST API経由でWarehouseアイテムを作成、更新、読み取り、削除できます。これにより、プロビジョニングや管理作業をユーザー資格情報に依存せず自動化できます。(Microsoft Learn)

特に注意すべき変化は次の3つです。

確認ポイントこれまで起きやすかった問題SPN利用時の考え方
所有者個人ユーザーが所有者になり、退職・無効化で処理が止まるWarehouseの作成や所有権をSPN中心に設計する
認証手動サインインや個人トークンに依存するOAuth 2.0のクライアント資格情報フローなどで自動化する
権限ワークスペース権限だけで済むと誤解しやすいコントロールプレーン権限とデータプレーン権限を分けて付与する

ここで重要なのは、SPNを登録するだけではFabric Data Warehouseを安全に使える状態にはならないことです。Entra ID、Fabric管理ポータル、ワークスペース、Warehouse内部のT-SQL権限をそれぞれ確認する必要があります。

対象者:管理者だけでなく開発者・DevOps担当者も確認が必要

Service Principals in Fabric Data Warehouseの影響を受けるのは、Fabric管理者だけではありません。Warehouseを自動展開する開発者、SSMSやData Factoryから接続するデータエンジニア、CI/CDを設計するDevOps担当者も確認対象です。

立場確認すべきこと
Fabric管理者テナント設定でSPNによるFabric API利用が許可されているか
Entra ID管理者アプリ登録、SPN、シークレット、セキュリティグループが正しく構成されているか
ワークスペース管理者SPNに適切なワークスペースロールまたはアイテム権限を付与しているか
データベース管理者GRANTなどで必要なT-SQL権限だけを付与しているか
開発者SSMS、スクリプト、Data FactoryパイプラインでSPN認証を使えるか
DevOps担当者初期トークン生成、シークレット管理、30日更新、制限事項をパイプラインに組み込んでいるか

管理者がテナント設定だけを有効化しても、Warehouse側の権限が不足していればクエリは失敗します。反対に、Warehouse側でGRANT SELECTを付与しても、Fabric REST API側の初期化やワークスペースアクセスが不足していれば、外部ストレージアクセスやAPI実行でつまずきます。

事前に確認すべき設定

Fabric Data WarehouseでSPNを使うには、複数のレイヤーを順に確認します。

Microsoft Entra IDでSPNを用意する

まず、Microsoft Entra IDでアプリケーションを登録し、サービスプリンシパル、アプリケーションID、シークレット、テナントIDを用意します。SPN管理はEntra ID管理の範囲に含まれるため、Fabric担当者だけで完結しない場合があります。公式ドキュメントでも、Entra ID管理者からApp ID、Secret、Tenant IDを入手する前提が示されています。(Microsoft Learn)

実務では、SPNを直接全社に許可するのではなく、専用のMicrosoft Entraセキュリティグループを作成し、そのグループにSPNを追加してからFabricのテナント設定に指定するのが管理しやすい方法です。

Fabric管理ポータルのテナント設定を確認する

Fabric側では、サービスプリンシパルがFabric APIを使えるようにする設定が必要です。Developer tenant settingsでは、Fabric public APIsのCRUD操作に対して「Service principals can call Fabric public APIs」を使う説明があり、許可されたセキュリティグループにSPNを含める必要があります。新しい顧客環境では、この設定は既定で有効と説明されていますが、既存テナントや管理ポリシーによって状態が異なる可能性があるため、必ず管理ポータルで確認してください。(Microsoft Learn)

また、管理API向けのSPN認証では、Fabric管理ポータルで対象の設定を有効化し、Specific security groupsに対象グループを追加してApplyする手順が示されています。管理APIとWarehouseの通常操作APIは目的が異なるため、どのAPIを使うのかに応じて必要な設定を切り分けることが重要です。(Microsoft Learn)

ワークスペースまたはアイテム権限を付与する

SPNは、ワークスペースの「Manage access」からワークスペースロールを使ってWarehouseへアクセスできます。加えて、Fabric Item Permissionsを使ってWarehouseアイテムをSPNに共有することもできます。(Microsoft Learn)

ここでの注意点は、ワークスペース管理者権限を安易に付けすぎないことです。CI/CD用SPN、読み取り専用連携用SPN、データロード用SPNを分けると、障害調査や監査のときに原因を追いやすくなります。

Warehouse内部でT-SQL権限を付与する

Fabricのアクセス権限には、コントロールプレーンとデータプレーンがあります。ワークスペースロールやアイテム権限は、主にFabric上のリソース管理やアクセス制御に関わります。一方、実際にどのテーブルを読めるか、どの操作を実行できるかは、Warehouse側でT-SQLのGRANTを使って制御します。公式ドキュメントでも、最小特権の原則に従ってSPNへ必要なデータプレーン権限を付与することが推奨されています。(Microsoft Learn)

例として、特定テーブルの読み取りだけを許可する場合は次のようにします。

GRANT SELECT ON <table name> TO <service principal name>;

本番環境では、最初から広い権限を与えるのではなく、用途ごとに権限を絞ることが大切です。たとえば、レポート更新用SPNにはSELECT中心、データロード用SPNには対象スキーマへの必要な書き込み権限、管理用SPNには運用手順で必要な権限だけを付与します。

SSMSやクライアントアプリからSPNで接続する方法

Fabric Warehouseには、SQL Server Management Studio(SSMS)19以降などのツールからSPNで接続できます。認証方式は「Microsoft Entra Service Principal」を選び、ユーザー名にはアプリケーション(クライアント)ID、パスワードにはシークレットを指定します。(Microsoft Learn)

接続確認で失敗する場合は、次の順で切り分けると効率的です。

症状主な原因確認ポイント
SSMSで認証できないApp ID、Secret、Tenant IDの誤りEntra IDのアプリ登録とシークレット有効期限を確認する
接続できるがテーブルが読めないデータプレーン権限不足WarehouseでGRANT SELECTなどを確認する
APIでは見えるがSQL実行に失敗するワークスペース権限とT-SQL権限の混同コントロールプレーンとデータプレーンを分けて確認する
外部ストレージアクセスで失敗する初期Fabricトークンが未生成REST APIでSPNの初期トークンを確立する

SSMSで接続できたことは、すべてのデータ操作が許可されたことを意味しません。Warehouse内部の権限を必ず確認してください。

初期トークンと30日更新が最もつまずきやすい

実務で特に見落としやすいのが、SPNのトークン初期化です。Fabricでは、SPNはFabricポータルに対話的にサインインできません。そのため、対話型ユーザーのようにポータル側で暗黙的にControl Planeトークンが初期化されず、API呼び出しによって明示的にFabricトークンを生成または更新する必要があります。(Microsoft Learn)

新しく作成したSPNでは、Fabric REST APIを使って初期のFabricセキュリティトークンを生成する必要があります。SQL分析エンドポイントの接続文字列でWarehouseへ接続しても、SPNのFabricトークンは生成されません。最初に成功したAPI呼び出しが、Fabric内でSPNのトークンを確立します。(Microsoft Learn)

これは、COPY INTOOPENROWSETで外部ストレージへアクセスする処理では特に重要です。権限があるように見えるのに「ファイルが存在しない」「アクセス許可がない」といったエラーが出る場合、実際にはSPNの初期トークンが確立されていない可能性があります。

公式手順では、Azure CLIでSPNとしてログインし、https://api.fabric.microsoft.com向けのアクセストークンを取得したうえで、ワークスペース内のアイテム一覧取得など任意のFabric APIを呼び出す例が示されています。(Microsoft Learn)

az login --service-principal `
  -u <APP_ID> `
  -p <SECRET> `
  --tenant <TENANT_ID>

$accessToken = az account get-access-token `
  --resource https://api.fabric.microsoft.com `
  --query accessToken -o tsv

$workspaceId = "<WORKSPACE_GUID>"
$url = "https://api.fabric.microsoft.com/v1/workspaces/$workspaceId/items"
$headers = @{ Authorization = "Bearer $accessToken" }

Invoke-RestMethod -Method GET -Uri $url -Headers $headers

自動化する場合、シークレットをスクリプトやリポジトリに平文で置くのは避けるべきです。公式ドキュメントでも、Azure Key Vaultにシークレットを保存し、スクリプトや自動化パイプラインから取得する方法が示されています。(Microsoft Learn)

所有権移行と展開時の注意点

既存のWarehouseが個人ユーザー所有になっている場合は、所有権の扱いを確認してください。Warehouseの所有権は、SPNからユーザー、ユーザーからSPNへ変更できます。ただし、FabricポータルからSPNを所有者として設定することはできず、PowerShellまたはREST APIを使う必要があります。(Microsoft Learn)

SPNへ所有権を移す場合は、次の順で進めると安全です。

手順作業内容注意点
現状確認Warehouse所有者、ワークスペースロール、実行中パイプラインを洗い出す個人ユーザー所有の本番Warehouseを優先する
SPN準備Entra IDアプリ、シークレット、セキュリティグループを整備するシークレット期限と保管場所を決める
Fabric設定テナント設定、ワークスペースアクセス、アイテム権限を確認する管理API設定とDeveloper設定を混同しない
権限付与Warehouse内で必要なT-SQL権限を付与する最小特権で開始する
初期化REST API呼び出しでSPNトークンを確立するSQL接続だけでは初期化されない
切り替え所有権変更やパイプライン接続を更新する本番反映前に検証環境で再現する
監視DMV、Query Insights、Data Warehouse Monitor、Capacity metrics appで実行主体を確認するSPNのClient IDで追跡できるようにしておく

移行時にやってはいけないのは、「とりあえず管理者権限を付けて動かす」ことです。動作確認は早く進みますが、後から権限を絞るのが難しくなり、監査でも説明しにくくなります。まず用途を分け、読み取り用・ロード用・管理用のSPNを整理してから権限を設計しましょう。

モニタリングで確認すべき項目

SPNがWarehouseでクエリを実行した場合、Fabric Data Warehouse Monitorや関連ビューで実行主体を確認できます。公式ドキュメントでは、sys.dm_exec_sessionslogin_namequeryinsights.exec_requests_historyビューのlogin_name、Fabric Data Warehouse Monitorのsubmitter、Capacity metrics appのBackground operations drill through tableにあるUser列などが確認先として挙げられています。(Microsoft Learn)

監視で見るべきポイントは、単に「成功したか」だけではありません。

確認項目見る理由
どのSPNが実行したか個人ユーザーではなく自動化IDで動いているか確認する
実行時間と頻度想定外のループや過剰実行を検知する
使用容量・コンピュートSPN実行によるコスト影響を把握する
失敗クエリ権限不足、トークン未初期化、外部ストレージ接続エラーを早期に見つける
実行対象テーブルSPNに不要なデータアクセスが発生していないか確認する

本番展開後は、少なくとも初回の数日間はSPN単位で実行ログを追跡するのがおすすめです。特に夜間バッチやData Factoryパイプラインでは、失敗が翌営業日まで発見されないことがあるため、アラート設計も合わせて見直してください。

制限事項:Git APIとT-SQL Notebookには注意

Service Principals in Fabric Data Warehouseには、明確な制限事項もあります。公式ドキュメントでは、SPNはGit APIsではサポートされず、Deployment pipeline APIsのみでサポートされること、また現時点ではSPNがFabricのT-SQL Notebooksを実行できないことが記載されています。(Microsoft Learn)

この制限は、CI/CD設計に直接影響します。

やりたいことSPN利用時の注意点
Git連携をSPNで完全自動化したいGit APIsはSPN非対応のため、別方式を検討する
Deployment pipeline APIsを使いたいSPNサポートの範囲内で設計できる
T-SQL NotebookをSPNで実行したい現時点では実行できないため、別の実行方法を検討する
Data FactoryからT-SQLを定期実行したいSPN権限と初期トークンを整備すれば現実的な選択肢になる

開発チームが「SPN対応」と聞いて、すべてのFabric機能をSPNで実行できると誤解するケースがあります。導入前に、対象APIや実行方式ごとのサポート状況を確認してください。

管理者・開発者向けチェックリスト

SPN対応を進める際は、次のチェックリストを使うと抜け漏れを減らせます。

チェック項目完了の目安
Entra IDでアプリ登録とSPNを作成したApp ID、Tenant ID、Secretを管理できている
SPNを専用セキュリティグループに追加したFabric設定で指定するグループが明確になっている
Fabric管理ポータルでSPN利用設定を確認した必要なAPI種別に応じた設定が有効になっている
SPNにワークスペースまたはアイテム権限を付与した対象Warehouseへアクセスできる
Warehouse内でT-SQL権限を付与した必要なテーブル・操作だけに限定している
初回Fabric REST API呼び出しを実行したSPNのFabricセキュリティトークンが確立されている
30日更新を自動化した手動サインインに依存していない
シークレットをKey Vaultなどで管理した平文保存やリポジトリ混入を避けている
監視でSPNの実行主体を確認したDMVやMonitorで追跡できる
制限事項をCI/CD設計に反映したGit APIやT-SQL Notebookの非対応を考慮している

よくある失敗と対処法

SPNを作成しただけでWarehouseに接続しようとする

SPNをEntra IDで作成しても、Fabric側のテナント設定、ワークスペースアクセス、Warehouse内部権限がなければ実行できません。まず「Entra ID」「Fabric管理ポータル」「ワークスペース」「Warehouse内部」の4層で権限を確認してください。

SQL接続で初期トークンが作られると誤解する

SQL分析エンドポイントに接続しても、SPNのFabricトークンは生成されません。新しいSPNでは、最初にFabric REST APIを成功させてControl Plane側のトークンを確立する必要があります。COPY INTOOPENROWSETで原因不明の認証エラーが出る場合は、この点を最初に疑うべきです。(Microsoft Learn)

ワークスペース管理者権限を付けすぎる

動作確認のためにSPNへ広い権限を付けると、本番運用で不要なデータアクセスが残りやすくなります。SPNは人間よりも継続的に動くため、権限の過剰付与は影響が大きくなります。用途ごとにSPNを分け、T-SQL権限も必要最小限に絞りましょう。

CI/CDでGit APIまでSPN化できると思い込む

公式ドキュメントでは、SPNはGit APIsではサポートされず、Deployment pipeline APIsのみでサポートされるとされています。Git連携を含めた完全自動化を設計している場合は、実行方式を事前に見直してください。(Microsoft Learn)

まず取るべき行動

Fabric Data Warehouseを本番運用している場合は、最初に既存Warehouseの所有者と自動化処理を棚卸ししてください。個人ユーザーが所有者になっているWarehouse、個人資格情報で動いているData Factoryパイプライン、手動サインインに依存しているバッチがあれば、SPNへの移行候補です。

次に、テナント設定とワークスペース権限を確認し、検証環境でSPNによるREST API呼び出し、SSMS接続、GRANT後のクエリ実行、COPY INTOOPENROWSETの動作を確認します。最後に、Key Vaultによるシークレット管理、30日ごとのトークン更新、Monitorでの実行主体確認まで含めて本番展開します。

Service Principals in Fabric Data Warehouseは、単なる認証方式の追加ではなく、Fabric Data Warehouseを個人依存から自動化・監査・最小特権を前提とした運用へ移すための重要な設計ポイントです。管理者はテナント設定と権限設計を、開発者は初期トークンと実行環境を、DevOps担当者は制限事項とCI/CDの実装方法を確認してから展開しましょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次