はじめに
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のユーザがUserA@A.onmicrosoft.com、BのADのドメインが@B.onmicrosoft.comだとすると、招待先のBのAD上では以下のようなUserとして登録されます。
UserA_A.onmicrosoft.com#EXT#@B.onmicrosoft.com
(Portal上では普通にUserA@A.onmicrosoft.comとして表示されます。)
BのテナントでUserA@A.onmicrosoft.comに対してADLS G2へのアクセス権限を付与し、Power BIからいつものUserA@A.onmicrosoft.comで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のパスワードは非公開の状態で、UserA@A.onmicrosoft.comとは別のパスワードとなっているようです。
したがって、@B.onmicrosoft.comのユーザ管理者にパスワードをリセットしてもらう必要があります。
コード例は下記
$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#がついたユーザとして表示されると思います。
設定が完了するとPower BIから接続が可能になります。
以上