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?

閉域化されたPurview データカタログにFabric Notebook からアクセスする簡単な方法

0
Last updated at Posted at 2026-02-06

はじめに

企業によっては、セキュリティの観点からPurview データカタログソリューション(以下Purview とします)を外部からアクセスできないようにする必要があるが、定期的にメタデータのバックアップを取得する要件があるような状況は起こり得るかと思います。
Purview には基本的に自動でバックアップを吐き出すような機能が無く、Microsoft が公開しているREST API を使用してPurview の外部からメタデータを取得しないといけないので、ユーザー向けとは別でネットワーク経路を考える必要があります。

統合カタログソリューションのメタデータについては、セルフサービス分析機能がGAされているためそちらをバックアップとして利用する手段もあります。
Self-Serve Analytics in 統合カタログ | Microsoft Learn

データマップソリューションのメタデータは上記機能の対象外のため、2026年2月時点では手動もしくはREST API による取得しか方法はありません。

しかし、Fabric のワークスペースレベルのマネージドプライベートエンドポイント(MPE)を利用すれば簡単かつ必要最小限の穴あけでFabric Notebook からPurview にアクセスできることが分かったため備忘ついでに解説します。

全く同じ方法で閉域のKey Vault に格納したシークレットを取得することができるので、そちらも併せて解説します。

構成

今回の構成は大まかに下記図のとおりになります。
Purview に接続するワークスペースでマネージドVNet 及びマネージドプライベートエンドポイントを作成し、そのワークスペースからでのみKey Vault やPurview にアクセスできるような構成となります。
画像1.png

Key Vault 及びPurview アカウントについてはファイアウォール設定からパブリックアクセスを無効にしている状態を想定します。
画像2.png

手順

(1). 事前準備

Fabric のワークスペースレベルのマネージドプライベートエンドポイントを作成するためには、テナント設定でワークスペースの送信アクセス保護(OAP)を有効にする必要があります。

管理ポータルのテナント設定から、「ワークスペース レベルの送信ネットワーク ルールの構成」を有効に切り替えてください。

マネージドプライベートエンドポイントを経由しないアウトバウンドの通信をブロックしたい場合は、下記のドキュメントを参考にアウトバウンド通信拒否の設定も行ってください。
ただし、必須ではないため設定せずとも問題はありません。
ワークスペースの送信アクセス保護を有効にする - Microsoft Fabric | Microsoft Learn

(2). マネージドプライベートエンドポイントを作成する

FabricからKey Vault及びPurviewアカウントに接続するためのマネージドプライベートエンドポイントを作成します。

1. ワークスペースの設定を開く
ワークスペースの設定から、「送信ネットワーク」>「+作成」を選択

画像4.png

2. 接続先のリソースに関する情報を入力する
作成するマネージドプライベートエンドポイントの名前、リソースの識別子を入力します。 正しく入力ができると、ターゲットサブリソースからリソースの種類を選択できるようになるので対象のリソース種類を選んでください(今回はAzure Key Vault とMicrosoft Purview)。 要求メッセージの入力は任意ですが、この後マネージドプライベートエンドポイントの承認操作で区別しやすくなるので何かしら入れておくことを推奨します。

画像8.png

ここで入力するリソース識別子というのはAzureポータルのリソース概要画面から確認できるリソースIDになります。下記記事を参考に確認してください。

3. Azure ポータルからマネージドプライベートエンドポイントの承認を行う
Azure ポータルの対象のリソース概要画面から「設定」 > 「ネットワーク」 > 「プライベートエンドポイント接続」タブを開くと、先ほど作成したマネージドプライベートエンドポイントが一覧に表示されています。

プライベートエンドポイントの名前が分かりづらいですが、名前の中に自分が設定したマネージドプライベートエンドポイント名がどこかに含まれていますのでそれを頼りに探してください。 また、説明欄には手順2で入力した要求メッセージが入っているので、説明から探す方が確実かと思います。
見つけたら、チェックボックスを入れて「承認」ボタンを押します。

画像9.png

承認を行うには対象のリソースに対して下記いずれかの権限を所持している必要があります。

  • 所有者
  • 共同作成者
  • ネットワーク共同作成者

詳細は下記ドキュメントを参照ください。
Azure Private Link 用の Azure RBAC アクセス許可 | Microsoft Learn

ボタンを押すと下図のようなポップアップが出るので、自身がリクエストを出したマネージドプライベートエンドポイントであることを確認して「はい」を押して承認します。

画像10.png

4. マネージドプライベートエンドポイントが承認されているか確認
Fabric のワークスペースの設定に戻り、「更新」ボタンを押して最新の情報に更新します。
問題なく作成ができていれば、承認列が"承認済み"になっています。

画像11.png

疎通の確認

あらかじめKey Vaultに、トークンの取得に必要なサービスプリンシパルのクライアントID、シークレット、テナントIDを登録しておいてください(キー コンテナー シークレット責任者ロールが必要です)。
下記のようなコードをFabric Notebook で書いて問題なくKey Vault とPurview にアクセスできるか確認します。

サンプルコード
# pyapacheatlasのインストール(環境で事前にインストールしていれば不要)
!pip install pyapacheatlas

# モジュールのインポート
import json
import notebookutils as nb
from pyapacheatlas.auth import ServicePrincipalAuthentication
from pyapacheatlas.core import PurviewClient

# 変数設定
nb_var_pv_name = "[Purviewのアカウント名]"
nb_var_kv_name = "https://[Key Vaultリソース名].vault.azure.net/" # Key Vault コンテナーのURL
nb_var_kv_cli_name = "[Key Vault に格納したサービスプリンシパルのクライアントIDのシークレット名]" 
nb_var_kv_sec_name = "[Key Vault に格納したサービスプリンシパルのシークレットのシークレット名]"
nb_var_kv_tena_name = "[Key Vault に格納したサービスプリンシパルのテナントIDのシークレット名]"

# サービスプリンシパルの情報を取ってくる
client_id = nb.credentials.getSecret(nb_var_kv_name,nb_var_kv_cli_name) # サービスプリンシパルのアプリケーションid
client_secret = nb.credentials.getSecret(nb_var_kv_name,nb_var_kv_sec_name) # シークレット値
tenant_id = nb.credentials.getSecret(nb_var_kv_name,nb_var_kv_tena_name) # テナントid

# API実行の前準備
auth = ServicePrincipalAuthentication(
    client_id = client_id,
    client_secret = client_secret,
    tenant_id = tenant_id
)
client = PurviewClient(
    account_name = nb_var_pv_name ,
    authentication = auth
)

# REST API 発行(例としてコレクションの一覧を取得する)
response = client.collections.list_collections()
for i in response:
    print(json.dumps(i,indent=2,ensure_ascii=False))
実行結果
無事に閉域化されたPurview に対してREST API を発行することができました。

画像13.png

補足:マネージドプライベートエンドポイントが無いワークスペースで実行してみると
マネージドプライベートエンドポイントを作成していないとPurview にはアクセスできず、403エラーが発生します。
当然ながらKey Vault にもアクセスできないため、シークレットの取得もできません。

画像12.png

注意点

全てGUIで完結するので非常に楽ではありますが、いくつか注意点があるのでメリットデメリットを天秤にかけて運用してください。

1. Notebookのセッション接続までの時間が長くなる

ワークスペースの送信アクセス保護を有効にすると、Spark のスタータープールが無効になるためセッションの開始に3~5分かかるようになってしまいます。

今回の検証でも、マネージドプライベートエンドポイント無しのワークスペース(下図の上セル)では50秒ほどでセッションが開始されましたが、マネージドプライベートエンドポイントを作成したワークスペース(下図の下セル)では5分近くかかっています。

画像14.png

2. ワークスペースの受信アクセス保護と同時に使うにはAPI による管理が必須

今回はアウトバウンドの通信にのみ焦点を絞っていましたが、インバウンドの通信でもワークスペースレベルでPrivate Link を使う場合はGUI で両方を設定することができません。
API を用いて設定を行うことで両立自体は可能ですが、"簡単"ではなくなってしまいます。

その他にも制限事項はあるのでドキュメントを確認しておくことを推奨します。

まとめ

ワークスペースレベルのMPE がPurview にも対応していたとは知らなかったので、思っていたよりもかなり簡単にFabric Notebookから閉域化されたPurview にREST API を発行できることにびっくりしました。
セッションの開始に時間がかかることにさえ目を瞑ることができれば非常に便利かと思います。

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?