Tableau Server プロキシの設定

多くの企業において、Tableau Server はインターネットと通信する必要があります。Tableau Server は保護された内部ネットワーク内で動作するように設計されました。Tableau Server をインターネット上や DMZ で直接設定しないでください。お使いのネットワークとインターネットとの間の通信は、プロキシ サーバーを使用して仲介するようお勧めします。フォワード プロキシ サーバーは、ネットワーク内部からインターネット上のターゲットへのトラフィックを仲介します。リバース プロキシ サーバーは、インターネットからネットワーク内のターゲットへのトラフィックを仲介します。

誰がこの記事を読むべきか

この記事は、ネットワーキング全般やゲートウェイ プロキシ ソリューション全般の経験がある IT プロフェッショナル向けです。この記事では、Tableau でいつ、またどのようにインターネット アクセスが必要であるかについて説明します。また、ネットワークと Tableau を構成してインターネットとの間のアクセスに転送およびリバース プロキシ サーバーを使用する方法についても説明します。多くのサード パーティ プロキシ ソリューションを使用できるので、この記事のいくらかのコンテンツは必然と一般的なものになります。

プロキシ サーバーを構成する前に、インターネットとの通信を参照してください。

フォワード プロキシ サーバーの構成

Tableau Server からインターネットへの通信を有効にするには、フォワード プロキシ サーバーの背後で Tableau Server を展開します。Tableau Server がインターネットへのアクセスを必要とする場合、要求を直接インターネットに送ることはしません。代わりに、フォワード プロキシに要求を送ることで、要求が転送されます。フォワード プロキシは、管理者がインターネットへのトラフィックで、ロード バランシング、サイトへのアクセスのブロックなどのタスクを管理するのをサポートします。

フォワード プロキシを使用する場合、トラフィックをフォワード プロキシに送るために、ネットワーク内で Tableau Server を実行するコンピューターを構成する必要があります。Tableau Server では、パススルー認証または手動プロキシ認証はサポートされていません。

フォワード プロキシを使用するための Tableau Server on Linux の構成

インストール プロセスの一部としてフォワード プロキシ ソリューションを使用するように Tableau Server を構成することをお勧めします。具体的には、Tableau Server の構成は、TSM のインストールと初期化の説明で説明した通り ./initialize-tsm を実行する場合に、またはTableau Server の自動インストールの一環として行ってください。

以下の手順では、Linux 上の Tableau Server 用のフロントエンドプロキシ構成ファイルを作成する方法について説明します。

この構成ファイルは、次のディレクトリに保存されています。

~<unprivileged_user>/.config/systemd/tableau_server.conf.d

既定では、Tableau Server によって、権限なしユーザー、tableau が作成されます。したがって、構成ディレクトリへのデフォルトのパスは次のとおりです。

~tableau/.config/systemd/tableau_server.conf.d

このトピックおよび以下の構成ファイルのプロキシ構成ファイルは、 20-proxy.conf と呼ばれます。このファイルには独自の規則に従って名前を付けることができますが、.conf 拡張子を使用する必要があります。ファイル名に応じて、 tableau_server.conf.d ディレクトリに格納されているファイルを語彙的オーダーで処理します。

  1. tsm stop コマンドを実行します。

  2. 権限なしのユーザーとしてセッションを開始します。既定では、インストール時に Tableau Server は tableau という権限なしユーザーを作成します。次のコマンドを実行します。

    sudo su -l tableau

  3. tableau_server.conf.d ディレクトリに 20-proxy.conf ファイルを作成するか、開きます。セットアップ中にプロキシを構成した場合、 20-proxy.conf ファイルは既に作成されています。

    • ファイルの作成。次のコマンドを実行します。

      touch ~tableau/.config/systemd/tableau_server.conf.d/20-proxy.conf

    • テキスト エディターで 20-proxy.conf ファイルを開きます。

  4. プロキシ構成ファイルの内容 をファイルにコピーします。既存のファイルを編集している場合は、構成を削除しないように注意してください。プロキシ構成ファイルの内容 には、フォワードプロキシ構成の設定方法に関する説明が含まれています。ファイルを編集して保存したら、ステップ 5 に進みます。

  5. プロキシ構成ファイルの内容
                                            
    # Always edit this file on Tableau Server as the unprivileged user. By default, tableau, is the unprivileged user created by Tableau Server during installation.
    # Set environment variables http_proxy and https_proxy to point to your proxy host.
    # For example, to set the proxy to example-host for ports 80 and 443, run the following commands:
    #
    http_proxy=http://example-host:80/
    https_proxy=http://example-host:443/
    #
    # Take care to use 'http' when you specify the URL for the https_proxy environmental variable.  
    # Do not specify the 'https' protocol for the value of  the https_proxy environmental variable.
    #                   
    # To bypass the proxy server, specify exceptions in the no_proxy variable. Use this variable if your proxy server does not route internal addresses. 
    # You must also add exceptions to this proxy configuration to guarantee that all communications within a local Tableau Server cluster (if you have one now or will have one later) do not route to the proxy server. 
    # Enter both the host name and the IP address for each computer. Additionally, include the cannonical host name (localhost) and IP address (127.0.0.1) for the local computer.
    # For example, to specify exceptions for a three-node cluster:
    #
    no_proxy="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
    #									
    # Where "hostname1" is the actual hostname of node 1, and "IP1" is the actual IP address of node 1, etc.
                                        
  6. Tableau シェルを終了します。次のコマンドを実行します。

    exit

  7. TSM ビジネス サービスを再起動します。次のスクリプトを実行します。

    sudo /opt/tableau/tableau_server/packages/scripts.<version>/start-administrative-services

  8. TSM を再起動します。

    tsm restart

サーバー クラッシュ レポーター

組織でプロキシ サーバーを使用してインターネットに接続する場合は、Tableau Server のクラッシュ レポーターでプロキシを使用するように構成する必要があります。Tableau Server でプロキシを使用するように既に構成している場合でも、別途、サーバー クラッシュ レポーターも構成する必要があります。サーバー クラッシュ レポーターでプロキシを構成するには、サーバー クラッシュ レポーターの構成を参照してください。

Tableau Server でのリバース プロキシの仕組み

リバース プロキシは、外部 (インターネット) クライアントから要求を受信し、Tableau Server に転送するサーバーです。リバース プロキシを使用する理由は何でしょうか。基本的な回答はセキュリティです。リバース プロキシは、特定の Tableau Server の個別 IP アドレスをインターネットに公開しなくても、Tableau Server をインターネットで使用可能にします。また、リバース プロキシは、社外のユーザーがアクセスできる場所にデータを格納しないよう、認証およびパススルー デバイスとして動作します。PCI や、HIPAA、SOX などのさまざまなプライバシー規制の対象となる組織にとって、この要件が重要となる場合があります。

次の図は、リバース プロキシ サーバーを使用するよう構成されている Tableau Server に対し、クライアントが要求を行った場合の通信パスを示しています。

  1. 外部クライアントは、Tableau Server への接続を開始します。クライアントは、リバース プロキシ サーバー用に設定されているパブリック URL (https://tableau.example.com など) を使用します。(クライアントはリバース プロキシにアクセスしていることを認識しません。)

  2. 代わりに要求されるリバース プロキシ マップは、Tableau Server へのリクエストを渡します。Tableau Server に要求を渡す前提条件として、クライアントを認証 (SSL/TLS を使用して) するようリバース プロキシを構成できます。

  3. Tableau Server は要求を取得し、リバース プロキシに応答を送信します。

  4. リバース プロキシはコンテンツをクライアントに戻します。クライアントに関しては、Tableau Server とやり取りを行ったにすぎないため、通信がリバース プロキシによって仲介されたことを知る方法はありません。

プロキシ サーバーと SSL

セキュリティを向上させるため、ネットワーク外部のトラフィックに対して SSL を使用するようリバース プロキシ サーバーを構成することをお勧めします。これにより、プライバシー、コンテンツの整合性、および認証を確保するのに役立ちます。また、その他のセキュリティ対策を展開してインターネット ゲートウェイと Tableau Server の間のトラフィックを保護している場合を除き、ゲートウェイ プロキシと Tableau Server の間に SSL を構成することをお勧めします。内部証明書または自己署名した証明書を使い、Tableau サーバーと他の内部コンピューターとの間のトラフィックを暗号化することができます。

モバイル アクセス

Tableau Server は Tableau Mobile セッションのすべての HTTP 応答に X ヘッダーを追加します。既定では、大半のプロキシ ソリューションが X ヘッダーを維持します。プロキシ ソリューションが X ヘッダーを維持しない場合は、モバイル クライアント セッションのすべての HTTP 応答で次のヘッダーを維持するようにプロキシ サーバーを設定する必要があります: X-Tableau: Tableau Server

プロキシ サーバー ゲートウェイに認証を設定している場合は、プロキシ サーバーが Tableau Mobile HTTP 要求に HTTP 302 応答で応答する必要があります。302 には、アイデンティティ プロバイダーのログイン ページへのリダイレクトが含まれている必要があります。302 の認証シーケンスが示されている図を確認するには、Tableau コミュニティの「Tableau Mobile Authentication Sequence」(英語)(新しいウィンドウでリンクが開く) を参照してください。

リバース プロキシとユーザー認証

Tableau Server は必ずユーザーを認証します。これは、組織用ゲートウェイでのインバウンド接続を認証する場合でも、Tableau Server がユーザーを認証することを示します。

とはいえ、すべてのクライアントでリバース プロキシによるユーザー認証がサポートされているわけではありません。

  • サポート対象の Web ブラウザでは、SAML、OpenID Connect、Kerberos、Trusted Tickets、またはリバース プロキシによる手動の認証を使用できます。ただし、ユーザー要求に対してゲートウェイで認証を求めるプロンプトが表示されない、透過的なシナリオを推奨します。この推奨は、ゲートウェイ プロキシでクライアントおよびサーバーのシステム レベル認証に SSL の使用を禁止するものではありません。実際、SSL システム レベル認証の使用を強く推奨します。

  • Tableau Mobile は、SAML、またはリバース プロキシによる手動の認証がサポートされています。Tableau Mobile の iOS バージョンではさらに、リバース プロキシ付きの Kerberos がサポートされています。上記と同様の推奨事項が適用されます。

  • Tableau Desktop は、リバースプロキシでの認証はサポートされていません。Tableau Desktop でのリモート アクセスをサポートするには、VPN ソリューションを使用するか、リバース プロキシにおいてトラフィックが Tableau Desktop から Tableau Server に直接ルーティングするように構成し、認証が行われるようにする必要があります。

組織が Active Directory で認証している場合:

  • Tableau Server を Kerberos 用に構成する前に、Tableau Server をリバース プロキシ用に構成する必要があります。詳細については、Kerberos の構成を参照してください。

リバース プロキシ サーバーを使用するための Tableau Server の構成

Tableau Server を構成する前に、プロキシ サーバー構成に関する次の情報を収集する必要があります。Tableau Server を構成するには、tsm configuration set コマンドを使用します。収集する必要のある情報は、tsm 実行の際に必要となるオプションに対応します。

以下の tsm オプションの大半も、ロード バランサーの背後で動作する Tableau Server 展開を設定するために使用できます。詳細については、ロード バランサーの追加を参照してください。

項目 説明 対応する tsm configuration set オプション
IP アドレスまたはCNAME

このオプションでは、IP アドレスまたは CNAME のいずれかを入力できます。

プロキシ サーバーのパブリック IP アドレス。IP アドレスは、203.0.113.0 などの IPv4 形式になります。また、静的 IP である必要があります。

静的 IP を提供できない場合や、クラウド プロキシまたは外部ロード バランサーを使用している場合は、クライアントが Tableau Server への接続に使用する CNAME (Canonical Name = 正規名) DNS 値を指定できます。この CNAME 値は、リバース プロキシ ソリューションで Tableau Server と通信するように設定する必要があります。

gateway.trusted
FQDN Tableau Server へのアクセスに使用される完全修飾ドメイン名 (tableau.example.com など)。Tableau Server は、このオプションのコンテキストの切り替えをサポートしていません。たとえば、以下の URL はサポートされていません。example.com/tableau gateway.public.host
非完全修飾ドメイン名 プロキシ サーバーのサブドメイン名。tableau.example.com の例では、サブドメイン名は tableau です。 gateway.trusted_hosts
別名 プロキシ サーバーの任意のパブリック代替名。たいていの場合、別名は CNAME 値を使って定義されます。例として、プロキシ サーバー bigbox.example.com および ftp.example.comwww.example.com の CNAME エントリがあります。 gateway.trusted_hosts
ポート クライアントからリバース プロキシ サーバーへのトラフィックのポート番号。

gateway.public.port

Tableau Server の分散インストールを使用している場合は、クラスタ内の初期ノードで次の tsm コマンドを実行します。

  1. 次のコマンドを入力して、クライアントがプロキシ サーバーを通じて Tableau Server にアクセスするために使用する FQDN を設定します。ここで、name は FQDN です。

    tsm configuration set -k gateway.public.host -v 'name'

    たとえば、ブラウザに https://tableau.example.com と入力して Tableau Server に到達した場合、次のコマンドを入力します。

    tsm configuration set -k gateway.public.host -v 'tableau.example.com'

  2. 次のコマンドを入力して、プロキシ サーバーのアドレスまたは CNAME を設定します。ここで、server_address は IPv4 アドレスまたは CNAME 値です。

    tsm configuration set -k gateway.trusted -v 'server_ip_address'

    組織が複数のプロキシ サーバーを使用している場合、複数の IPv4 アドレスをコンマで区切りながら入力します。IP 範囲はサポートされていません。Tableau Server のスタート アップと初期化を改善するために、gateway.trusted のエントリー数を最小限に抑えます。

  3. 次のコマンドを入力し、完全修飾ドメイン名や非完全修飾ドメイン名、別名など、プロキシ サーバーの代替名を指定します。名前が複数ある場合は、名前をコンマで区切ります。

    tsm configuration set -k gateway.trusted_hosts -v 'name1, name2, name3'

    例:

    tsm configuration set -k gateway.trusted_hosts -v 'proxy1.example.com, proxy1, ftp.example.com, www.example.com'

  4. プロキシ サーバーがインターネットとの通信に SSL を使用している場合、次のコマンドを実行します。これは、リバース プロキシ サーバーがポート 80 の代わりにポート 443 を使っていることを Tableau に伝えます。

    tsm configuration set -k gateway.public.port -v 443

    : プロキシ サーバーが Tableau Server との通信に SSL を使用している場合、Tableau Server で SSL を設定して有効化する必要があります。

  5. 次のコマンドを入力し、構成の変更をコミットします。

    tsm pending-changes apply

    保留中の変更にサーバーの再起動が必要な場合は、pending-changes apply コマンドの実行時に、再起動が行われることを知らせるメッセージが表示されます。このメッセージはサーバーが停止していても表示されますが、その場合には再起動は行われません。--ignore-prompt オプションを使用してメッセージが表示されないようにできますが、そのようにしても再起動に関する動作が変わることはありません。変更に再起動が必要ない場合は、メッセージなしで変更が適用されます。詳細については、tsm pending-changes applyを参照してください。

Tableau Server を使用するためのリバース プロキシ サーバーの構成

クライアントがリバース プロキシを通して Tableau Server にアクセスする場合、特定のメッセージ ヘッダーを保持 (または追加) する必要があります。具体的には、メッセージ チェーン内のすべてのプロキシ サーバーを gateway.trusted および gateway.trusted_hosts 設定で示す必要があります。

次の図はシングル ホップのメッセージ チェーン用のヘッダー例を表しています。ここでは、プロキシ サーバーが直接 Tableau Server と通信しています。

次の図はマルチ ホップのメッセージ チェーン用のヘッダー例を示しています。ここでは、メッセージが Tableau Server に接続する前に 2 つのプロキシ サーバーを横断しています。

次の表は、これらのヘッダーについて、また Tableau Server 設定の構成にどう関連しているかについて説明します。

ヘッダー 説明 関連した Tableau Server 設定
REMOTE_ADDRX-FORWARDED-FOR (XFF) Tableau Server は、要求元の IP アドレスを特定するために、これらのヘッダーを必要としています。X-FORWARDED-FOR ヘッダーでは、IP アドレスのチェーンを接続が起きた順に Tableau Server に示す必要があります。 gateway.trusted に設定した IP アドレスは REMOTE_ADDR で表される IP と一致しなくてはなりません。gateway.trusted に複数のアドレスを送信した場合、そのうち 1 つが REMOTE_ADDR で表される IP に一致しなくてはなりません。
HOSTX-FORWARDED HOST (XFH) これらのヘッダーは、Tableau Server がクライアントに返信する際、Tableau Server への絶対リンクを生成するために使用されます。X-FORWARDED-HOST ヘッダーでは、 ホスト名を接続が起きた順に Tableau Server に示す必要があります。 X-FORWARDED-HOST ヘッダーに表示されるホスト名は gateway.trusted_hosts で指定されるホスト名に含まれている必要があります。
X-FORWARDED-PROTO (XFP) クライアントからプロキシへのトラフィックで SSL が有効化され、プロキシから Tableau Server へのトラフィックでは有効化されていない場合、このヘッダーが必要です。

メッセージ ルートの各ホップで HTTP や HTTPS が保持されないシナリオでは、 X-FORWARDED-PROTO ヘッダーが重要です。たとえばリバース プロキシが外部要求に SSL を必要としているが、リバース プロキシと Tableau Server の間のトラフィックが SSL を使用するよう構成されていない場合は、X-FORWARDED-PROTO ヘッダーが必要です。プロキシ ソリューションによって、X-FORWARDED-PROTO ヘッダーが自動的に追加される場合と追加されない場合があります。最後に、プロキシ ソリューションによっては、ポート転送を構成し、要求をポート 443 からポート 80 へ変換しなければならない場合があります。

関連する KB 記事: 「"Unable to Sign In" and "Invalid username or password" Error With SAML After Upgrading」(新しいウィンドウでリンクが開く)

リバース プロキシのポート構成 (クライアントからのインバウンド接続と Tableau Server へのアウトバウンド接続) は、対応するパラメーター: gateway.public.port で指定する必要があります。これはプロキシへの接続に使用されるポート クライアントです。

プロキシ サーバーが Tableau Server との通信に SSL を使用している場合、Tableau Server で SSL を設定して有効化する必要があります。

リバース プロキシのセットアップ検証

リバース プロキシのセットアップを検証するには、Tableau Server の Web 作成または Tableau Desktop を使用して、ワークブックおよびデータソースをパブリッシュします。Web ブラウザーを使用してインターネットから Tableau Server に接続している場合、推奨ブラウザー(新しいウィンドウでリンクが開く)を使用していることを確認してください。既存のデータソースおよびパブリッシュしたデータソースを使用するワークブックをパブリッシュして表示します。以下のリンクを参照して、エンドユーザーによる Tableau Server の接続について理解してください。

タスク ドキュメント
Web 作成の概要。 Web での Tableau の使用(新しいウィンドウでリンクが開く)
Tableau Desktop または Web ブラウザから Tableau Server にログインする。 Tableau Server または Online へのサインイン(新しいウィンドウでリンクが開く)
ワークブックを Tableau Server にパブリッシュする。 ワークブックのパブリッシュ(新しいウィンドウでリンクが開く)
データ ソースをパブリッシュする。 データ ソースのパブリッシュ(新しいウィンドウでリンクが開く)
Tableau Server からワークブックを開く。 サーバーからワークブックを開く(新しいウィンドウでリンクが開く)
サーバーからログアウトする (Desktop で)。 Tableau Server または Online へのサインイン(新しいウィンドウでリンクが開く)
Web ブラウザーからワークブックをダウンロードする。 ワークブックのダウンロード(新しいウィンドウでリンクが開く)
tabcmd (非サーバー クライアントから) が正常に動作しているかを確認する。 tabcmd

関連トピック

ありがとうございます!