Power BI ServiceからVNet Data Gatewayを使ってデータソースにアクセスしたい

このエントリは2021/09/21現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容からの乖離が発生する可能性があります。

Power BI Serviceは様々なデータを可視化するためのツールである。データソースに直接接続してアクセスすることも可能ではあるが、別部署や別サブスクリプションからのアクセスの場合、データの変更を抑止するためにData Gatewayなるものを使ってアクセスを提供することも可能である。

現在利用できるData Gatewayは以下の2種類。VNet Data Gatewayはプレビュー。

オンプレミス データ ゲートウェイとは? / What is an on-premises data gateway?
https://docs.microsoft.com/data-integration/gateway/service-gateway-onprem
仮想ネットワーク (VNet) データ ゲートウェイとは (プレビュー)? / What is a virtual network (VNet) data gateway (Preview)?
https://docs.microsoft.com/data-integration/vnet/overview

このVNet Data Gatewayについて、以下のような問い合わせが入った。

問い合わせ

Power BI Serviceの属するAzure ADテナントと、主としてAzureを使っているAzure ADテナントが異なっており、それぞれのテナントには個別のAzureサブスクリプションが紐付いている。こうした環境下でVNet Data Gatewayを構成し、そのVNet内でアクセス先のSQL Databaseへ向けたPrivate Endpointを作成した。これでSQL Databaseにアクセスできるようになったはずなのだが、VNet Data GatewayからのアクセスでPublic IPを使ったアクセスになっていて、SQL Databaseにアクセスできない。どうすれば解決できるか?

例によってイメージがわかりづらいので、聞き取った内容を図にしてみた。少なくとも、以下のドキュメントにある構成はすんでいるようである。

仮想ネットワーク データ ゲートウェイの作成 / Create virtual network data gateways
https://docs.microsoft.com/data-integration/vnet/create-data-gateways

つまり、Private Endpointは構成済みで、VNet Data GatewayのためのSubnetの委任設定やNetwork Contributorの権限は付与してあるよう。

エラーメッセージを見ると、VNet Data GatewayからPublic IPでアクセスしていた。また、送信元Public IPは見知らぬPublic IPであった。

原因

Private Endpointを作成したことがあればピンと来た方もいらっしゃるのではなかろうか。原因は以下。

Private DNS Zoneが構成されておらず、Private Endpointとの統合が済んでいないから。

どういうことか?

Azure PortalでPrivate Endpointを作成すると、同一サブスクリプションでのPrivate Endpointであれば、Private DNS Zoneの作成ならびにPrivate Endpointの統合も構成してくれるが、サブスクリプション跨ぎの場合は手作業で構成しなければならない。

これが構成されていかったために、本来ならSQL DatabaseのServer FQDNをlookupすればPrivate IPを返してほしかったところ、Public DNSに対してlookupしてしまったため、Public IPを引いてしまった。結果、SQL DatabaseのサーバーレベルFirewallでブロックされてしまっていた。

図示すると、本来なら青破線のルートを通るべきところ、Public IPを引いてしまったので、赤実線のルートを通ってアクセスしようとしていた、ということ。

また、送信元IPが見知らぬPublic IPだったのは、Azureの仕様により、任意のPublic IPを使ってSNATをしたため。VNet Data GatewayのVNetには明示的にPublic IPが付与されていない場合、Azureでは、各リージョンで確保しているPublic IPを使ってSNATする。

対策

Private DNSゾーンを作成し、Private Endpointを統合する。具体的には以下。

  • Private DNS Zoneを作成。
    • 名前はprivatelink.database.windows.netにしておく。
  • Private EndpointをPrivate DNS Zoneに追加
    • ゾーングループ名はdefaultでよい(日本語表示の場合、Portalで”既定”と表現されているが、alphanumericでなければならないので、defaultに変更しておく)
  • Private DNS ZoneでVNet linkを構成しておく。

これでPrivate Endpoint経由でのアクセスが可能になった。

備考

サブスクリプションが分かれる場合の注意点

VNet Data GatewayはPower BI Serviceが所属するAzure ADテナントのAzureサブスクリプションで作成する必要がある。上図のSQL Databaseが属するAzure ADテナントのAzureサブスクリプションでVNet Data Gatewayを作成しても、Power BI Serviceが所属するAzure ADテナント外であり、VNet Data Gatewayの作成先であるSubnetの委任(Microsoft.PowerPlatform/vnetaccesslinksの付与)をしたところで、Power BI Serviceからアクセスできない。

VNet Data GatewayはPremium以上で利用可能

読んで字のごとしで、以下のドキュメントにも記載の通り、Power BI Premium Workspaceと Premium Per User (PPU) でのみPublic Previewが可能。

Power BI で仮想ネットワーク データ ゲートウェイとデータ ソースを使用する / Use virtual network data gateway and data sources in Power BI
https://docs.microsoft.com/data-integration/vnet/use-data-gateways-sources-power-bi

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中