Tableau ServerのSSO(シングルサインオン)連携にOpenID Connect(Google Apps)を利用する

2016.10.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Tableau Serverでは、シングルサインオン(SSO)の仕組みとしてOpenID Connectを利用する事が出来ます。連携が出来ていれば、Tableau Serverへの個別ログインも不要となるのでとても便利なものとなります。当エントリでは、IdPの一つであるGoogle(Google Apps)をシングルサインオンの仕組みとしてTableau Serverと連携させる手順についてご紹介していきたいと思います。

目次

Step1.Google Apps: OpenID Connect用にIdPに必要な情報を作成・入手

Tableau ServerとGoogle Appsを連携させるためには、Tableau Serverが連携する為のIdPを予め用意しておく必要があります。以下の手順に基づいてこの情報を作成します。

まず始めに、Googleにサインインした状態で開発者向けサイト(https://console.developers.google.com)にアクセス。プロバイダークライアントIDとプロバイダークライアントシークレットを取得する必要がありますので、任意の名前でプロジェクトを作成します。メニューから『プロジェクトを作成』を選択。

tableau-googleapps-openid-integration_01

任意のプロジェクト名とプロジェクトIDを指定、[作成]を押下。

tableau-googleapps-openid-integration_02

プロジェクト配下のメニューで[認証情報]を選択し、[認証情報]→[認証情報を作成]を押下。

tableau-googleapps-openid-integration_03

欲しいのはクライアントID等の情報なので[OAuth クライアントID]を選択。

tableau-googleapps-openid-integration_04

同意画面が必要となりますので、この流れで併せて作成してしまいましょう。

tableau-googleapps-openid-integration_05

同意画面の作成。メールアドレスは既定値、サービス名は任意の名前で[保存]を押下。

tableau-googleapps-openid-integration_06

そのままの流れでプロジェクト作成に進みます。[アプリケーションの種類]は『ウェブアプリケーション』を選択。任意の名前を設定してここは一旦プロジェクトを作成します。(※『承認済みのリダイレクトURI』については後程後述する手順で設定を追記します)

tableau-googleapps-openid-integration_07

プロジェクト作成完了。併せて以下ダイアログが表示されますので『クライアントID』『クライアントシークレット』双方の値をコピーして控えておきます。

tableau-googleapps-openid-integration_08

Step2.Tableau Serverのインストール

また、併せてOpenID/GoogleApps連携を行うTableau Serverの環境も用意しておきます。公式ドキュメントの記載にある様に(※下記参照)、OpenID連携を行う際はAD認証は相容れる事が出来ず、ローカル認証が可能な状態で行う必要があります。

(※『重要な注意事項』より)

ローカルの認証を使用するようにサーバーが構成されている場合にのみ、Tableau Server で OpenID Connect を使用できます。サーバーが Active Directory 認証を使用するように構成されている場合は、OpenID Connect を利用できません。詳細については、一般的なサーバー オプションの構成を参照してください。

ですのでここではシンプルにWindows Server 2012のEC2インスタンスを用意し、いつも通りのインストール作業を(ローカル認証で)進めて、システム管理者情報を入力して管理者でアクセス可能な情報としておきます。

google-apps-and-tableau_07 google-apps-and-tableau_08

google-apps-and-tableau_09 google-apps-and-tableau_11

google-apps-and-tableau_10 google-apps-and-tableau_12

上記手順ではローカル認証でTableau Serverシステム管理者を作成していましたが、Google Apps認証と絡める場合には別途、Google Appsのユーザーと紐付くユーザーを用意しておく必要があります。ここでは試しにGoogle Apps認証を行った際の『システム管理者』と連携させる為のユーザーを(ローカル認証環境下で)別途作成しておきます。ユーザー作成時の情報としては、以下の形で作成とします。

  • ユーザー名:Google Appsで利用しているユーザー名(=メールアドレス)
  • パスワード:任意(ここではGoogle Appsサインイン時のものとは異なる適当な内容を設定しておきました)

tableau-googleapps-openid-integration_09

Step3.Tableau ServerのSSL設定&DNS設定

Tableau ServerでIdP連携を行う際の手順として、Tableau Server上の設定については以下ドキュメントに詳細な設定の記載がありますが、『SSL連携を行う必要がある』『IdP設定の前にSSL設定を行っておく』という2つのポイントが重要事項として記載されています。

(※『重要な注意事項』より)

外部通信に SSL を使用するよう Tableau Server を構成することをお勧めします。これにより、認証情報の交換中、Tableau Server と IdP の間のセキュアな通信を維持するのに役立ちます。詳細については、外部 SSL の構成を参照してください。

Tableau Server の初期構成中 (構成ユーティリティを初めて実行するとき) に OpenID Connect を構成する場合、SSL を設定するオプションはありません。その場合は、インストールを終了してから構成に戻って SSL を設定し、次に OpenID を構成することをお勧めします。

注 Tableau Server に外部 SSL を使用する場合、一般的に、OpenID Connect を構成する前にこの操作を実行した方が便利です。OpenID を既に構成した後に SSL を構成する場合、IdP に戻って以前の構成を更新する必要があります。たとえば、Tableau Server 外部 URL のプロトコルを http:// から https:// に変更する必要があります。

また、IdP設定に関しての設定項目『リダイレクトURL』については、ドメイン名についてはパブリックトップレベルのドメイン名である事が必須となります。下記はTableau ServerにEIPを割り当てた形で進めた時のエラー内容です。この為、構築するTableau Serverについてはこのタイミングで(パブリックトップレベルの)ドメイン名の設定、及びSSLの設定を施しておく必要があります。

tableau-googleapps-openid-integration_10

今回は検証用という事でSSLについては下記手順を基にオレオレ証明書を作成し設定、併せてドメイン名についても設定を行っておきました。

google-apps-and-tableau_16

こんな感じで準備完了。

tableau-googleapps-openid-integration_11

Step4.Tableau Serverに対してOpenID設定を追加

前準備が完了しましたので、ここから本題となるOpenID周りの設定に入ります。下記ドキュメントの『サーバーの構成』がベースとなります。

まずは稼働しているTableau Serverをtabadmin stopコマンドで停止。

PS D:\Tableau\Tableau Server\10.0\bin> .\tabadmin.exe stop
===== Stopping service...
   -- Service stopped successfully
PS D:\Tableau\Tableau Server\10.0\bin>

メニューから[Tableau Server 10]→[Configure Tableau Server]を選択し、設定ウインドウの[OpenID]タブを開いて下記内容を設定します。

項目 設定内容
Use OpenID Connect for single sign-on チェックをON、有効化
Provider client ID 『Google Apps: OpenID Connect用にIdPに必要な情報を作成・入手』の手順で取得したクライアントID
Provider client secret 『Google Apps: OpenID Connect用にIdPに必要な情報を作成・入手』の手順で取得したクライアントシークレット
Provider configuration URL https://accounts.google.com/.well-known/openid-configuration
Tableau Server external URL https://上記手順で設定したホスト名 (※末尾のスラッシュは無し)

上記設定内容によって自動生成される一番下の項目(Configure the OpenID provider using the following redirect URL for Tabelau Server:)のURLは、後述する手順で設定に使いますのでコピーしておきます。設定後[OK]押下。

tableau-googleapps-openid-integration_12

上記でコピーしたURLを、Google Apps設定の『承認済みのリダイレクトURL』の欄に貼り付け、[保存]を押下。

tableau-googleapps-openid-integration_13

Step5.接続確認

では、いよいよ接続・サインイン確認を行ってみたいと思います。OpenID設定を有効化した状態でTableau Serverを起動し、

PS D:\Tableau\Tableau Server\10.0\bin> .\tabadmin.exe start
===== Starting service...
   -- Service was started successfully
PS D:\Tableau\Tableau Server\10.0\bin>

Google appsにログインしたままの状態でブラウザ経由でTableau Serverにアクセス。

tableau-googleapps-openid-integration_14

画面がリダイレクトされ、Google Appsから情報の利用許可を求められました。[許可]を押下し、先に進みます。

tableau-googleapps-openid-integration_15

すると、サインインの処理が行われ、

tableau-googleapps-openid-integration_16

無事にログインする事が出来ました!

tableau-googleapps-openid-integration_17

また、設定については下記ページの『サーバー管理者にコマンドライン ツールのサインインを制限する』の項にあるように、コマンドラインツールを使う場合は個別に設定を変更しておく必要があります。併せてご確認、実施してください。

¥> tabadmin stop
¥> tabadmin set wgserver.authentication.restricted true
¥> tabadmin configure
¥> tabadmin start

まとめ

Tableau Server x OpenID(GoogleApps)という組み合わせでの環境構築手順のご紹介でした。この組み合わせを用いる事でログイン周りがだいぶ楽になりますね。AD環境とは併用出来ないという制約もありますが、この辺りは用途・ケースに応じてお選び頂ければと思います。こちらからは以上です。