コンテンツ セキュリティ ポリシー(CSP)の有効化

このページでは、アプリケーションとブラウザ RUM の互換性を確保するために、コンテンツ セキュリティ ポリシー(CSP)を有効にする方法について説明します。

CSP に必要なディレクティブ

インストゥルメント化されたアプリケーションで CSP を有効にするには、Content-Security-Policy ヘッダーに次の必須のディレクティブを追加します。

場合によっては、次のディレクティブも使用する必要があります。

script-src

script-src ディレクティブは、adrum-ext.js の場所を指定します。デフォルトでは、adrum-ext.jscdn.appdynamics.com にあるシスコのコンテンツ配信ネットワーク(CDN)からロードされます。次の例は、script-src ディレクティブをどのように使用するかを示しています。

script-src cdn.appdynamics.com;

最初の 1 バイトの受信時間を正確に測定するには、ページの上部に次の行を追加します。

window["adrum-start-time"] = new Date().getTime();

この行を読み取るには、次に示すように script-src ディレクティブを 'unsafe-inline' に設定する必要もあります。

script-src 'unsafe-inline'; 
注: CSP にナンスを追加する必要がある場合は、unsafe-inline をスキップします。「adrum-ext.js にナンスを追加する」を参照してください。

connect-src

connect-src ディレクティブは、ビーコンが送信される場所を指定します。SaaS ベースの EUM を使用している場合は、次のようなものが使用される可能性があります。
connect-src col.eum-appdynamics.com;

オンプレミス EUM を使用している場合は、connect-src は EUM サーバーを指します。

child-src

クロスドメインセッションの場合は、adrum-xd.html は iframe にロードします。デフォルトでは、これは CDN からロードされるため、次に示すように child-src で CDN を指定する必要があります。

child-src cdn.appdynamics.com;

frame-ancestors

adrum-xd.html がローカルでホストされている場合、次のように frame-ancestors ディレクティブを使用します。

frame-ancestors /path/to/adrum-xd.html;

img-src

古いブラウザでは、ビーコンをイメージビーコンとして送信します。古いブラウザでは CSP がサポートされていませんが、常にイメージビーコンを送信するように JavaScript エージェントを構成できます。次の例に示すように、img-src ディレクティブを使用しビーコンの場所を指定して、この構成を行います。

img-src col.eum-appdynamics.com;

Content-Security-Policy ヘッダーの例

次の Content-Security-Policy ヘッダーは、シスコの CDN から adrum ファイルをロードして、SaaS ベースの EUM にビーコンを送信します。

Content-Security-Policy: connect-src 'self' col.eum-appdynamics.com; script-src 'unsafe-inline' cdn.appdynamics.com; img-src cdn.appdynamics.com; child-src cdn.appdynamics.com