Azure AD 認証でAzure SQL Database と Power BI Service にアクセスする

本記事は、当社オウンドメディア「Doors」に移転しました。

約5秒後に自動的にリダイレクトします。


ブレインパッドには、クラウドプラットフォームの知識・スキルを深化させるべく、Google Cloud 、AWS、Microsoft Azure、Snowflakeの4つのクラウドプラットフォームチームから成る「クロスファンクショナルチーム(CFT)」があります。
前回よりAzureの機能紹介の連載がスタート!第2回はAzure SQL Database のデータに対して、Azure AD 認証を使って Power BI Service から接続する方法をご紹介します!


こんにちは。データエンジニアリング本部 ソリューション開発部の山下です。顧客企業のデータ活用を、システム開発や基盤構築の面から支えている当社のデータエンジニアリング本部(DE本部)。そのDE本部には、 Google Cloud 、AWS、Microsoft Azure、Snowflakeの4つのクラウドプラットフォームチームから成る「クロスファンクショナルチーム(CFT)」があります。(詳細はこちらの記事を参照ください)

今回は、Azure SQL Database のデータに対して、Azure AD 認証を使って Power BI Service から接続する方法についてご紹介したいと思います。

今回は Azure AD グループを作成し、そのグループに対して Azure SQL Database の読み取りの権限を持ったロール(db_datareader)を割り当てます。 そしてユーザー用に作成したIDをそのグループに所属させることで、SQL Databaseに接続が行えるようにします。

Power BI Serviceを使うためにはライセンスが必要ですので、今回はPower BI Proを使います。Power BI ライセンスについてもグループに割り当てる方式を採用します。

こうすることにより直接ユーザーにロールやライセンスを割り当てることに比べユーザー管理を簡略化することができます。

今回作成するグループの管理表は以下の通りです。


Azure SQL Databaseを作成します。まずはSQL Databaseの Server 部分から作成します。


①SQL Server > ②作成
③サブスクリプション:お使いのサブスクリプションを選択します。
④リソースグループ:「rg-bi-test」今回は新規に作成しました。
⑤サーバー名:「sql-bi-test」
⑥場所:「(Asia Pacific) Japan East」
⑦認証方法:「Azure Active Directory (Azure AD) 認証のみ使用する」今回はSQL 認証は不要ですのでこちらを選択。
⑧Azure AD 管理者の設定をする:「私のID」通常は管理者用のグループを別途作成し、そちらを指定する方がよいと思います。今回はひとまず私のIDを設定しました。
⑨「確認および作成」を選択します。

続いて SQL Database を作成します。


①SQL データベース > ②作成
③サブスクリプション:お使いのサブスクリプションを選択します。
④リソースグループ:「rg-bi-test」先ほど作成したリソースグループを使います。
⑤データベース名:「sqldb-bi-test」
⑥サーバー名:「sql-bi-test」先ほど作成したSQL Serverを選択します。
⑦SQL エラスティックを使用しますか?:「いいえ」
⑧コンピューティングとストレージ:「サーバーレス、Gen5、1vCore、15GB」テスト用に最小限のスペックを選択しました。
⑨バックアップストレージの冗長性:「ローカル冗長バックアップ ストレージ」
⑩「追加設定」を選択します。ネットワークの設定については作成後設定します。

⑪既存のデータベースを使用します:「サンプル」作成時にサンプルデータが入ったデータベースを作成します。サンプルデータについては以下のリンクを参照してください。
https://github.com/microsoft/sql-server-samples/tree/master/samples/databases/adventure-works
⑫「確認および作成」を選択します。

DBをインターネットに完全に解放して使うシチュエーションは少ないと思います。今回も例に漏れずインターネットからDBへの接続は限定的にします。

ここでPower BI Serviceがどこにあるかということが大切になります。Power BI Serviceはマイクロソフトが提供するSaaSであるためインターネット上に存在します。そのため Power BI Service から SQL Database へのアクセスはインターネットからのアクセスになります。

インターネットにあるPower BI Serviceと接続を可能にする方法の一つとして、特定のソースIPアドレスのみ許可する方法がありますが、マイクロソフトのクラウドサービスのIPアドレスは定期的に変更されており、その都度許可することは運用コストが高くなりそうです。
そこで今回は、 Azure SQL Database のファイアウォールと仮想ネットワークの設定に「Azure サービスおよびリソースにこのサーバーへのアクセスを許可する」という設定があるので、こちらを使って許可することにします。(下図⑤)

これ以外にオンプレミス データ ゲートウェイを使う方法もあります。

Azure SQL Database のファイアウォールと仮想ネットワークを設定していきます。

①SQL Server > ②sql-bi-test > ③ファイアウォールと仮想ネットワーク
④パブリック ネットワーク アクセスの拒否:「チェックなし」チェックを外しインターネットから接続を許します。
⑤Azure サービスおよびリソースにこのサーバーへのアクセスを許可する:「はい」こちらを はい にすることで Power BI Service から接続を許可することができます。どうやらPower BI Service は Azure 上に構築されているようです。
⑥クライアント IP アドレス:会社や自宅など許可するIPアドレスを設定します。
⑦設定変更を「保存」します。

権限とライセンスの管理を簡略化するためにグループの作成を行います。

①Azure Active Directory > ②グループ > ③新しいグループ
から新しいグループを作成します。

④グループ名:「GRP_PowerBI_Users」事前に決めておいたグループ名で作成します。
⑤グループの説明:「Power BI ユーザー用グループ」わかりやすい説明を記載しておくと良いかと思います。
その他の項目はデフォルトのままにしておきます。
⑥「作成」を選択します。

作成したグループに対してPower BI Proライセンスを適用します。これによりそのグループに所属するユーザーがそのライセンスを使えるようになります。ただしユーザーはライセンスの要件に従う必要があります。

先ほど作成したグループ管理画面を開きます。

①ライセンス > ②+ 割り当て

③「Power BI Pro」を選択します。Power BI Proライセンスを購入していない場合は表示されません。
④「保存」を選択します。
これでグループに対するライセンス適用は終わりです。

続いて、Azure SQL Databaseの読み取り権限を作成したグループに与えていきます。

①Azure SQL Databaseにクエリエディターからサインインします。SSMSやAzure Data Studioなどでも問題ありません。
②Active Directory 認証を使います。ユーザーは SQL Server 作成時に「Azure AD 管理者の設定をする」で指定したユーザーです。

③以下のクエリを入力します。

CREATE USER GRP_PowerBI_Users FROM EXTERNAL PROVIDER;
EXEC sp_addrolemember 'db_datareader', 'GRP_PowerBI_Users';

④「実行」を選択します。

次にAzure ADにユーザー用のIDを作成し、グループに所属させます。

①Azure Active Directory > ②ユーザー > ③新しいユーザー
から新しいユーザーを作成します。

④今回は新規にユーザーを作成するので「ユーザーの作成」を選択します。
⑤ユーザー名:「powerbi_test_user01」事前に決めておいたサインインに使用するユーザー名を入力します。
⑥名前:「powerbi_test_user01」任意の名前を入力します。
⑦パスワード:「パスワードの自動作成」初回サインイン時のみ使うパスワードを表示して控えておきます。
⑧利用場所:「Japan」 ※ココはかなり重要です。 Power BI Pro ライセンスを割り当てる時に空欄だと割り当てることができませんのでご注意ください。
⑨「作成」を選択します。

次にグループ管理画面から作成したユーザーをグループに所属させます。

①メンバー > ②+メンバーの追加
③作成したユーザー「powerbi_test_user01」を選択します。
④「選択」を選択します。

続いてPower BI Desktopを起動してSQL Databaseに接続していきます。


①SQL Serverを選択します。
②サーバー名:「sql-bi-test.database.windows.net」、データベース:「sqldb-bi-test」
③「OK」を選択します。


④「Microsoft アカウント」を選択します。
⑤「サインイン」を選択します。


⑥作成したユーザーID「powerbi_test_user01@ドメイン名」を入力します。
⑦「次へ」を選択します。


⑧サインインができましたら「接続」を選択します。


⑨対象のテーブルを選択します。
⑩「読み込み」を選択します。


SQL Databaseに接続することができました。


ビジュアルを作成し、 Power BI Service に発行し Power BI Service から閲覧できるようにします。
⑪「発行」を選択します。
⑫作成したユーザーID「powerbi_test_user01@ドメイン名」を入力します。
⑬「続行」を選択します。


⑭宛先:「マイワークスペース」を選択します。
⑮「選択」を選択します。


⑯「OK」を選択します。
無事発行が完了したのでPower BI Serviceにアクセスして確認してみます。

下記URLからPower BI Serviceにアクセスし、発行したビジュアルを閲覧してみます。
https://app.powerbi.com/

サインインユーザーは「powerbi_test_user01」を使用します。


①マイワークスペース > ②「発行時に保存した名前」のレポート を選択します。

Power BI Servie からSQL Databaseのデータに接続し、ビジュアルの表示ができました。

Azure SQL Database のデータに対して、Azure AD 認証を使って Power BI Service から接続する方法について紹介しました。設定のポイントを改めてまとめておきます。

  • Azure AD のグループに Azure SQL Database の権限を割り当てることができます。
  • Azure AD のグループに Power BI Pro ライセンスを割り当てることができます。
  • ユーザーの「利用場所」が空欄だと、 Power BI Pro ライセンスの割り当てでエラーになります。
  • Power BI Service はインターネット上のSaaSの為、Azure SQL Database へのアクセスは「Azure サービスおよびリソースにこのサーバーへのアクセスを許可する」にて許可をすることでアクセスが可能になります。

Azure AD 認証を使うことで、SQL Database の権限や Power BI Pro ライセンスを一元管理し複雑さを回避することができるのは Microsoft のサービスでシステムを組む一つのメリットと言えそうです。

ブレインパッドでは「データ活用の促進を通じて 持続可能な未来をつくる」というミッションの下、一緒に働く仲間を探しています。興味がある方は採用ページからエントリーをお願いします。
www.brainpad.co.jp

以上、ありがとうございました!