はじめに
Microsoft Fabricでデータ基盤を構築するときに必ず考慮する必要のあるセキュリティ関連の話題。ネットワークセキュリティに関しても、GA後に大幅に機能が強化され、受信・送信ともに強力に制限をかけることができるようになった。Azureのネットワーク機能との絡みも多く複雑に感じてしまうこともあるし、制限を強化した場合にFabricの機能自体も制限がかかる部分もあるので、そのあたりをいろいろと整理してみた。
※今後機能のアップデートにより制限の緩和などいろいろと変化が出ると思われるが、本投稿はあくまでも2025/12/17時点での情報であることに注意。
受信トラフィック制限
Fabricでの受信トラフィックの制限は大きく2つのオプションがある。
-
オプション1 - Private Link
VNETのプライベートIPアドレスが使用され、ネットワーク内のユーザーはPrivate Linkを使用してプライベート IP アドレス経由でFabricと通信する。テナントレベルまたはワークスペースレベルでFabricの機能を大幅に制限することになるため、利用にあたってはその制限をよく理解する必要がある。 -
オプション2 - Entra ID条件付きアクセス
ユーザーが認証するとき、IPアドレス、場所、マネージドデバイスを含む一連のポリシーに基づいてアクセス可否を決定。これはFabricの動作に制限を与えることなく利用可能なためすべての機能を使用したい場合かつ受信を制限したい場合に必須のオプション。

From : https://learn.microsoft.com/ja-jp/fabric/security/security-fundamentals
FabricにおけるPrivate Linkの概要
Private Linkを使用すると、ネットワーク内の他のリソースがプライベートIP経由でサービスと通信できるようになる。Private Linkを実装し受信の保護の設定をすると、Fabricはパブリックインターネット経由でアクセスできなくなる。 Fabricにアクセスするには、すべてのユーザーがプライベートネットワーク経由で接続する必要がある。オンプレのネットワークを使用している場合は、ExpressRoute回線とかサイト間VPNを使用してAzureのVNETに拡張し、プライベート接続を使用してFabricにアクセスできる。
Private Linkの種類
-
テナントレベルのPrivate Link
テナント全体にネットワークポリシーを効かせる。 -
ワークスペースレベルのPrivate Link
テナントレベルと比べてより詳細な制御を実施可能。特定のワークスペースへのアクセスを制限しながら、残りのワークスペースをパブリックアクセス用に開いたままにすることができる。
FabricにおけるEntra ID条件付きアクセスの概要
Fabricとのやり取りはすべて、Entra IDで認証される(Microsoft 365、OneDrive、Dynamics 365 で使用されるのと同じ認証方法)。認証時にアクセス可否を決定するために、ユーザーのID、デバイスコンテキスト、場所、ネットワーク、アプリケーションの機密性に基づいて 条件付きアクセスポリシーを定義して適用することができる。たとえば、Fabricのデータやリソースにアクセスするために、多要素認証、デバイスコンプライアンス、承認されたアプリを要求できたり、危険な場所、デバイス、またはネットワークからのアクセスをブロックまたは制限することもできる。※条件付きアクセスを設定するには Microsoft Entra ID P1ライセンスが必要。

https://learn.microsoft.com/ja-jp/fabric/security/security-conditional-access
Private Linkによる受信トラフィックの制限
テナントレベルのPrivate Link
テナントに対してPrivate Link経由でアクセスさせる仕組み。Publicアクセスを拒否する場合はPrivate Link経由でのみアクセスできるようになる。

テナントレベルのPrivate Linkの制限事項(抜粋)
Private Linkを有効化し、パブリックアクセスをブロックすると、いくつかの機能的な制限が適用されるので、ここは要注意。詳細はこちらのドキュメントを要確認だが、特に重要そうな点をこちらに転記しておく。
| 項目 | 制限 |
|---|---|
| OneLake |
|
| Warehouse |
|
| Spark |
|
| Pipelines |
|
| Power BI |
|
| Eventstream |
|
| Eventhouse |
|
| Microsoft Purview |
|
| ミラーリング |
|
| その他 |
|
ワークスペースレベルのPrivate Link
テナントレベルのPrivate Linkと異なり、設定した特定のワークスペースに対してのみPrivate Linkアクセスを有効化する仕組み。
ワークスペースごとにPrivate Linkを構成してアクセス可否を決定できるので、細かく制御することができる。

From: https://learn.microsoft.com/ja-jp/fabric/security/security-workspace-level-private-links-overview
ワークスペースレベルのPrivate LinkでサポートされるFabricアイテム
以下が今のところワークスペースレベルのPrivate Linkを使用している状態でも利用可能なFabricアイテム。逆に言うとこれ以外のアイテムは使えない(Power BI Reportとかセマンティックモデルとか)。
- Lakehouse、SQLエンドポイント、ショートカット
- OneLake エンドポイント経由の直接接続
- Notebook、Spark ジョブ定義、Environment
- 機械学習実験, 機械学習モデル
- Pipelines
- Copy Job
- マウントされた Azure Data Factory
- Warehouse
- Dataflow Gen2 (CI/CD)
- 変数ライブラリ
- ミラー化 データベース
- Eventstream
- Eventhouse
ワークスペースレベルのPrivate Linkの制限事項(抜粋)
テナントレベルと同様に、Private Linkを有効化し、パブリックアクセスをブロックすると、いくつかの機能的な制限が適用されるので、ここは要注意。詳細はこちらのドキュメントを要確認だが、特に重要そうな点をこちらに転記しておく。
| 項目 | 制限 |
|---|---|
| 全般 |
|
| CI/CD |
|
| セマンティックモデル |
|
| Lakehouse |
|
| Pipelines |
|
| OneLake |
|
| Eventstream |
|
| Eventhouse |
|
| Dataflow |
|
| ミラーリング |
|
ワークスペース間の通信
パブリックからのアクセスが制限されているワークスペースでは、他のワークスペースからの接続が制限される。 このシナリオでワークスペース間通信を有効にするには、Managed Private Endpoint(MPE)またはデータゲートウェイを使用する必要がある。
Managed Private Endpoint(MPE)
MPEを使用するワークスペース間接続は、現在次のシナリオに制限されている。
- あるワークスペースから別のワークスペースへのショートカットアクセス。
- 別のワークスペース内のLakehouseにアクセスする1つのワークスペース内のノートブック。ノートブックがソースワークスペース内にある場合、ターゲットワークスペースに接続するには、ワークスペースのFQDNを使用する必要がある。
- 別のワークスペース内のノートブックにアクセスする1つのワークスペース内のPipeline。
- 別のワークスペース内のLakehouseにアクセスする1つのワークスペース内のEventstream。
- インジェスト前にイベント処理を使用するときに、あるワークスペース内のEventstreamが別のワークスペース内のEventhouseにアクセスする。
- パブリックからの受信許可のワークスペースのセマンティックモデルにおいて、Managed Private Endpoint経由のショートカットによって利用可能にできる。
データゲートウェイ
VNETデータゲートウェイ
- VNETデータゲートウェイを使用して、VNET経由で受信保護の有効なワークスペースに接続。
- Private Endpointを同じVNET内に作成し、Private Link Serviceを指すように構成する。
- パブリック受信許可のワークスペースのセマンティックモデルにおいて、Direct Lakeモードはサポートされない。インポートまたはDirect Queryのみに制限される。

オンプレミスデータゲートウェイ(OPDG)
- オンプレミスデータゲートウェイ (OPDG)を使用して、VNET経由で受信保護の有効なワークスペースに接続。
- OPDGはWindows仮想マシン上にインストールする。
- Private Endpointを同じVNET 内に作成し、Private Link Serviceを指すように構成する。
- パブリック受信許可のワークスペースのセマンティックモデルにおいて、Direct Lakeモードはサポートされない。インポートまたはDirect Queryのみに制限される。
Fabric URLの許可リスト / Azureサービスタグ
許可リスト
オンプレミスなどからFabricに接続する際、Firewallなどで送信が許可されていない場合に、Fabric URLを許可リストに追加することで接続先を絞ることができる。
Azureサービスタグ
Azureサービスタグを使用して、Azure上のNSGなどでFabricとの通信を最小限に制限することができる。
ワークスペースレベルPrivate Linkを使用したデザインパターン
受信保護を設定するといくつかの制限を受けるが、受信保護を設定しないワークスペースとの組み合わせによってデータ基盤を保護しつつ、分析やレポーティングを実行できるデザインパターンをいくつか挙げてみる。ただしこれらをすべて動作させたわけではないので追加の考慮ポイントがあるかもしれない。
(A) Private Link有効化とパブリックアクセス有効化の両立。
- Private Linkを有効化したワークスペースに対してパブリックアクセスを有効化。
- パブリックアクセスを無効化しないため機能制限を受けない(ワークスペースレベルPrivate Linkを使用しているワークスペースにセマンティックモデルやPower BIレポートもホスト)。
- オンプレミスとのデータの授受などはプライベートネットワーク経由で通信。
(B) MPEを使用したプライベートアクセス
- Power BIレポートやセマンティックモデルはPrivate Link有効かつ受信保護が有効なワークスペースではサポートされないため、BI機能を持つワークスペースを公開し、データ基盤をPrivate保護する構成。
- BI機能のワークスペースのLakehouseからMPEを経由して受信保護されたワークスペースのLakehouseやWarehouseへのショートカットを作成する。
- MPEを経由したショートカットを使用することによってDirectLakeモードも使用可能になる。
(C) ゲートウェイを使用したプライベートアクセス
- OPDGまたは仮想ネットワークゲートウェイを使用してワークスペース間通信を許可する。
- この構成でDirectLakeモードはサポートされないため、ImportまたはDirect Queryを使用する。
- PublicワークスペースにLakehouseを配置不要。
データソースへのプライベートアクセスと送信トラフィック制限
マネージドプライベートエンドポイント(MPE)
- MPEは、ワークスペース管理者が作成して、ファイアウォールの背後にあるデータソース、またはパブリックインターネットアクセスがブロックされているデータソースにアクセスするために作成できる接続。
- MPEを使用するとパブリックネットワークに公開したり、複雑なネットワーク構成を必要としたりすることなく Fabricワークロードがデータソースに安全にアクセスできる。
- MPEでは、Azure Storage、Azure SQL Databaseなどのいくつかのデータソースがサポートされている。※サポートされるデータソースは こちら を参照。
マネージドVNET
- マネージドVNETを使用すると、Spark クラスターの完全なネットワーク分離を実現できる。
- ワークスペースのマネージドVNETとMPEを使用すると、ファイアウォールの背後にあるデータソースやパブリックアクセスからブロックされているデータソースにアクセスできるようになる。
- Private Link設定を有効にすると、最初のSparkジョブ(ノートブックまたは Sparkジョブ定義)を実行するか、Lakehouse操作(テーブルへの読み込み、最適化やバキュームなどのテーブルメンテナンス操作など)を実行すると、ワークスペースのマネージドVNETが自動で作成される。
- Sparkのスタータープールは無効になり、専用マネージドVNET内でジョブの送信時にオンデマンドで作成されたカスタムプールで実行される。スタータープールとは異なりSparkでセッションを開始するのに最大で3~5分かかる場合がある。

From: https://learn.microsoft.com/ja-jp/fabric/security/security-managed-vnets-fabric-overview
Private Link Serviceを使用した直接アクセス
MPEで直接サポートされるデータソース以外のデータにアクセスする必要がある場合、Private Link Serviceの背後にStandard Load Balancerおよび仮想マシンを配置しNAT転送を構成する必要がある。
この方法でExpressRouteまたはVPN経由でオンプレミスのデータベースまたはサーバーに直接接続することもできるが、複数のサービスを多段に組み合わせる必要があり結構大変。

Private Link Service Direct Connect (Preview) を使用した直接アクセス
これについては こちらの記事 で具体的な方法を書き留めてある。MPEで直接サポートされるデータソース以外のデータにアクセスする必要がある場合、Private Link Service Direct Connect(Preview)を使用する場合、静的プライベートIPが判明している場合は直接接続できる。これも同様にExpressRoute または VPN 経由でオンプレミスのデータベースまたはサーバーに直接接続することもできる。この方法ではLoad Balancerや仮想マシンを利用しなくていいのでシンプルになる。早くPreviewが取れることを祈る。

送信トラフィックの制限
Fabricのワークスペース送信アクセス保護を使用すると、ワークスペース内のアイテムから外部リソースへの送信データ接続をセキュリティで保護することができる。送信アクセス保護を有効にすると、ワークスペースからの送信接続はデフォルトで全ブロックとなる。ワークスペースの管理者は、MPEを使用して特定の送信接続を許可する例外を作成できる。
ワークスペースの送信アクセス保護が有効なのは以下のFabricアイテムが対象。
- Lakehouse
- ノートブック
- Sparkジョブ定義
- Environments(Spark)
- Warehouse
制限事項
- Fabric SKUでホストされているワークスペースのみがサポートされる。その他の容量の種類とFabric試用版では使えない。
- ワークスペースにサポートされていないアイテムがすでに含まれている場合、それらのアイテムが削除されるまで送信アクセス保護を有効にできない。
- Lakehouseにセマンティックモデルが既に含まれている既存のワークスペースではサポートされない。
- スキーマが有効なLakehouseではサポートされない。
- ポータルUIでは、ワークスペースの受信保護(ワークスペースレベルのPrivate Link)と送信アクセス保護の両方を同時に有効にすることができない。代わりにAPIを使う必要がある。
- ノートブックでpipなどでパッケージインストールできなくなる。対処策 を参照。
送信アクセス保護のその他の考慮事項
データエンジニアリングの送信保護の考慮事項
- ワークスペースで送信アクセス保護が有効になっている場合、SparkにはマネージドVNETが使用される。この場合、Sparkのスタータープールは無効になり、カスタムプールを使うことになる。この場合Sparkセッションの開始には3分~5分くらいかかる。
- 送信アクセス保護では、Sparkからのパブリックアクセスはすべてブロックされる。この制限により、ユーザーは pipを使用してPyPIなどのパブリックチャネルから直接ライブラリをダウンロードできなくなる。ライブラリをインストールするには、以下のようなオプションがある。
- MPEを介してFabricワークスペースに接続されているデータソースからライブラリパッケージを参照する。
- 必要なライブラリと依存関係(ランタイムにまだ含まれていない)のホイールファイルをアップロードする。
- ワークスペースからのすべてのパブリックアクセスがブロックされる。そのため、別のワークスペースから Lakehouseに対してクエリを実行するには、Sparkジョブが接続できるように、ワークスペース間でMPEを作成する必要があある。
- ワークスペース名とLakehouse名で完全修飾パスを使用すると、ソケットタイムアウト例外が発生する可能性がる。ファイルにアクセスするには、現在のLakehouseの相対パスを使用するか、ワークスペースIDとlakehouse ID (表示名ではなく)を含む完全修飾パスを使用する。この方法により、Sparkセッションでパスを正しく解決でき、ソケットタイムアウトエラーを回避できるんだそうな。詳細はこちら。
ウェアハウスの送信保護の考慮事項
- 送信アクセス保護が有効になっている場合、WarehouseとSQL分析エンドポイントからの送信接続はすべてブロックされる。現時点では、MPEを使用して許可設定はできない。
- データインポート系のコマンド(COPY INTO、OPENROWSET、BULK INSERTなど)は、COPY INTO機能を使用して OneLakeからソースとしてデータを直接取り込む場合を除き、現在のワークスペース内のソースに制限される。
受信と送信アクセス保護を使用したデザインパターン
送信アクセス保護を設定すると、ワークスペースからはデフォルトですべての宛先へのアクセスがブロックされるので、MPEを経由しなければならない。ワークスペースレベルのPrivate Linkや受信トラフィック制限を用いたワークスペースとの構成のパターンをいくつか挙げてみる。
(A) ワークスペースを利用するユーザー種別に分割したHub & Spokeモデル
- データを授受し格納するワークスペースは受信保護を使用してアクセス制限する。データの授受やメンテナンスはワークスペースレベルのPrivate Linkを経由する。
- ビジネスユーザーが使用するPower BIレポートが格納されているワークスペースは機能制限を回避するためにパブリックアクセスを有効化(Entraでの条件付きアクセスポリシーを組み合わせるとより良い)。
- データエンジニアがSparkやPipelinesを実行するワークスペースに対してはデータの流出を防ぐために送信アクセス保護を適用する。
(B) 開発と本番を隔離するネットワークセグメンテーション
- 開発環境と本番環境を受信および送信トラフィック制限で分離する。
- データストアおよびデータ授受のワークスペースにはPrivate Linkおよび受信保護と送信アクセス保護を適用。
- レポート用のワークスペースはパブリックアクセスを有効にし、送信アクセス保護を適用。
- 本番環境と開発環境はそれぞれ別の独立したVNETを作成し、VNET経由でアクセスできる担当者やシステムを制限する。
信頼されたワークスペース
ワークスペースIDを持つFabricワークスペースは、選択したVNETとIPアドレスからADLS Gen2アカウントにアクセスできる。これを用いてADLS Gen2のアクセスを特定のFabricワークスペースに制限できる。
信頼されたワークスペースアクセスを持つストレージアカウントにアクセスするFabricワークスペースには、リクエストに対しての承認が必要。リソースインスタンスルールの詳細については、Azureリソースインスタンスからのアクセスを許可する を参照。
制限事項と考慮事項
- 信頼されたワークスペースアクセスは、OneLakeのショートカット、Pipelines、セマンティックモデル、T-SQL COPYステートメント、AzCopyでのみ使用可能。
- ショートカット、Pipelines、セマンティックモデル以外の Fabricアイテム、または他のワークスペースで、信頼されたワークスペースアクセスをサポートする接続を再利用すると、機能しない可能性がある。
- ワークスペースIDを持つワークスペースが非Fabric容量 (Premium P SKUとか)に移行された場合、信頼されたワークスペースアクセスは1時間後に機能しなくなる。
- 組織にすべてのサービスプリンシパルを含むワークロードIDのEntra条件付きアクセス ポリシーがある場合、信頼されたワークスペースアクセスは機能しない。このようなインスタンスでは、ワークロードIDの条件付きアクセス ポリシーから特定のFabricワークスペースIDを除外する必要がある。
まとめ
現時点でのFabricのネットワークセキュリティのできること、制限、構成パターンなどをまとめてみたが、今後のアップデートにより幾らでも変わる可能性がある。ドキュメントを見ているだけだと制限事項が多く、どう設計したらうまく行くのかと悩ましい思いをしたが、いろいろと情報を整理してまとめたり実際に設定してみたりすることによって勘所が少し見えてきたように思う。受信トラフィックの制限に関しては、機能制限を受けることを避けるためにEntra IDの条件付きアクセスのみで実施することができれば最もシンプルでよさそうだが、データの基盤やデータの授受の経路などをしっかり絞りたいケースや、Fabric内部からの送信を制限したいということもあると思う。その場合、テナントレベルのPrivate Link + 受信トラフィック制限はちょっと影響が大きすぎるのでどう使うかは悩ましいけど、ワークスペースレベルのPrivate Linkを使って必要な個所を保護するというやり方がよさそうに思う。



