この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは。大阪オフィスのDI部メンバー、tamaです。
Tableau ServerはSAMLの設定をすることができます。
SAML連携を利用することで、別のIdPプロバイダーを用意して、Tableau Serverの認証をそちらにお任せすることができます。また、他サービスの認証を既に何らかのサービスを使用してシングルサインオンにしている場合、Tableau Serverもそちらにまとめて、Tableau ServerもSSOでログインできるようにすることも可能です。
「SSOでログインが楽に!」というのもあるのですが、SAMLを設定するもう一つのメリットはセキュリティ面の強化です。というのも、Tableau Serverのローカル認証はパスワードポリシーを設定することができません。「何文字以上」「大文字必須」みたいな指定ができないんですね。また、定期的にパスワードを変更させるみたいな機能もありません。そういったものを別の認証サービスに肩代わりさせることでカバーする…という意味でもSAML設定は有効ですね。
というわけで今回は、最近パートナーにもなったAuth0を、Tableau Serverに連携させてみたいと思います。
本エントリの環境
- Tableau Server 2019.1
Auth0の概要及び初期設定
下記の冒頭部分をご覧ください。
Auth0側の設定を行う
Auth0を準備できたら、Auth0の設定画面を開きます。
アプリケーションの作成
最初にTableau Serverと連携するためのアプリケーションを作成します。 左サイドメニューから「Applications」を選択し、「+Create Application」ボタンを押下します。
アプリケーションの作成画面が表示されるので、任意の名前をつけます。アプリケーションのタイプは「Regular Web App」を選択します。
アプリケーションを作成したら、Addonsタブを選択し、「SAML2」というアドオンを選択します。
下記のような設定画面が開きます。さて、ここに何を入力するのでしょうか。
Tableau Server用に、SAML2アドオンを設定する
実は、Auth0のドキュメントに、Tableau Server用の設定が記載してあります。
上記ドキュメントには、Callback URLはhttp://{YOUR TABLEAU SERVER}/wg/saml/SSO/index.html
を指定しろと書いてあります。
また、アドオン設定画面のSettingに下記を入力するよう書いてあります。
{
"audience": "{YOUR TABLEAU AUDIENCE}",
"recipient": "http://{YOUR TABLEAU SERVER}/wg/saml/SSO/index.html",
"mappings": {
"email": "username"
},
"createUpnClaim": false,
"passthroughClaimsWithNoMapping": false,
"mapUnknownClaimsAsIs": false,
"mapIdentities": false,
"signatureAlgorithm": "rsa-sha1",
"digestAlgorithm": "sha1",
"destination": "http://{YOUR TABLEAU SERVER}/wg/saml/SSO/index.html",
"lifetimeInSeconds": 3600,
"signResponse": false,
"nameIdentifierFormat": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic",
"nameIdentifierProbes": [
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
]
}
ただし、いくつか書き換える必要がある部分があります。
{YOUR TABLEAU SERVER}
これはTableau Serverのドメインを入力すればOKです。
{YOUR TABLEAU AUDIENCE}
こっちは何を入力すればいいのでしょうか。Auth0のアドオン設定画面のSettingの下部分に解説がありました。
Default will be the Issuer on SAMLRequest.
Issuer
はどこに書いとるんや…と思いますが、これはアドオン設定画面のUsageにあります。
これをそのままaudience
のところに貼り付けましょう。
mappingsについて
"mappings": {
"email": "username"
},
Auth0のドキュメントでは上記のようになっています。
これは、Auth0に登録されているユーザーのメールアドレスとTableau Serverのユーザー名をマッピングする、という設定になっています。この設定のままで使用すると、Tableau Serverのユーザー名を、Auth0に登録されているユーザーのメールアドレスにしないといけなくなります。
Tableau Serverを使ったことがある方ならわかると思いますが、Tableau Serverのユーザーはメールアドレス欄は別にあるので、ユーザー名は素直にユーザー名として使用すると思います。
今回は検証のため、デフォルト設定でいきたいと思います。ただ、例えば下記のようにすることで、Auth0に登録されているユーザーのNAME情報とTableau Serverのユーザー名をマッピングすることができます。
"mappings": {
"name": "username"
},
今回は、最終的に下記のような設定になりました。
メタデータのダウンロード
アドオン設定画面のUsageから、Tableau Serverで使用するためのxmlファイルをダウンロードしておきます。
Tableau Serverの設定を行う
Auth0側の設定が終わったら、Tableau Server側の設定を行います。
オレオレ証明書を作成する
Tableau ServerでSSOを実現するためには証明書が必要ですが、今回はブログのための検証なので、サクッとオレオレ証明書を作成します。
手順は下記と全く同じです。
TSMで設定
Tableau ServerのTSMにアクセスして、「構成」→「ユーザーIDとアクセス」→「認証方法」と移動します。
各項目を設定していきます。
認証方法
「SAML」
SAML
「サーバーのSAML認証を有効化」にチェック
ステップ1
- Tableau Server リターンURL
- Tableau ServerのURLを入力
- SAMLエンティティID
- Auth0のアドオン設定画面に記載されている
Issuer
を入力 - SAML証明書ファイル
- 先ほど作成した証明書をアップロード
- SAMLキーファイル
- 先ほど作成したキーファイルをアップロード
ステップ2と3
今回は使用しません
ステップ4
先ほどダウンロードしたAuth0のxmlファイルをアップロードします。
ステップ5
デフォルトのままでOKです。
ステップ6
デフォルトのままでOKです。
設定が完了したら「保留中の変更を保存」→「再起動」で、Tableau Serverを再起動しましょう。
実際にログインしてみる
検証用に「名前がメールアドレス」のユーザーを作成しておく
今回のAuth0のマッピング設定は、Auth0に登録されているユーザーのメールアドレスとTableau Serverのユーザー名をマッピングする、となっています。ですので、該当するメールアドレスがユーザー名となっているユーザーを作成します。
いざログイン
Tableau Serverにアクセスすると、自動的にAuth0の画面に遷移します。
ここでAuth0のアカウントを入力します。Tableau Serverのアカウントじゃないですよ。すると、Tableau Serverにログインできました!
おわりに
連携のキモは、Auth0側のマッピング設定です。
Auth0上で作成したユーザーのNAMEは自動的にメールアドレスになるため、Tableau Serverとの連携を本格的に考える場合は、色々ルールを検討したほうがよさそうです(Googleアカウントなど、他の方法でAuth0にユーザーを作成した場合はこの限りではありません)。
Auth0についてのお問い合わせはこちら
Auth0にご興味がありましたら、ぜひクラスメソッドへお問い合わせください!