Tableau Online で Azure AD と SAML 連携してみる

#概要
##Tableau Online とは
Tableau Online は Tableau Software 社が提供する SaaS 型の Business Intelligence プラットフォームです。
https://www.tableau.com/ja-jp/products/cloud-bi
Tableau Desktop で作成したコンテンツを Tableau Online にアップロードすることで企業内に広く分析結果を共有をすることができます。
###Tableau Online の認証方法
Tableau Online はデフォルトでローカル認証で構成されますが、いくつかの認証連携方法をサポートしています。詳細は [公式ドキュメント](https://onlinehelp.tableau.com/current/online/ja-jp/security_auth.htm) を参照ください。今回はこれらのうちの SAML を使って Azure AD と SSO 連携してみます。
###Tableau Online の無料トライアル
まだ Tableau Online のアカウントをお持ちでない場合は下記 URL から無料トライアルにサインアップしてください。
https://www.tableau.com/ja-jp/products/cloud-bi
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/9cb9519d-0a5b-aafd-320b-5947b22c20ec.png">

##Azure Active Directory (略称 Azure AD / AAD) とは
Office 365 の認証基盤として使われる ID 基盤です。**詳細は [Azure Active Directory の検証テナントを作成してみる](https://qiita.com/tab123/items/f13d989c327fc83f4286) を参照ください**

#設定手順
##検証に必要なもの
・Tableau Online サイト
・Tableau Online サイト管理者アカウント
・Azure AD テナント
・Azure AD 全体管理者アカウント
##Tableau Online 側設定 (1)
https://sso.online.tableau.com/public/idp/SSO にアクセスし、サイト管理者でログイン。
設定 -> 認証 -> 認証タイプ のところで以下を設定
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/386132da-2167-4af0-f7af-1ae196b6f61a.png">
・"追加の認証方法を有効にする" にチェック
・"SAML" を選択
・"接続の編集" をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/246284/5a512ad2-c8f6-8a00-0966-889ff69b93cb.png)
・"Tableau Online エンティティ ID" をコピーしていったんメモ帳などに張り付けしておきます。

##Azure AD 側設定
https://portal.azure.com/ にアクセスし、全体管理者でログイン。
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/27a346fd-c28c-0719-f672-4dec11da1aed.png">
左側のメニューから "Azure Active Directory" -> "エンタープライズアプリケーション" を選択

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/a2b497f0-485e-1d91-cf5c-c9323ec37037.png">
"すべてのアプリケーション" -> "新しいアプリケーション" を選択

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/af6a8347-d64b-a270-d346-6af6a742b827.png">
"tableau" で検索し、"Tableau Online" を選択して、"追加" をクリック
 (ちなみに Tableau Server も Azure AD と SAML 連携可能です)

クイックスタートの画面が表示されます。 
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/de60df5a-2177-5adb-e486-0281f193f766.png">
"テスト用のユーザーを割り当てる" をクリック

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/277c330c-3856-e3bf-ecc4-2042629c9228.png">
"ユーザーの追加" -> "ユーザー" -> 適当なユーザーを追加します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/c161506d-ea4a-4911-0794-ff78be9265a3.png">
"ロールの選択" で適当なロールを割り当てます。今回はサイト管理者を割り当ててみます。

クイックスタートメニューにもどります
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/85d81500-ed5b-18e6-5144-6916120048ad.png">
"シングルサインオンを構成する" をクリックします。

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/35332f6d-16d6-46dc-a8ea-9a50fe72451e.png">
**・サインオン URL に https://sso.online.tableau.com/public/sp/login?alias=XXX を入力 (※)**
・識別子 "Tableau Online 側設定 (1)" で取得したエンティティ ID を張り付けます。
https://sso.online.tableau.com/public/sp/metadata?alias=XXX
・"SAML 署名証明書" のところにある "メタデータ XML" をダウンロードして適当なところに保存しておきます。

**(※) 上記スクリーンショット および 公式のドキュメント上の サインオン URL は https://sso.online.tableau.com/ となっていますが、https://sso.online.tableau.com/public/sp/login?alias=XXX にすることで Tableau Online 標準のサインオン画面をスキップすることができます。 (ドキュメントバグ？)**

##Tableau Online 側設定 (2)
Tableau Online の設定画面に戻ります
![image.png](https://qiita-image-store.s3.amazonaws.com/0/246284/2412520a-996e-c708-70a4-569c3a51c0f8.png)
"4 Tableau Online にメタデータ ファイルをインポート" で 参照をクリックし、さきほどの xml ファイルをインポートします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/f643a734-9b19-841c-1925-9068b750a85d.png">

"5 属性の照合" で Azure AD から Tableau Online に渡す属性を設定します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/7edc66ef-8d6c-f80a-d1c8-23abe1dc0b5e.png">

|名称|アサーション名 (URI)  |
|:---|:---|
|メール       |http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name  |
|名           |http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname  |
|姓          |http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname  |
上記をそれぞれ入力し、適用をクリック
(詳細は [Azure Active Directory のエンタープライズ アプリケーションの SAML トークンで発行された要求のカスタマイズ](https://docs.microsoft.com/ja-jp/azure/active-directory/develop/active-directory-saml-claims-customization))

##Tableau Online ユーザの登録
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/09e891ca-ad5d-a0bc-2ec1-78faae21677a.png">
"ユーザーの追加" をクリック

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/b67b6058-0daa-cb19-912e-d25e9f76ab00.png">
"メールアドレスの入力" をクリック

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/985a0a8c-0e94-8ed2-347a-0aaa309438a7.png">
"microsoftonline.com (SAML) 認証向けにユーザーを追加" を選択し、Azure AD ユーザを追加します。

##動作の確認
別ブラウザ、もしくは別セッションでアクセス パネル http://myapps.microsoft.com にアクセス
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/96f5850b-4f1e-d9af-7441-b597a19aef1f.png">
サインイン画面が表示されるのでサインイン

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/9d6f0553-cdb2-d227-0edc-10b5c3b630a5.png">
Tableau Online をクリックして正常に Tableau Online にログインできることを確認します

<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/a8fb1b06-bd40-90f0-4885-6721500a1459.png">

##追加の設定
**Tableau Online を他のアプリケーション等に埋め込んで使用したい場合は以下 2 か所を設定することで、認証連携できます。** (参考) [Embedded Dashboard Displays a Login Prompt Button with SAML (SSO) Authentication](http://kb.tableau.com/articles/Issue/embedded-dashboard-displays-a-login-prompt-button-with-saml-sso-authentication) 
<img src="https://qiita-image-store.s3.amazonaws.com/0/246284/06c79a53-ebf6-2064-eb41-7db68a1db658.png">
・"6 埋め込みオプション" の "インライン フレームを使用する認証" を選択
・"埋め込まれたビューの既定の認証タイプ" の "microsoftonline.com (SAML)" を選択

#まとめ
Tableau Online の認証を Azure AD と連携することができました。これにより既に Office 365 を利用しているユーザであればシングルサインオンが実現できます。また、 Azure AD の設定を追加で行えば、多要素認証や特定の IP アドレス、デバイス からのアクセスしか受け付けない、などといったエンタープライズに求められるセキュリティ要件を補完することが可能になります。

##関連リソース
Microsoft 社ドキュメント [チュートリアル: Azure Active Directory と Tableau Online の統合](https://docs.microsoft.com/ja-jp/azure/active-directory/active-directory-saas-tableauonline-tutorial)
Tableau 社 ドキュメント [Azure Active Directory での SAML の構成](https://onlinehelp.tableau.com/current/online/ja-jp/saml_config_azure_ad.htm)