仮想ネットワーク内の Azure Data Lake Storage Gen2 に対して Power BI Desktop から接続する仮想ネットワークデータゲートウェイの設定方法

本記事では、[仮想ネットワーク (VNet) データ ゲートウェイ](https://docs.microsoft.com/data-integration/vnet/overview) (以下 VNetデータゲートウェイという) を経由して、[Azure の仮想ネットワーク](https://docs.microsoft.com/azure/virtual-network/virtual-networks-overview) (以下 VNet という) 内にデプロイされた [Azure Data Lake Storage Gen2](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-introduction) (以下 ADLS という) に対して、[Power BI Desktop](https://docs.microsoft.com/power-bi/fundamentals/desktop-getting-started) から接続する手順を説明します。

従来、Power BI から VNet 内へのリソースに接続する方法としては、以下の方法がありました。
* [オンプレミス データ ゲートウェイ](https://docs.microsoft.com/power-bi/connect-data/service-gateway-onprem) を設置する
* ファイアウォールを設定する

オンプレミス データ ゲートウェイ はこれまでの定石となっていました。ただ、元々オンプレミス環境にあるサーバーにゲートウェイをインストールして Power BI から接続するものであり、 Azure の VNet 内にあるリソースに Power BI から接続する場合は、当該 VNet 内に VM を構築する必要があります。VM は IaaS であり、OS およびそれより上のレイヤーについてはユーザー自身による管理・運用が必要です。やりたいことは単に Power BI からデータソースに接続するだけであるというのに、少々大がかりなものとなっていました。

一方、ファイアウォールを設定することで、Power BI からアクセスする方法もあります。ただ、Power BI のソース IP アドレスはダイナミックであり、 IP アドレスの変更に伴って接続ができなくなり、再設定が必要となります。また、Power BI のソース IP アドレスを特定する際にも、リソースの診断設定を有効にし、Power BI からアクセスを試行し、ソース IP アドレスを特定する必要があります。これらの理由から、継続的にこの方法で運用するのは難しいです。

VNetデータゲートウェイは、上記2つの方式に代わる、よりシンプルでスマートなソリューションです。本記事でその利用手順を説明します。

## 前提

* [Microsoft Azure](https://azure.microsoft.com/ja-jp/) に利用可能なサブスクリプションを持っており、かつ、所有者のロールが割り当てられている
* [Azure Portal](https://portal.azure.com) で操作を行う
* ADLS のストレージ アカウントが作成されている
  * `[セキュリティとネットワーク]` > `[ネットワーク]` > `[ファイアウォールと仮想ネットワーク]` 配下
    * `[パブリックネットワークアクセス]` が `[選択した仮想ネットワークと IP アドレスから有効]` に設定されている
    * コンテナー操作のため、`[ファイアウォール]` > `[アドレス範囲]` に自身の IP アドレス (インターネットのゲートウェイの IP アドレス) が設定されている
  * コンテナーが存在し、配下に Excel や CSV 等の Power BI から取得可能なデータが配置されている
* [Power BI のライセンス](https://docs.microsoft.com/power-bi/consumer/end-user-license) は [Premium](https://docs.microsoft.com/power-bi/enterprise/service-premium-what-is) (Gen1 の場合) または [Premium Per User (PPU)](https://docs.microsoft.com/power-bi/enterprise/service-premium-per-user-faq) (Gen2 の場合) である
* Windows PC に Power BI Desktop がインストールされている

## 免責

* 本記事執筆時点では、VNetデータゲートウェイはパブリックプレビューです。

## 手順

手順は 3ステップです。
1. Microsoft Docs に従って VNetデータゲートウェイ を作成する
2. VNetデータゲートウェイを介したデータソースを作成する
3. Power BI Desktop からデータソースに接続する

### Microsoft Docs に従って VNetデータゲートウェイ を作成する

[仮想ネットワーク (VNet) データ ゲートウェイの作成 | Microsoft Docs](https://docs.microsoft.com/data-integration/vnet/create-data-gateways)

この時点で、 `[Power BI マイ ワークスペース]` > `[設定 (ページヘッダーの歯車アイコン)]` > `[ゲートウェイの管理]` > `[データ (プレビュー)]` > `[仮想ネットワーク データ ゲートウェイ]` タブ配下に、アイテムが作成されています。状態がオンラインであることを確認してください。

<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00001.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/edebec74-29eb-80ac-66f5-60e73d7d0e0f.png)



### VNetデータゲートウェイを介したデータソースを作成する

同じく `[データ (プレビュー)]` 配下、`[データソース]` タブ配下に、データソースを作成します。画面上部の `[＋新規]` をクリックします。

<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00002.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/f4062275-6e91-be56-c139-e8a2a897db5c.png)


例えば ADLS の URL が `https://MY_STORAGE_ACCOUNT_NAME.dfs.core.windows.net/` 、コンテナー名が `MY_CONTAINER_NAME` である場合、また、認証に ADLS のアカウントキーを用いる場合、新規作成するデータソースは以下の通りになります。

| 入力/選択 項目 | 値 |
| -------- | -- |
| ゲートウェイ クラスター名 | (VNetデータゲートウェイの名前) |
| データソース名 | (任意の名前) |
| データソースの種類 | Azure Data Lake Storage Gen2 |
| サーバー | `https://MY_STORAGE_ACCOUNT_NAME.dfs.core.windows.net` |
| 完全なパス | `/MY_CONTAINER_NAME/` |
| 認証 > 認証方法 | Key |
| 認証 > アカウント キー | (`[ストレージアカウント]` > `[セキュリティとネットワーク]` > `[アクセス キー]` から キーの表示 によりコピーできるキー) |
| 全般 > プライバシーレベル | (`[なし]`/`[非公開]`/`[組織]`/`[公開]` から選択) |

<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00003.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/62702cf1-3e70-1c58-a34a-e91b00a8cfcd.png)


`[作成]` をクリックし、画面上部にグリーンで作成成功した旨表示されれば、作成は成功です。状態がオンラインであることを確認してください。

<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00004.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/d2905df4-922f-e204-3c77-67188aa5fde1.png)



### Power BI Desktop からデータソースに接続する

`[データを取得]` > `[詳細...]` > `[Azure]` から、 `[Azure Data Lake Storage Gen2]` を選択して接続をクリックします。

<! --{% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00005.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/af5643a1-3f7e-0fc2-14af-fa37a01bc548.png)


<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00006.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/d739c892-56f4-30fc-5cf7-27c4e4f16247.png)


`[URL]` にコンテナーの URL ( `https://MY_STORAGE_ACCOUNT_NAME.dfs.core.windows.net/MY_CONTAINER_NAME` ) を入力します。`[データ ビュー]` は任意のものを選んでください。

<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00007.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/e5882752-ef1b-e338-7ccb-b223d7d9009b.png)


データソースとして初回の登録である場合、認証を求められます。データソースを作成した際に、認証に ADLS のアカウントキーを用いることとしました。これに合わせて、認証は以下のように行います。

| 入力/選択 項目 | 値 |
| ------------ | -- |
| 組織アカウント/アカウントキー | アカウント キー |
| アカウント キー | (データソース作成時に入力したものと同じ アカウント キー を入力します。) |
| これらの設定の適用対象レベルの選択| (ストレージアカウント/コンテナー、任意の認証のスコープを選択します。) |

<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00008.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/7cc4219d-33c7-e4ce-5707-807352633768.png)


認証に成功したら、コンテナー上のファイルの概要が表示されます。

<!-- {% asset_img slug Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00009.png %} -->
![Set-up-VNet-Data-Gateway-and-get-data-from-Azure-Data-Lake-Storage-Gen2-inside-virtual-network-from-Power-BI-Desktop_00009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17549/943e9b1c-cc4e-9906-4ba8-568b8db81451.png)


以降、アクセス許可をクリアするか認証方法が変更されるまでの間、データソースへの認証は求められません。


## まとめ

* VNet 配下にある ADLS に対して Power BI から接続する、本記事執筆時点で最もシンプルでスマートなソリューション、 VNetデータゲートウェイ について、設定手順を解説しました。
* 他の方式に比べれば、VNetデータゲートウェイ の設定は非常に簡単です。ADLS 等のデータソースが VNet 内にある場合は、これを使っていきましょう。
* VNetデータゲートウェイ を利用するためには Power BI の ライセンスが Premium である必要があります。他にも Premium のベネフィットはたくさんありますので、ぜひ Premium を利用しましょう。

## See also

* [仮想ネットワーク (VNet) データ ゲートウェイのアーキテクチャ | Microsoft Docs](https://docs.microsoft.com/data-integration/vnet/data-gateway-architecture)
* [仮想ネットワーク (VNet) データ ゲートウェイの FAQ | Microsoft Docs](https://docs.microsoft.com/data-integration/vnet/data-gateway-faqs)