コンテンツ セキュリティ ポリシー

Tableau Server では、コンテンツ セキュリティ ポリシー (CSP) 標準をサポートしています。CSP は、クロスサイト スクリプティングやその他の悪意のある Web ベースの攻撃に対する追加のセキュリティ レイヤーになることを目的としています。CSP は HTTP 応答ヘッダーとして実装され、スクリプトやイメージなどの外部リソースを安全に読み込むことができる場所を指定できます。

CSP の詳細については、 Mozilla の Web サイト(新しいウィンドウでリンクが開く) を参照してください。

CSP の構成と有効化

CSP は、tsm configuration set のオプション コマンドを使用して構成され、有効化されます。分散展開で Tableau Server を実行している場合は、クラスタ内の最初のノードでこれらのコマンドを実行します。tsm pending-changes apply を実行すると、クラスタに構成が適用されます。

ステップ 1: 既定のディレクティブの設定

Tableau Server には以下の表に記載された一連の既定のディレクティブが含まれています。

ディレクティブを設定するには、次の tsm 構文を使用します。

tsm configuration set -k content_security_policy.directive.<directive_name> -v "<value>"

たとえば、connect_src ディレクティブを設定するには、次のコマンドを実行します。

tsm configuration set -k content_security_policy.directive.connect_src -v "* unsafe-inline"

オプション既定値

説明

content_security_policy.directive.default_src‘none’

その他のフェッチ ディレクティブのフォールバックとして機能します。

default_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.connect_src*

スクリプト インターフェイスを使用して読み込むことのできる URL を制限します。

connect_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.script_src*

JavaScript の有効なソースを指定します。

script_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.style_src* ‘unsafe-inline’

スタイルシートの有効なソースを指定します。

style_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.img_src* data:

イメージおよびファビコンの有効なソースを指定します。

img_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.font_src* data:

@font-face を使用して読み込まれるフォントの有効なソースを指定します。

font_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.frame_src* data:

<frame> や <iframe> などの要素を使用して読み込む、ネストされたブラウジング コンテキストの有効なソースを指定します。

frame_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.object_srcdata:

<object>、<embed>、および <applet> 要素の有効なソースを指定します。

object_src の有効な値(新しいウィンドウでリンクが開く)

content_security_policy.directive.report_uri/vizql/csp-report

ユーザー エージェントに、CSP に対する違反行為の試行を報告するよう指示します。これらの違反レポートは、指定された URI に対する HTTP POST 要求を介して送信された JSON ドキュメントで構成されます。

report_uri の有効な値(新しいウィンドウでリンクが開く)

ステップ 2: ディレクティブの追加 (オプション)

Tableau Server に含まれる既定のディレクティブは、CSP でサポートされているディレクティブのサブセットです。

サポートされる CSP ディレクティブの完全なリストについては、https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy(新しいウィンドウでリンクが開く) にアクセスしてください。

既存の既定セットにディレクティブを追加するには、content_security_policy.directive 名前空間に新しいディレクティブを追加します。新しいディレクティブを追加するときは、--force-keys パラメーターを含める必要があります。構文は、次のとおりです。

tsm configuration set -k content_security_policy.directive.<new_directive_name> -v "<value>" --force-keys

たとえば、worker-src(新しいウィンドウでリンクが開く) ディレクティブを追加するには、次のコマンドを実行します。

tsm configuration set -k content_security_policy.directive.worker-src -v "none" --force-keys

ステップ 3: レポート専用ディレクティブの指定 (オプション)

CSP を構成していくつかのディレクティブを報告したり他のディレクティブを実行したりできます。content_security_policy.enforce_enabled を true に設定すると、すべてのディレクティブが実行されます (content_security_policy.report_only_enable が同様に true に設定されている場合でも適用されます)。

ディレクティブを「レポート専用」として指定し、実行しないように指定するには、ディレクティブを report_only_directive 名前空間に追加します。新しいディレクティブを追加するときは、--force-keys パラメーターを含める必要があります。構文は、次のとおりです。

tsm configuration set -k content_security_policy.report_only_directive.<directive_name> -v "<value>" --force-keys

たとえば、script_src ディレクティブでレポート専用にするには、次のコマンドを実行します。

tsm configuration set -k content_security_policy.report_only_directive.script_src -v " http://*.example.com" --force-keys

ステップ 4: Tableau Server での CSP の有効化

ディレクティブを構成したら、Tableau Server で CSP を有効にします。

次のオプションを使用して、設定したディレクティブの実施やレポート専用モードを有効にします。

オプション既定値

説明

content_security_policy.enforce_enabledfalse

CSP ヘッダーをすべての要求に追加して、すべての違反がブラウザーで実施されるようにします。

content_security_policy.report_only_enabledtrueCSP ヘッダーをすべての要求に追加して、すべての違反が vizql-client ログに記録されるようにしますが、ブラウザーで実施されることはありません。

指定した CSP ディレクティブの実施を有効にするには、次のコマンドを実行します。

tsm configuration set -k content_security_policy.enforce_enabled -v true

ステップ 5: tsm pending-changes apply の実行

CSP の構成が完了したら、tsm pending-changes apply を実行します。

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

CSP レポートの表示

指定した viz に CSP 違反を表示するには、開発者ツールを含むブラウザーに viz を読み込みます。この例では Chrome ブラウザーを使用します。

  1. CSP を構成した Tableau Server 展開でホストされている、違反のあるテスト viz を読み込みます。

  2. CTRL+Shift+I を押して Chrome で開発者ツールを開きます。

  3. [ネットワーク] タブをクリックします。

  4. [フィルター] フィールドで、csp-report と入力してから [すべて検索] をクリックします。

    • 違反がない場合は、検索で CSP レポートが返されません。

    • 違反がある場合は、結果ペインの [ヘッダー] タブをクリックして下部までスクロールし、[リクエスト ペイロード] を表示します。

フィードバックをお送りいただき、ありがとうございます。フィードバックは正常に送信されました。ありがとうございます!