コンテンツにスキップ

調査機密データの伏字化

調査データを収集する場合、プロセスの引数、またはテンプレートを使用する際の警告メッセージのフィールドに、機密情報が含まれている可能性があります。たとえば、mysql -p=password を使用した場合のパスワード、または docker run -e AWS_SECRET_ACCESS_KEY=secretkey で開始された Docker コンテナなどです。これを防ぐために、Sophos Linux Sensor (SLS) には、除外する情報を伏字化するための正規表現を使用する方法を提供しています。

このガイドでは、基本的な使用方法について説明し、使用例をいくつか紹介します。対応している正規表現の構文の詳細は Go 正規表現パッケージを参照してください。

調査の伏字化は、プログラムの引数や警告メッセージなど、機密情報を含む可能性のある、すべてのアクティブなテーブルのフィールドすべてに対して行われます。たとえば、先ほどの MySQL パスワードと AWS シークレットキーの使用例を考慮します。--password=apassword と AWS_SECRET_ACCESS_KEY=asecretkey が、それぞれ --password=* と AWS_SECRET_ACCESS_KEY=* となるように警告を変更します。

次に例を示します。

cloud_meta: auto
investigations:
  reporting_interval: 10s
  sinks:
    -   name: <investigations-metadata-bucket-name>
      backend: aws
      automated: true
      type: parquet
  flight_recorder:
    redactions:
      -   "--password=(.*)"
      -   "AWS_SECRET_ACCESS_KEY=(.*)"
    enabled: true
    tables:
      -   name: "shell_commands"
        enabled: true
      -   name: "tty_data"
        enabled: true
      -   name: "sensors"
        enabled: true
      -   name: "sensor_metadata"
        enabled: true
      -   name: "connections"
        enabled: true
      -   name: "process_events"
        enabled: true
      -   name: "container_events"
        enabled: true

SLS は、できるだけ多くのデータを保持するために正規表現のキャプチャグループを使用しますが、たとえば AWS_SECRET_ACCESS_KEY=asecretkey 全体を伏字化する場合は、代わりに次のように入力します。

cloud_meta: auto
investigations:
  reporting_interval: 10s
  sinks:
    -   name: <investigations-metadata-bucket-name>
      backend: aws
      automated: true
      type: parquet
  flight_recorder:
    redactions:
      -   "--password=(.*)"
      -   "AWS_SECRET_ACCESS_KEY=.*"
    enabled: true
    tables:
      -   name: "shell_commands"
        enabled: true
      -   name: "tty_data"
        enabled: true
      -   name: "sensors"
        enabled: true
      -   name: "sensor_metadata"
        enabled: true
      -   name: "connections"
        enabled: true
      -   name: "process_events"
        enabled: true
      -   name: "container_events"
        enabled: true

password 引数は、同じデータを伏字化しますが、AWS_SECRET_ACCESS_KEY=* の代わりに、文字列全体が * で置き換えられます。

エラー

正規表現のいずれか 1つが有効でない場合、SLS はそれを致命的なエラーとして扱い、起動しません。コンパイルに失敗した正規表現と、対応するエラーメッセージが表示されます。

エラーメッセージの例を以下に示します。

Sophos Linux Runtime Detections Agent version 5.0.0.28 (Build: 1917)
...
2020-07-29T16:36:18.322Z INFO component="flight-recorder" initializing...
panic: flrec: invalid redaction regex `(?:*--password=(.*)|AWS_SECRET_ACCESS_KEY=(.*))` -- error parsing regexp: missing argument to repetition operator: '*'