TableauをAzureADでSSOする構成にしてみた

[前回のSalesforce](https://qiita.com/hisssa0102/items/0d7f55e97faf850d387b)に続いて、TablueauをAzureADにSSOさせてみた。まだ課題はあるもののとりあえずは実現できたし、備忘録を兼ねて。

#シナリオ

すでにOffice365を利用している組織。
データアナリスト向けで、Tableauモバイルアプリからの利用は想定しておらず、PCから利用できればよい。

今回は、Office365とのSSOをゴールにした。

#参考にしたもの
TableauからもMicrosoftからも手順は公開されている。

[Microsoft]チュートリアル:Azure Active Directory と Tableau Online の統合
https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/tableauonline-tutorial

[Tableau]Azure Active Directory での SAML の構成
https://help.tableau.com/current/online/ja-jp/saml_config_azure_ad.htm


#事前にやっておいたこと

・Tableauにユーザーを作成すること。ユーザーこの後作業するAzureADの管理者ユーザーのUPNと同じアカウント名で作成。

#Tableauでの設定

Tableauに管理者アカウントでログインして、設定→認証→追加の認証方法を有効にする、の接続の編集を選択
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/dfc45768-23b9-b2a7-1b86-bdf71e8b4b72.png" width=75%>

アサーション コンシューマー サービス URL (以下ACS)欄とエンティティ欄のURLを控えておく（あとでAzureADに入力する）


#AzureADでの設定
AzureADのエンタープライズアプリケーション→新しいアプリケーションを開く。
「ギャラリーから追加する」で検索すると表示されるので、選択して追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/488ac5c7-2063-ae80-c64a-8fa9946db68e.png)

シングルサインオンの設定を選んで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/08b6e106-ae49-17ca-18a0-ac049f553140.png)

SAMLを選んで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/fd0279dc-137c-cc04-8713-3650e660d2f3.png)

基本的なSAML構成を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/c329b89a-251c-077e-c92f-53074790790b.png)

各欄にそれぞれ入力して保存。

| Tableau Online       |→       |Azure AD    |
|:-----------------|:------------------|:-----------------|
| エンティティのURL     ||識別子（エンティティID)欄|
| ACSのURL             ||応答URL欄|
| ACS用のURLを一部書き換え<br>（以下参照）||サインオンURL|

変更前　https://sso.online.tableau.com/public/sp/metadata?alias=xxxxxxxx
変更後　https://sso.online.tableau.com/public/sp/login?alias=xxxxxxxx
（metadataをloginに変更する）

３のSAML署名証明書の、フェデレーションメタデータXMLをダウンロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/2910c489-4deb-32d3-7230-58a4bdd34443.png)

４のTableau OnlineのセットアップのURLを3つとも控える必要なし。



ユーザーとグループで、管理者用アカウントテスト用とは別のテスト用ユーザーを割り当てる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/54da44ac-0709-423f-8e3a-3395faba1c25.png)



#Tableauでの設定

Tableauに管理画面の認証に戻って、先ほどダウンロードしたXMLをインポートして、適用をクリック。IdPエンティティID欄やSSOサービスURLには自動で値が反映される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/1e5cdff6-bab9-4c0a-0cf1-136fa49e8236.png)

| AzureAD       |       |Tableau Online    |
|:-----------------|:------------------|:-----------------|
| ダウンロードしたXMLファイル|→|IdPメタデータファイル|

テスト接続をクリックして正常に接続された旨表示されることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/cff1a1c4-1913-ab46-9d7e-12ee2901fdf9.png)


埋め込まれたビューの既定の認証タイプで、microsoftonline.comを設定。
これやっておかないと、ユーザーがTableauでログインできるように設定変更できてしまう（=AzureAD認証の制御から外れてしまう）ので、必ず選べなくしておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/12a5f63b-951a-770e-f7c3-7f87bdc114f9.png)

テスト用ユーザーを作成する。先ほどAzureADで割り当てていたユーザーのUPNと同じにしておく。
作成する際は、microsoftonline.com認証向けのユーザーにしておく。
（でないと、SSOできない）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/ee090916-136b-1ec7-a9c2-bff0151c3f6e.png)


これで設定は完了。

#テスト

作成したテストユーザーで、ログインできることを確認する。

TableauのログインURL（SSO用）でアカウントを入力するとパスワード欄が消えて、サインインをクリックするとOffice365のログインURLへリダイレクトされ、ログインできることを確認。
https://sso.online.tableau.com/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/fbaba68f-0dcd-3cf3-8d1d-820c080f6098.png)


MyAppsのリンクからSSOできるか確認。
http://myapps.microsoft.com/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/53d5f31a-62bb-bb9d-6f86-9095e5454937.png)

#トラブル

管理者アカウントが一向にSSOできない！と思っていたが、Tableauはユーザー単位でSSOさせるか、Tableauで認証させるか、選択するらしい。Office365は原則ドメイン単位なので、この点は違う。

Tableauでは、管理者をSAML認証だけにしようとすると、警告が入る。管理者用アカウントだけはSAML認証させないか、あるいは確実にSAMLできることを確認して適用するのが望ましい。（あたりまえだけど）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237698/bc2b85d8-3cc3-4b9b-6be8-247f6c1222f7.png)



どっちのドキュメントも最新ではない箇所が。

Tableau側のドキュメントのは、AzureADのドキュメントへのリンク先が、Tableau用ページではなく、一般的なSAML用のページへのリンクになっている。自社のサービスのドキュメントのほうがわかりやすい！って感じだとありがたいなぁ。

AzureAD側のドキュメントでは、AzureADでの画面スクショもコメントも、古いままの箇所がある。せめて自社サービスの説明の箇所は最新化してほしいなぁ。

#感想
前回のSalesforceよりも構成が簡単にできた。

ドキュメント云々はあるけど、ユーザー企業で簡単に設定できるSaaSは増えてる。セキュリティ観点からも、ユーザーの利便性観点からも、Office365つかってるならSSOは当たり前になっていくんんじゃないだろうか。

ほかのSaaSもいくつかまとめてみました。[各種SaaSとAzure Active Directoryのシングルサインオン対応状況を調べてみた](https://qiita.com/hisssa0102/items/77f94823f6c708623694)を参照してください。