This product is not supported for your selected Datadog site. ().

クライアント IP ヘッダーの構成

AAP は、X-Forwarded-For などのよく知られた複数のヘッダーから自動的に http.client_ip を解決しようとします。このフィールドに独自のヘッダーを使用している場合や、解決アルゴリズムをバイパスしたい場合は、DD_TRACE_CLIENT_IP_HEADER 環境変数を設定してください。この変数が設定されている場合、ライブラリは指定されたヘッダーだけをクライアント IP の取得先として確認します。

認証された悪質なユーザーの追跡

多くの重大な攻撃は、最も機密性の高いエンドポイントにアクセスできる認証されたユーザーによって実行されます。疑わしいセキュリティアクティビティを生成している悪質なユーザーを特定するには、標準化されたユーザータグを使用してサービスをインスツルメンテーションすることにより、ユーザー情報をトレースに追加します。ルートスパンにカスタムタグを追加したり、インスツルメンテーション関数を使用したりすることができます。

Datadog のトレーシングライブラリは、対応する認証フレームワークが使用されていてAAPが有効になっている場合に、ユーザーログインおよびサインアップイベントを検出しようとします。

ユーザーアクティビティを手動で追跡する方法については、ユーザーアクティビティの追跡をお読みください。または、自動追跡のオプトアウト方法を参照してください。

特定のパラメーターを検出のトリガーから除外する

AAP シグナルやセキュリティトレースが誤検知となる場合があります。たとえば、AAP が同じセキュリティトレースを繰り返し検出してシグナルを生成していても、レビューの結果脅威ではないと判断されたケースです。

パスリストにエントリーを追加して、ルールからイベントを無視することで、ノイズの多いシグナルパターンを排除し、正当にセキュリティトレースに焦点を当てることができます。

パスリストエントリーを追加するには、次のいずれかを実行します。

  • AAP Signals でシグナルをクリックし、提案されたアクションとして表示される Add to passlist の横にある Add Entry リンクをクリックします。この方法では、対象サービスに対して自動的にエントリが追加されます。
  • パスリスト構成に移動し、独自の基準に基づいて新しいパスリストエントリーを手動で構成します。

: パスリストエントリーに一致するリクエスト (トレース) は請求されません。

データセキュリティへの配慮

Datadog で収集するデータには、除外、難読化、フィルタリング、修正したり、収集しないことを選択したりするべき機密情報が含まれることがあります。さらに、データは脅威検出が不正確になったり、サービスのセキュリティが Datadog で正確にされないという問題の原因となるシンセティックトラフィックを含む場合もあります。

デフォルトでは、AAP はリクエストが疑わしいと判断された理由を把握できるように、セキュリティトレースから情報を収集します。データを送信する前に、AAP は機密情報を示すパターンやキーワードをスキャンします。機密情報と判断される場合、そのデータは <redacted> というフラグに置き換えられます。これにより、リクエストが疑わしいものであっても、データのセキュリティ上の懸念からリクエストデータは収集されなかったことが確認できます。認証されたリクエストのユーザー ID など、ユーザー関連データはマスキングの対象外です。

ユーザーデータを保護するため、AAP では機密データのスキャニングがデフォルトで有効化されています。以下の環境変数を使用して設定をカスタマイズできます。スキャニングは RE2 構文に基づいています。カスタマイズするには、これらの環境変数を有効な RE2 パターンに設定してください。

  • DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP - 値が一般的に機密データを含むキーをスキャンするためのパターン。見つかった場合、そのキーと関連する値およびすべての子ノードが編集されます。
  • DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP - 機密データを示す可能性のある値をスキャンするためのパターン。見つかった場合、その値とすべての子ノードが編集されます。
Ruby のみ、ddtrace バージョン 1.1.0 から

また、コードでスキャンパターンを構成することも可能です。

Datadog.configure do |c|
  # ...

  # カスタム RE2 正規表現を設定する
  c.appsec.obfuscator_key_regex = '...'
  c.appsec.obfuscator_value_regex = '...'
end

以下は、デフォルトで機密と判定されるデータの例です。

  • pwdpasswordipasswordpass_phrase
  • secret
  • keyapi_keyprivate_keypublic_key
  • token
  • consumer_idconsumer_keyconsumer_secret
  • signsignedsignature
  • bearer
  • authorization
  • BEGIN PRIVATE KEY
  • ssh-rsa

Datadog Agent やライブラリの他のメカニズムで、機密データを削除するために使用できるものについては、APM データセキュリティを参照してください。

自動ユーザーアクティビティイベントトラッキングモードで、自動ユーザーアクティビティトラッキングモードとその構成方法に関する情報をご覧ください。Datadog ライブラリが、モードの略称 (ident|anon|disabled) を使用して DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE 環境変数を使用して自動インスツルメンテーションを構成できる方法についてもご覧ください。

カスタムブロッキングページまたはペイロードの構成

The blocked requests feature JSON or HTML content. If the Accept HTTP header is pointing to HTML, like text/html, the HTML content is used. Otherwise, the JSON one is used.

Both sets of content are embedded in the Datadog Tracer library package and loaded locally. See examples of the templates for HTML and JSON in the Datadog Java tracer source code on GitHub.

The HTML and JSON content can both be changed using the DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML and DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON environment variables within your application deployment file.

Example:

DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML=<path_to_file.html>

Alternatively, you can use the configuration entry.

For Java, add the following:

dd.appsec.http.blocked.template.html = '<path_to_file.html>'
dd.appsec.http.blocked.template.json = '<path_to_file.json>'

For Ruby, add the following:

# config/initializers/datadog.rb

Datadog.configure do |c|
  # To configure the text/html blocking page
  c.appsec.block.templates.html = '<path_to_file.html>'
  # To configure the application/json blocking page
  c.appsec.block.templates.json = '<path_to_file.json>'
end

For PHP, add the following:

; 98-ddtrace.ini

; Customises the HTML output provided on a blocked request
datadog.appsec.http_blocked_template_html = <path_to_file.html>

; Customises the JSON output provided on a blocked request
datadog.appsec.http_blocked_template_json = <path_to_file.json>

For Node.js, add the following:

require('dd-trace').init({
  appsec: {
    blockedTemplateHtml: '<path_to_file.html>',
    blockedTemplateJson: '<path_to_file.json>'
  }
})
ブロックされた IP からのリクエストを AAP が遮断した場合に表示されるページ

その他の参考資料