.NET エージェントを使用した機密データのフィルタ処理

デフォルトでは、.NET エージェントは、コントローラに組織が特権情報として分類する可能性のあるトランザクションデータを送信します。このデータは診断およびトラブルシューティングに役立ちますが、セキュリティを考慮すると、コントローラのビューから特定の情報をフィルタ処理する必要があります。機密データフィルタを使用すると、コントローラ内の環境変数や URL、またはスナップショットの詳細情報を除外することができます。

機密データフィルタは、.NET Windows および Linux エージェント(21.4 以降)で使用できます。

機密データフィルタを追加する

機密データフィルタをインストゥルメント化するには、.NET エージェント コンフィギュレーション ファイルを編集します。「.NETエージェントの管理」を参照してください。

  1. バージョン管理されたエージェント コンフィギュレーション ファイルを編集します。
    • 完全な .NET エージェント:config.xml
    • スタンドアロンエージェント:config.json
  2. 次のいずれかの属性を使用して、sensitive-data-filter エレメントを機密データ フィルタ エレメントの子として追加します。
    <!-- Filter environment variable values sent to controller -->
    <sensitive-data-filters>
    <sensitive-data-filter applies-to="environment-variables,system-properties,http-headers,http-cookies" match-type="EQUALS|CONTAINS|STARTSWITH|ENDSWITH" match-pattern=""/>
    </sensitive-data-filters>
    機密データフィルタの属性:
    • 環境変数システムプロパティ、またはデータコレクター(http-headershttp-cookies)をフィルタ処理するには、applys-to 属性でカンマ区切りのリストを指定します。

    • match-type 属性を次のように設定します。

      EQUALS

      CONTAINS

      STARTSWITH

      ENDSWITH

    • match-pattern 属性と照合する文字列を指定します。文字列の一致では、大文字と小文字が区別されません。パターンは、値ではなく、環境変数とシステムプロパティ名と照合します。

  3. .NET エージェントとアプリケーションを再起動します。
次の例では、.NET エージェントは文字列「DB_」で始まる環境変数をチェックします。コントローラには、一致する環境変数とシステムプロパティの値がアスタリスクとして表示されます。たとえば、環境変数 DB_USER は難読化され、コントローラでアスタリスクに置き換えられます。

config.xml ファイルの例:

</sensitive-data-filters>
<sensitive-data-filter applies-to="environment-variables,system-properties" match-type="STARTSWITH" match-pattern="DB_"/>
</sensitive-data-filters>

config.json ファイルの例:

sensitive-data-filters: [
{
"applies-to": "environment-variables, system-properties",
"match-type": "STARTSWITH",
"match-pattern": "DB_"
}
]

機密URLフィルタを追加する

機密 URL フィルタを使用して、コントローラの URL で機密情報を難読化するようにエージェントを構成できます。

機密 URL フィルタをインストゥルメント化するには、.NET エージェント コンフィギュレーション ファイルを編集します。「.NETエージェントの管理」を参照してください。

  1. バージョン管理されたエージェント コンフィギュレーション ファイルを編集します。
    • 完全な .NET エージェント:config.xml
    • スタンドアロンエージェント:config.json
  2. Sensitive-url-filtersSensitive URL フィルタ属性に属性を追加します。
    <sensitive-url-filters>
    <sensitive-url-filter delimiter=""
    segment=""
    match-filter=“EQUALS|INLIST|STARTSWITH|ENDSWITH|CONTAINS|REGEX|NOT_EMPTY"
    match-pattern="pattern"
    param-pattern=""/>
    </sensitive-url-filters>
    • delimiter:URL セグメントのエンドポイントとして使用する文字を指定します。エージェントは各区切り文字インスタンスでURLを接続してセグメントを作成します。HTTP の場合は、スラッシュ文字 "/" を使用してください。スラッシュの場合、エージェントはプロトコル直後のスラッシュでは分割しません。たとえば、"https://myapp.example.com/" は単一のセグメントを構成します。デフォルトでは、区切り文字は「/」です。
    • segment:エージェントがフィルタ処理するセグメントを指定するには、カンマ区切りのリストを指定します。セグメント番号は 1 から始まります。
    • match-patternmatch-filter でフィルタ処理する文字列を指定します。

    • param-pattern:フィルタ処理するクエリパラメータに一致する正規表現を指定します。

たとえば、次の構成は URL を「/」文字で分割し、URL の 2 番目のセグメントと 3 番目のセグメントの param-pattern をマスクします。この例では、セグメンテーションと難読化は "myapp" を含む URL にのみ適用されます。
<!-- Filter URL/URI segments and query parameters -->
<sensitive-url-filters>
<sensitive-url-filter delimiter="/"
segment="2"
match-filter="CONTAINS"
match-pattern="myapp"
param-pattern="[a-z]+"/>
</sensitive-url-filters>
クエリパラメータに値を使用しない場合、コントローラは URL 内のクエリパラメータをマスクしません。

https://myapp.example.com/sensitive/data?first_name=abc&last_name=xyz への exit コールは、次の 3 つのセグメントに分割されます。

コントローラは、URL のマスクされた値を表示し、スナップショットの詳細に param-pattern が https://myapp.example.com/*****/data?first_name=***&last_name=*** のように表示されます

機密メッセージフィルタを追加する

sensitive-message-filters エレメントを使用すると、例外メッセージから収集されたテキストメッセージ内に含まれる機密情報を難読化できます。

  1. バージョン管理されたエージェント コンフィギュレーション ファイルを編集します。
  2. sensitive-message-filters 要素に属性を追加します。
    <sensitive-message-filters>
    <sensitive-message-filter message-type="all"
    match-type="EQUALS|CONTAINS|STARTSWITH|ENDSWITH|REGEX"
    match-pattern="CASESENSITIVE_PATTERN"
    redaction-regex="SENSITIVE_INFO_REGEX_GROUP"/>
    </sensitive-message-filters>

    機密メッセージフィルタの属性:

      • message-typeall を指定

      • match-type:編集のためにメッセージをオプトインするのに使用されるべきマッチタイプを指定します。

      • match-pattern:マッチしたときにメッセージを編集用にオプトインするパターンを指定します。

      • redaction-regex:メッセージから編集されるべきデータを識別する正規表現を指定します。
次の例では、match-pattern"Sensitive" が含まれているテストを除外しています。
<sensitive-message-filters>
<sensitive-message-filter message-type="all"
match-type="CONTAINS"
match-pattern="Sensitive"
redaction-regex="[0-9]+"/>
</sensitive-message-filters>