Composer での ThingWorx モデルの定義 > セキュリティ > コンテンツセキュリティポリシー
コンテンツセキュリティポリシー
ThingWorx の顧客のセキュリティ体制を強化するため、ThingWorx 9.3.15、9.4.5、9.5.1 以降の ThingWorx Platform にコンテンツセキュリティポリシー (CSP) が追加されました。
CSP
CSP は、クロスサイトスクリプティング (XSS)、クリックジャッキング、その他のデータインジェクション攻撃から保護するために Web ブラウザで使用される主要なセキュリティツールです。CSP に従って、ThingWorx Platform から Web ブラウザに CSP ヘッダーが注入されて、ブラウザにロード可能な動的データとリソースおよびロード元のドメインが制御されます。許可されたドメイン外からのリソースリクエストをブラウザにロードすることはできません。
制御されるリソースの例を次に示します。
フォント、イメージ、JavaScript ライブラリのロード
外部ソースから ThingWorx マッシュアップ上の iFrame へのコンテンツのレンダリング
外部ページ上の iFrame への ThingWorx ページコンテンツのレンダリング (Windchill ページでの ThingWorx マッシュアップのレンダリングなど)
管理者は ThingWorx Composer を介して CSP ディレクティブを設定します。CSP ヘッダーはすべてのディレクティブの組み合わせであり、CSP ポリシーを構成します。CSP ヘッダーは 1200 文字に制限されています。
ThingWorx では、コンテンツセキュリティポリシーレベル 2 が実装されています。CSP の詳細については、以下を参照してください。
Composer
メインページバナー
この新しいセキュリティ機能について管理者に通知し、これらの機能が有効になっていないことを警告するため、ThingWorx Composer では非ブロック警告バナー「コンテンツセキュリティポリシー (CSP) が有効ではありません。詳細については、ヘルプセンターを参照してください。」が Composer の上部に表示されます。
このバナーは、CSP が有効になっていない場合にのみ表示され、管理者にのみ表示されます。管理者は警告を各自で閉じて、今後のログイン時に表示されないようにすることができます。それ以降も他の管理者には各自で閉じるまでバナーが表示されます。バナーには、コンテンツセキュリティポリシーのトピックへのヘルプセンターリンクが含まれています。
CSP の設定
管理者は、プラットフォームサブシステムの「コンテンツセキュリティポリシー規則」サブページから CSP を設定します。このページで、管理者はポリシーを定義するディレクティブを追加および修正できます。詳細については、コンテンツセキュリティポリシーのヘッダー値の設定を参照してください。
CSP の有効化
CSP を有効にするには、platform-settings.json で新しいパラメータを次のように設定します: “EnableContentSecurityPolicyFilter”: true
"EnableContentSecurityPolicyFilter"true に設定されている場合、CSP 保護が有効になります。"EnableContentSecurityPolicyFilter"false に設定されているか、platform-settings.json に含まれていない場合、CSP は無効になります。
インストールとアップグレードの手順については、ヘルプセンターのインストールおよびアップグレードのセクションを参照してください。
CSP フィルタを使用した ThingWorx Platform の新規インストール
手動インストール
ThingWorx Foundation インストーラ
CSP をサポートするバージョンへの ThingWorx のアップグレード
メンテナンスリリースのアップグレードについては、メンテナンスリリースのアップグレードを参照してください。
Windows での手動アップグレードについては、以下を参照してください。
Linux での手動アップグレードについては、以下を参照してください。
ThingWorx Foundation インストーラによるアップグレードについては、インストーラアップグレードを参照してください。
既存の環境での CSP の有効化または無効化
既存の環境で CSP を有効または無効にするには、次の手順を実行します。
1. platform-settings.json の PlatformSettingsConfig の下にある BasicSettings セクションで EnableContentSecurityPolicyFilter フラグを true に設定します。
2. Tomcat サーバーを再起動します。
* 
ThingWorx の起動時に、以下のすべての条件が満たされている場合、ClickjackFilter コンフィギュレーションが web.xml から CSP に自動的に移行されます。
CSP フィルタがオンになっている。
web.xml でクリックジャックフィルタが設定されている。
ThingWorx Composer で ThingWorx 管理者によって CSP フィルタがまだ設定されていない。
CSP への ClickjackFilter 設定の移行
ThingWorx の起動時に、以下の条件が満たされている場合、ClickjackFilter コンフィギュレーションが CSP に自動的に移行されます。
コンテンツセキュリティポリシーフィルタがオンになっている。つまり、EnableContentSecurityPolicyFiltertrue に設定されている。
web.xml を使用してクリックジャックフィルタが設定されている。
UI から CSP フィルタがまだ設定されていない。
ClickjackFilter は SAMEORIGINDENYALLOWLIST の 3 つのモードのいずれかで設定できます。
ClickjackFilter が SAMEORIGIN に設定されている場合、これは frame-ancestors の CSP デフォルトコンフィギュレーションなので、何も移行されません。
<filter>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ClickjackFilter が DENY に設定されている場合、CSP ヘッダー frame-ancestors'none' に設定されます。
<filter>
<filter-name>ClickjackFilterDeny</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>DENY</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ClickjackFilterDeny</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ClickjackFilter が ALLOWLIST に設定されている場合、CSP ヘッダー frame-ancestors および frame-src は設定済みドメインを許可するように設定されます。
<filter>
<filter-name>ClickjackFilterAllowList</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>ALLOWLIST</param-value>
</init-param>
<init-param>
<param-name>domains</param-name>
<param-value>http://example.com</param-value>
</init-param>
</filter>
<filter>
<filter-mapping>
<filter-name>ClickjackFilterAllowList</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
これは役に立ちましたか?