コンテンツセキュリティポリシーのヘッダー値の設定
CSP のヘッダー値は、プラットフォームサブシステムの「コンテンツセキュリティポリシー規則」タブにある「プラットフォームサブシステム」で設定されます。
「コンテンツセキュリティポリシー規則」タブには管理者のみがアクセスできます。管理者以外のユーザーがアクセスを試みると、管理者だけがアクセスできることを知らせる警告が表示されます。
このページの上部には、コンテンツセキュリティポリシーのディレクティブに関する簡単な説明と、ThingWorx Platform ヘルプセンターの関連トピックへのリンクがあります。
CSP が有効になっていない場合は警告がここに表示され、変更を加えた後、変更が有効になるには最大 1 分かかる可能性があることを管理者に警告します。
テーブルの表示
テーブルには、設定済みのすべてのディレクティブ、その値、およびそのディレクティブの説明が表示されます。
「ディレクティブ」列、「値」列、および「説明」列は並べ替えることができます。
テーブルの上にある「フィルタ」テキストボックスを使用して、ディレクティブ、値、説明をフィルタできます。
「操作」列
「操作」列は最初は空になっています。ディレクティブが追加および編集されると、「操作」列に変更の編集、復元、保存を支援するアイコンが表示されます。
• 「リセット」 ![](../../../../ThingWorx/images/Reset_Icon.png)
- 選択すると、ディレクティブがデフォルト値にリセットされます。デフォルトのディレクティブでのみ使用できます。
• 「削除」 ![](../../../../ThingWorx/images/trashicon.png)
- 選択すると、選択したディレクティブが削除されます。管理者によって追加されたディレクティブのみを削除できます。
「ディレクティブ」列
Web ページに表示できるリソースおよびブロックするリソースを制御する、設定済みの CSP ディレクティブ。ディレクティブは、デフォルトのエントリと、特定のアプリケーションをサポートするために追加されたその他のディレクティブから成ります。
「値」列
指定したディレクティブのポリシー。共通の値は 'self' です。
「説明」列
ディレクティブの簡単な説明。レベル 2 ディレクティブの説明だけが表示されます。レベル 3 の仕様は完成していないので、説明は表示されません。
ディレクティブの追加
テーブルの上の「フィルタ」テキストボックスの横に「追加」ボタンが表示されます。管理者はこれを使用して新しいディレクティブを追加できます。
「追加」ボタンを選択すると、「新規ディレクティブ」右側パネルが開きます。
ディレクティブを追加するには、次の手順を完了します。
1. 「追加」をクリックして「新規ディレクティブ」パネルを開きます。
2. 「新規ディレクティブ」パネルで、以下の情報を入力します。
◦ 「ディレクティブ」 - これは有効な CSP レベル 2 またはレベル 3 ディレクティブ名であり、両方の仕様に照らして検証されます。管理者は、有効なディレクティブ名を手動で入力するか、
![](../../../../ThingWorx/images/EntityPickerIcon.png)
をクリックしてすべての有効なレベル 2 のディレクティブを表示するダイアログボックスを開くことができます。レベル 3 のディレクティブは選択できませんが、手動で入力できます。このフィールドは必須です。重複するディレクティブ名は許可されません。ディレクティブ名は 100 文字に制限されています。
◦ 「許可」 - これは必須の値ですが、値を持たない特定のディレクティブをサポートするため、空白スペースを使用できます。CSP ポリシー全体におけるその存在によって、特定の動作が許可されます。「許可」の値は、CSP ライブラリに照らして検証されます。バリデータはキーワードの有無をチェックして無効な構文を除去します。セミコロン (;) は許可されず、ディレクティブの保存はブロックされます。コロン (:) などのその他の構文の問題によって警告が生成されても、ディレクティブは保存できます。レベル 3 では有効である可能性があるので、管理者は無効な値を Composer で保存できますが、バリデータはレベル 2 に準拠しています。「許可」の値が無効な場合、パネルにエラーメッセージが表示されます。
「許可」の文字列は 1200 文字に制限されており、できるだけ短くする必要があります。(すべてのディレクティブを組み合わせた) CSP ポリシー全体で 1200 文字に制限されています。
3. チェックマークをクリックしてディレクティブを追加します。
ディレクティブの編集
テーブルでディレクティブを選択すると、ディレクティブ編集ウィンドウが開き、管理者は既存のディレクティブを編集できます。
ディレクティブを編集するには、次の手順を完了します。
1. ディレクティブを選択してディレクティブ編集ウィンドウを開きます。
2. ディレクティブ編集ウィンドウで、以下の情報を入力します。
◦ 「ディレクティブ」 - 編集中のディレクティブの名前。読み取り専用。
◦ 「ThingWorx で必須」 - ThingWorx が適切に機能するために必要なディレクティブ。読み取り専用。
◦ 「許可」 - デフォルトのディレクティブに追加する値。「許可」の値は、キーワードの欠落、キーワードの重複、無効なキーワードなどの問題について、CSP ライブラリに照らして検証されます。バリデータはキーワードの有無をチェックして無効な構文を除去します。セミコロン (;) は許可されず、使用した場合はディレクティブを保存できなくなります。コロン (:) などのその他の構文の問題によって警告が生成されても、ディレクティブは保存できます。レベル 3 では有効である可能性があるので、管理者は無効な値を Composer で保存できますが、バリデータはレベル 2 に準拠しています。「許可」の値が無効な場合、展開時にエラーメッセージが表示されます。
◦ 「値」 - ディレクティブの最終的な値。これは「ThingWorx で必須」フィールドと「許可」フィールドの組み合わせです。値の文字列は 1200 文字に制限されており、できるだけ短くする必要があります。(すべてのディレクティブを組み合わせた) CSP ポリシー全体で 1200 文字に制限されています。
| 通常、デフォルト設定と「許可」の値が組み合わされるので、CSP ヘッダーに注入される値にはデフォルト値と「許可」の値の両方が含まれています。たとえば、frame-ancestors はデフォルトで 'self' になります。管理者が frame-ancestors ディレクティブのコンフィギュレーションを更新して https://*.somedomain.com を含める場合、最終的なヘッダーの値は 'self' https://*.somedomain.com になります。 object-src を 'none'に設定できるようにするために、「許可」の値がデフォルト値を増やす代わりに、「許可」の値がデフォルト値に置き換わります。たとえば、object-src のデフォルト設定は 'self' です。object-src を https://*.somedomain.com に更新する場合、CSP に送信されるディレクティブは https://*.somedomain.com のみです。'self' を含める場合、'https://*.somedomain.com' 'self' のように、'self' を含むように object-src を明示的に設定する必要があります。 object-src コンフィギュレーションに 'none' が含まれている場合、その他の設定はオーバーライドされます。したがって、'self' 'none' は実質的には 'none' です。引用符が必要な場合は、二重引用符 (") ではなく、一重引用符 (') を使用します |
| デフォルトでは、frame-ancestor はインストール時に 'self' に設定されます。web.xml と ThingWorx でクリックジャックフィルタが設定されている場合に、CSP への移行が発生すると、frame-ancestor は 'self' とクリックジャックフィルタで定義されている許可リストに設定されます。 |
CSP コンフィギュレーション設定の保存と適用
「保存」をクリックして、CSP コンフィギュレーションに加えたすべての変更を保存します。新しいポリシーが適用されるために ThingWorx で追加の手順を実行する必要はありません。ただし、CSP ヘッダーが更新されて使用されるまでに最大 1 分の遅延が発生します。
CSP の評価
管理者は、
CSP エバリュエータにアクセスすることで各自の CSP を確認できます。これを行うには、次の手順に従って、ブラウザの開発者ツールから CSP ポリシーをコピーし、CSP エバリュエータでテストします。
1. ブラウザの開発者ツールでネットワークを開きます。
2. ブラウザの Web ページを再表示します。
3. リクエストを選択し、コンテンツセキュリティポリシーのヘッダーを開きます。
4. 値をコピーして CSP エバリュエータに貼り付けます。
5. CSP エバリュエータによって設定が分析されます。
| Composer では、'script-src' に 'unsafe-eval' と 'unsafe-inline' が設定され、'style-src' に 'unsafe-inline' が設定されている必要があります。これらの設定を ThingWorx で変更することはできません。 |