
OneLoginを連携してTableau Serverの認証をSSOにしてみる #tableau
はじめに
こんにちは。大阪オフィスのDI部メンバー、tamaです。
Tableau ServerはSAMLの設定をすることができます。これを利用することで、別のIdPプロバイダーを用意して、Tableau Serverの認証をそちらにお任せすることができます。また、他サービスの認証を既に何らかのサービスを使用してシングルサインオンにしている場合、Tableau Serverもそちらにまとめて、Tableau ServerもSSOでログインできるようにすることも可能です。
「SSOでログインが楽に!」というのもあるのですが、SAMLを設定するもう一つのメリットはセキュリティ面の強化です。というのも、Tableau Serverのローカル認証はパスワードポリシーを設定することができません。「何文字以上」「大文字必須」みたいな指定ができないんですね。また、定期的にパスワードを変更させるみたいな機能もありません。そういったものを別の認証サービスに肩代わりさせることでカバーする…という意味でもSAML設定は有効ですね。
というわけで、今回は弊社のパートナーでもあるOneLoginを、Tableau Serverに連携させてみたいと思います。
環境
- AWS EC2 m4.2xlarge
- Windows Server 2016
- Tableau Server 2018.2.1
オレオレ証明書を作成する
SSOを実現するためには証明書が必要ですが、今回はブログのための検証なので、サクッとオレオレ証明書を作成します。
まずは、Tableau ServerをインストールしているWindows Serverへ入りましょう。そして、コマンドプロンプトを管理者権限で実行し、下記のコマンドを実行します。
set OPENSSL_CONF=c:\Program Files\Tableau\Tableau Server\\apache\conf\openssl.cnf
ディレクトリを移動します。
cd C:\Program Files\Tableau\Tableau Server\packages\apache.\bin
キーファイルを作成します。
openssl.exe genrsa -out <ファイル名>.key 4096
CSRファイルを作成します。
openssl.exe req -new -key <キーファイル名>.key -out <ファイル名>.csr
証明書を作成します。
openssl x509 -req -days 365 -in <CSRファイル名>.csr -signkey <キーファイル名>.key -out <ファイル名>.crt
OneLoginの設定を行う
上記のファイルを作成し終えたら、Tableau Server…ではなくOneLoginの設定画面を開きます。
アプリケーションを追加する
上部メニュー「APPS」→「Add Apps」を選択します。
「Tableau Server(Signed Response)」を選びます(tableauとかで検索すると出てきます)。
登録したアプリケーションの設定を行う
Configuration
Configurationを選択し、各項目を埋めていきます。「Server Name」と「SAML Audience」はTableau ServerのURLを入力しましょう。末尾にスラッシュを入れないように注意してください。
Parameter
Parameterを選択すると、下記の画面が表示されます。
「Username」を選択し、Valueを「Username」に変更します。
下記画面のようになるはずです。
設定ファイルをダウンロードする
Tableau Serverに登録するxmlファイルを出力します。上部の「MORE ACTION」から「SAML Metadata」を選択して、ダウンロードしましょう。
ユーザーの設定をする
OneLoginに登録されているユーザーと、上記で登録したTableau Serverを紐付けます。上部の「USERS」を選択します。そして、ログインする予定のユーザーを選択して詳細画面に遷移します。「Application」というメニューから+のアイコンを選択して、上記で設定したTableau Serverを選びましょう。
下記の設定画面が出てくると思いますが、ここで重要な設定があります。「Username」という項目を、Tableau Serverに存在するユーザー名と同じものにしてください。ここで紐付けが行われますので、ここをミスってるとログインできません。
Tableau Serverの設定を行う
OneLogin側の設定を終えたら、ついにTableau Serverの設定に移ります。TSMを開きましょう。そして、「構成」→「ユーザーIDとアクセス」→「認証方法」と移動します。
各項目を設定していきます。
認証方法
「SAML」
SAML
「サーバーのSAML認証を有効化」にチェック
ステップ1
- Tableau Server リターンURL
- Tableau ServerのURLを入力
- SAMLエンティティID
- Tableau ServerのURLを入力
- SAML証明書ファイル
- 先ほど作成した証明書をアップロード
- SAMLキーファイル
- 先ほど作成したキーファイルをアップロード
ステップ2と3
今回は使用しません
ステップ4
先ほどダウンロードしたOneLoginのxmlファイルをアップロードします。
ステップ5
デフォルトのままでOKです。
ステップ6
デフォルトのままでOKです。
設定が完了したら「保留中の変更を保存」→「再起動」で、Tableau Serverを再起動しましょう。
実際にやってみる
Tableau Serverにアクセスすると、自動的にOneLoginの画面に遷移します。
ここでOneLoginのアカウントを入力します。Tableau Serverのアカウントじゃないですよ。すると、Tableau Serverにログインできました!
OneLogin側でUsernameの設定をしたかと思いますが、そこに設定した名前と、Tableau Serverに存在するユーザーの名前を紐付けて、ログインしています。今回OneLogin側には「admin」という名前を設定しました。そして、Tableau Server側には、サーバー管理者のadminというユーザーが存在しています。その2つが紐付いてログインが成功しています(だからTableau Serverにはadminというサーバー管理者でログインしてます)。
たまに勘違いしそうになりますが、OneLogin側にいるユーザーが全員Tableau Serverにログインし放題になるわけではありません。Tableau Server側で別途ユーザーの登録は必要です。Tableau Server側のユーザー名とOneLogin側で設定したUsernameが一緒の状態で、OneLoginへの認証が成功すると、そのままTableau Serverへのログインも成立するということです。決してTableau Server側でのユーザー登録が不要になるわけではないところに注意です。
おわりに
Tableau社のドキュメントには、Tableau Online版の記事しか無くて、ちょっと苦戦しましたが、下記記事のおかげで何とか実現できました。