デフォルトでは、AppDynamics PHP エージェントは、コントローラに組織が特権情報として分類する可能性のあるトランザクションデータを送信します。このデータは診断およびトラブルシューティングに役立ちますが、セキュリティを考慮すると、コントローラで表示されないように特定の機密情報をフィルタ処理する必要があります。セキュリティの考慮事項については、次を使用できます。

  • スナップショット詳細の URL から機密情報を除外するための URL フィルタ。

  • 機密性の高い HTTP Cookie を除外するためのデータフィルタ。

URL フィルタの追加

  1. ご使用の環境に応じて、PHP 構成ファイル php.ini または appdynamics_agent.ini を編集します。

  2. PHP 構成ファイルで、次の設定を構成します。次の構成の ini ファイルの値に英数字以外の文字が含まれている場合は、PHP のガイドラインに従って二重引用符(")で囲む必要があります。

    • 構成デリミタ:編集で機密データフィルタの構成デリミタとして使用する文字を指定します。構成デリミタには、編集構成文字列に含まれない文字を選択する必要があります。この値は必須です。

次に例を示します。

agent.sensitive_data_filter.configDelimiter = "|"
CODE
    • URL デリミタ:URL セグメントのエンドポイントとして使用する文字を指定します。エージェントは各デリミタインスタンスで URL を分割してセグメントを作成します。HTTP の場合は、スラッシュ文字 "/" を使用してください。スラッシュの場合、エージェントはプロトコル直後のスラッシュでは分割しません。たとえば、"https://myapp.example.com/" は 1 つのセグメントを構成します。デフォルトではデリミタは "/" ですが、正常な編集にはこのデリミタが必須です。

次に例を示します。

agent.sensitive_data_filter.delimiter = "/"
CODE

"#" および ";" は ini ファイルでコメントと見なされるため、デリミタまたは configDelimiter として使用することはできません。

    • セグメント:エージェントがフィルタ処理するセグメントを指定するには、カンマ区切りのリストを指定します。セグメントの番号付けは 1 から始まるため、0 または負の値を指定すると、エージェントログにエラーメッセージが表示され、セグメントの編集が失敗します。セグメント番号は昇順である必要があります。この値は必須です。

次に例を示します。

agent.sensitive_data_filter.segment = "2,3"
CODE
    • Matchfilter:- NOT_EMPTY|EQUALS|STARTSWITH|ENDSWITH|CONTAINS|REGEX から、URL の照合に使用するフィルタのタイプを指定します。REGEX を使用する場合は、PERL 標準に従う必要がありますこの値は必須です。

これを正しく使用するには、照合フィルタリングでクエリパラメータを考慮してはなりません。コール "https://myapp.example.com/sensitive/data?first_name=abc&last_name=xyz" の例では、照合フィルタを STARTSWITH として指定するには、ホスト名(この例では "https://myapp.example.com")で始まる指定された文字列と照合します。URL のホスト名にポートが含まれている場合は、構成文字列に含める必要があります。同様に、ENDSWITH については、クエリパラメータはスナップショットで報告されないため、クエリパラメータから除外される最後のセグメント(この例では "data")に対応します。

次に例を示します。

agent.sensitive_data_filter.matchFilter = "CONTAINS"
CODE
    • MatchPattern:照合フィルタでフィルタ処理する文字列を指定します。この値は必須です。

次に例を示します。

agent.sensitive_data_filter.matchPattern = "myapp"
CODE
    • ParamPattern:フィルタするクエリパラメータに一致する正規表現を指定します。正規表現の場合は、PERL 標準に従う必要があります。この値はオプションです。

次に例を示します。

agent.sensitive_data_filter.paramMatcher = "[a-z]+_name"
CODE

たとえば、次の構成は URL を "/" 文字で分割し、URL の 2 番目のセグメントと、3 番目のセグメントの ParamPattern をマスクします。この場合、セグメンテーションと難読化は "myapp" を含む URL にのみ適用されます。

agent.sensitive_data_filter.configDelimiter = "|" 
agent.sensitive_data_filter.delimiter = "/" 
agent.sensitive_data_filter.segment = "2" 
agent.sensitive_data_filter.matchFilter = "CONTAINS"
agent.sensitive_data_filter.matchPattern = "myapp" 
agent.sensitive_data_filter.paramMatcher = "[a-z]+_name"
CODE

"https://myapp.example.com/sensitive/data?first_name=abc&last_name=xyz" への exit コールは、"https://myapp.example.com"、"sensitive"、および "data?first_name=abc&last_name=xyz" という 3 つのセグメントに分割されます。コントローラには、スナップショットの詳細に URL と param-pattern のマスクされた値が "https://myapp.example.com/*****/data?first_name=***&last_name=***" のように表示されます。

クエリパラメータに値を使用しない場合、コントローラは URL 内のクエリパラメータをマスクしません。

複数の URL の編集

PHP 構成の制限により、複数の URL を個別に編集する場合は、次の説明に従って引数を構成デリミタで区切って記述する必要があります。

agent.sensitive_data_filter.configDelimiter = "|" 
agent.sensitive_data_filter.delimiter = "/|/" 
agent.sensitive_data_filter.segment = "1,2,3|1,4" 
agent.sensitive_data_filter.matchFilter = "CONTAINS|ENDSWITH" 
agent.sensitive_data_filter.matchPattern = "One|.php" 
agent.sensitive_data_filter.paramMatcher = "[a-z]+_name|[a-z]+_name"
CODE

"|" で区切られた各値が、追加される URL フィルタに対応します。"n" 個の個別の URL フィルタには、それに応じて "n" 個の異なる "|" 構成を用意する必要があります。これらのフィルタは URL に対して個別に動作し、各フィルタに指定された構成に基づいて編集します。最初に一致した構成が編集に使用されます。

正常に編集するには、各構成に同じ数の構成セグメントが含まれていることを確認します。

Cookie のデータフィルタ

Cookie フィルタを使用して、トランザクション スナップショット詳細の URL から機密情報を難読化するようにエージェントを構成できます。

  1. ご使用の環境に応じて、PHP 構成ファイル php.ini または appdynamics_agent.ini を編集します。

  2. ディレクティブとして機密 Cookie フィルタ要素を追加します。

    • AppDynamicsCookieMatchPattern:編集する必要がある Cookie を識別する正規表現を指定します。

次に例を示します。

agent.sensitive_data_filter.cookieMatcher = "cookieKey"    
CODE

    

    • 複数の Cookie 値を同時にマスキングするには、次のように、すべての Cookie の名前を 1 つの文字列として構成デリミタで区切って指定します。

agent.sensitive_data_filter.cookieMatcher = "PHPSESSID|X-CSRF-TOKEN|cookiekey" 
CODE


構成デリミタが Cookie 名自体に存在する場合は、Cookie マッチ機能文字列内で使用されないように別の名前に変更します。