Tableau Server と Okta を連携し Tableau Server の認証を SSO にする #Tableau

2023.08.25

はじめに

Tableau Server では SAML 2.0 以降をサポートする外部アイデンティティ プロバイダー(IdP)を使用した SAML の設定が可能です。
SAML | Tableau

本記事では、IdP として Okta を試してみました。

他の IdP を使用した記事もありますので、こちらもあわせてご参照ください。
OneLoginを連携してTableau Serverの認証をSSOにしてみる #tableau | DevelopersIO
Auth0を連携してTableau Serverの認証をSSOにしてみる #tableau | DevelopersIO

検証環境

  • Okta
  • Tableau Server on Windows 2023.1.5
  • Windows Server 2019

Tableau Server は単一のサーバーで構成し、前段に ALB などはありません。

Tableau Server の SSL化

SAML 向けに Tableau Server を構成するには、証明書とキーファイルが必要となります。ここでは検証用のため、以下の記事と同様の内容で、証明書(server.crt)とキーファイル(server.key)を作成しました。キーファイルにはパスフレーズを設定していません。

開発環境の Tableau Server をSSL化する | DevelopersIO

Okta 側の設定

アプリケーションの追加

「Applications > Browse App Catalog」より「Tableau Server」と検索します。

Add Integration をクリックします。

Application Label に任意の文字列を設定し、NEXT を押下します。その他はデフォルトのままとしました。

Sign-On Options の設定

次の画面では Sign-On Options の設定を行います。

Sign on methods としてSAML 2.0 を選択します。シングルログアウトを構成する場合は、ここで Enable Single Logout にチェックを入れ Signature Certificate 欄に証明書(ここではserver.crt)をアップロードします。

SAML と Okta を使用したシングル ログアウトを構成する | Tableau

次に、画面下の View Setup Instructions をクリックします。

リンク先の Configuration Steps に記載の URL にアクセスします。

XML 形式の IdP メタデータが表示されるので、右クリックで保存しておきます。
シングルログアウトを構成する場合は、以下のようなSingleLogoutService要素がメタデータに追加されていることを確認しておきます。

<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://XXX.okta.com/app/tableau/XXX/slo/saml"/>

上述の手順で Enable Single Logout にチェックを入れたのにSingleLogoutService要素が追加されていない場合 Sign-On Options の画面に戻り、先に右下の Done をクリックします。

その後、再度 Sign On オプションから View Setup Instructions 経由で IdP メタデータを表示し、SingleLogoutService 要素が追加されていることを確認し、ダウンロードを行います。(※必要に応じて画面更新を行います。)

Advanced Sign-on Settings の設定

ここでは「Login URL」と「SAML Entity ID」を設定します。いずれも値は Tableau Server の URL (https://<Tableau Serverアクセス用のFQDN>)を入力します。
注意点として、URL の最後にスラッシュ(/)をつけないようにします。

Credentials Detailsはデフォルト設定で進め、右下の Done を押下します。

Tableau Server 側の設定

TSM(Tableau Services Manager)の「構成 > ユーザーIDとアクセス > 認証方法」を開きます。
認証方法としてSAMLを選択します。

Step1

「サーバーのSAML認証を有効化」にチェックを入れ、以下を入力します。

  • Tableau Server return URL
    • Tableau Server アクセス用のURL(https://<Tableau Serverアクセス用のFQDN>
  • SAML entity ID
    • Tableau Server アクセス用のURL(https://<Tableau Serverアクセス用のFQDN>
    • Tableau Server return URL と同じ値
  • SAML certificate file
    • SSL化に使用した証明書(ここではserver.crt
  • SAML key file
    • SSL化に使用したキーファイル(ここではserver.key

Step2

Okta ではサービスプロバイダーのメタデータをインポートすることはできないので、こちらはスキップします。

Step3

IdP メタデータを取得します。ここは、上述の手順で実施済みです。

Step4

Okta からダウンロードした IdP メタデータ(XMLファイル)をアップロードします。

以降の手順(Step5 ~ 7)はデフォルトのままとし、保留中の変更を適用して、Tableau Server を再起動します。

Okta 上のユーザーを Tableau Server に割り当て

Okta の Applications から上述の手順で作成した Tableau Server を選択します。
Assignments タブを開き、「Assign > Assign to People」をクリックします。

Okta 上の任意のユーザーについて Assign をクリックします。

ポップアップが表示されるので、Tableau Server 上のユーザー名を入力し、Save and Go Back をクリックします。これで、Okta 上のユーザーを Tableau Server のユーザーに割り当てができたことになります。

サインイン

再起動後、Tableau Server にアクセスすると Okta 側の ログイン画面に遷移するので、Okta 上のユーザー名・パスワードを入力します。

すると Okta 上で割り当てた Tableau Server ユーザーとしてログインできます。

なお、SAML によるユーザー認証は、データソースやワークブックなどの Tableau Server コンテンツに関するパーミッションには適用されません。
つまり、ユーザーが SAML を使ってログインしたとしても、そのユーザーが Tableau のどのコンテンツにアクセス可能かは SAML 認証とは別に Tableau 側で設定しておく必要があります。

Tableau Server に存在しないユーザーを割り当てた場合は、下図のような表示となるので、ユーザー名を間違いなく入力できているかご確認ください。

サインアウト

ここではシングルログアウトも構成しているので、アカウントメニューに「サインアウト」が追加表示されます。(シングルログアウトを構成していない場合は表示されません。)

サインアウトすると下図のようになります。

さいごに

Tableau Server と Oktaを連携し SSO を試してみました。こちらの内容が何かの参考になれば幸いです。

参考

All about SAML | End-to-end Tableau and OKTA integration | Tableau