招待先環境でPower BI To Azure Data Lake Storage Gen 2 の接続がうまくいかなかったので対処法をメモ


はじめに

Azure Data Lake Storage Gen2(以下、ADLS G2)
のコネクタがGAしました。
https://powerbi.microsoft.com/en-us/blog/power-bi-desktop-december-2019-feature-summary/

接続方法
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-use-power-bi

早速試したところ、環境によっては特殊な対処が必要となることがわかったので記載します。

*2019/12月時点

事象

AのActive DirectoryのユーザがBのActive Directoryに招待され、BのテナントのADLS G2にPower BIからAD認証で接続できないという事象が起きました。

原因

Aのユーザが[email protected]、BのADのドメインが@B.onmicrosoft.comだとすると、招待先のBのAD上では以下のようなUserとして登録されます。

UserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.com
(Portal上では普通に[email protected]として表示されます。)

Bのテナントで[email protected]に対してADLS G2へのアクセス権限を付与し、Power BIからいつもの[email protected]でADLS G2に対して認証をするとUserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.comと異なるIDとして認識され、うまく認可ができないようでした。
*動作感に対する私の主観です

対処法

2つの手順が必要です

  • 外部ユーザのパスワードリセット
  • 外部ユーザのACL登録

外部ユーザのパスワードリセット

では、UserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.comというIDでサインインしてみることが必要なのですが、既定ではサインインエラーとなるかと思います。

UserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.comのパスワードは非公開の状態で、[email protected]とは別のパスワードとなっているようです。

したがって、@B.onmicrosoft.comのユーザ管理者にパスワードをリセットしてもらう必要があります。
コード例は下記

pss
$secure = read-host -assecurestring
一時パスワード入力
Set-AzureADUserPassword -ObjectId "UserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.com" -Password $secure -ForceChangePasswordNextLogin $true

$secureには一時パスワードを設定してもらい、次回ログイン時にはパスワード変更が走るようなスクリプトです。

これでUserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.comでサインインすると認証が成功します。
しかしもう一つ設定が必要です。

外部ユーザのACL登録

Azure Storage Explorerからアクセス管理を設定します。
BのAD上のユーザであればRBACでBLOBデータ共同作成者などをStorage Accoutのスコープでつければよいようですが、今回のケースでのUserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.comとはうまく連携できないようでした。

ユーザを検索すると、#EXT#がついたユーザとして表示されると思います。

設定の詳細はこちら
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-how-to-set-permissions-storage-explorer

設定が完了するとPower BIから接続が可能になります。

以上