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\<version>\apache\conf\openssl.cnf

ディレクトリを移動します。

cd C:\Program Files\Tableau\Tableau Server\packages\apache.<Tableau Serverのバージョン名>\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版の記事しか無くて、ちょっと苦戦しましたが、下記記事のおかげで何とか実現できました。

参考