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

App and API Protection は、Datadog Government サイト US1-FED でプレビュー版として提供されています。

概要

App and API Protection (AAP) を有効にすると、Datadog SDK はすべての Web サービスおよび API リクエストを監視し、不審なセキュリティアクティビティを検出します。

_アプリ内 WAF ルール_は、受信リクエストに対する条件を指定し、ライブラリが何を不審と見なすかを定義します。Datadog SDK には、すぐに使用できる AAP アプリ内 WAF ルールが多数含まれており、トレースエクスプローラーやデフォルトのシグナルルールでセキュリティトレースを表示するために使用されます。

SDK をアップグレードすることなく、アプリ内 WAF ルールを追加することができます。

AAP アプリ内 WAF ルールの構造

アプリ内 WAF ルールは、カテゴリ、名前、タグ、条件で構成される JSON オブジェクトです。セキュリティトレースが検出されると、ルールからのタグがセキュリティトレースに伝播され、検出ルールの構築に使用できます。

条件

条件は、ルールが受信リクエストにタグを付けるタイミングを定義します。条件は、_入力_と_演算子_で構成されます。

入力

入力は、演算子がリクエストのどの部分に適用されるかを表します。アプリ内 WAF ルールでは、以下の入力が使用されます。

名前説明例
server.request.uri.rawアプリケーションサービスが受信した完全なリクエスト URIhttps://my.api.com/users/1234/roles?clientId=234
server.request.path_paramsパースされたパスパラメーター (キー/値マップ)userId => 1234
server.request.queryパースされたクエリパラメーター (キー/値マップ)clientId => 234
server.request.headers.no_cookiesCookie ヘッダーを除いた受信 http リクエストヘッダー (キー/値マップ)user-agent => Zgrab, referer => google.com
grpc.server.request.messageパースされた gRPC メッセージ (キー/値マップ)data.items[0] => value0, data.items[1] => value1
server.request.bodyパースされた HTTP 本文 (キー/値マップ)data.items[0] => value0, data.items[1] => value1
server.response.statushttp ステータスコード200

演算子

名前説明
match_regex入力に対して正規表現によるマッチングを実行する
phrase_match高速なキーワードリストマッチングを実行する
is_xssクロスサイトスクリプティング (XSS) ペイロードをチェックする特別な演算子
is_sqliSQL インジェクション (SQLI) ペイロードをチェックする特別な演算子

カスタムアプリ内 WAF ルール

カスタムアプリ内 WAF ルールを使用すると、ユーザーはアプリケーションに対する特定のタイプのリクエストをログに記録したりブロックしたりできます。たとえば、カスタムルールを使用してログインの成功や失敗を監視することができます。開始するには、[Security] (セキュリティ) > [App & API Protection] > [Policies] (ポリシー) > [In-App WAF] (アプリ内 WAF) > [Custom Rules] (カスタムルール) に移動します。

注: アプリ内 WAF のデフォルトルールは読み取り専用です。アプリ内 WAF の動作を調整するには、アプリ内 WAF ルールを変更します。デフォルトルールは変更できませんが、デフォルトルールのいずれかに基づいてカスタムルールを作成し、ニーズに合わせてマッチ条件を変更することができます。同じリクエストを評価する類似のルールが重複しないよう、必ずデフォルトルールを無効にしてください。

推奨ルール

Datadog の App and API Protection 推奨ルール機能は、アプリケーションのトラフィックを自動的に分析し、ログインフローや API フローの監視と保護に役立つルールを提案します。ルールは、不審なログイン動作を検出するための最も重要なシグナルである users.login.success や users.login.failure といった一般的な認証パターンに基づいて事前に構築されています。

推奨ルールの利点は以下のとおりです。

  • 認証エンドポイントのベースラインカバレッジを提供することで手動構成を削減します。
  • ブルートフォース、クレデンシャルスタッフィング、自動化されたログイン不正利用などの一般的な攻撃ベクトルからの保護をサービスや環境全体にデプロイする速度を向上させます。
  • ログイン試行に関する高精度のテレメトリを提供して、ログイン失敗の急増、同じ IP からの繰り返し試行、異常な地域からのログインアクティビティなどの異常なパターンに関連付けられるようにします。
  • アカウント乗っ取り (ATO) 保護の可視性を提供します。ATO キャンペーンのほとんどは、異常な認証アクティビティを通じて最初に表面化します。
  • アカウントが侵害される前にクレデンシャルの不正利用を検出して対応します。

推奨ルールの使用例は次のとおりです。

  • ブルートフォース、クレデンシャルスタッフィング、ボットによるログイン不正利用に対する保護を迅速にデプロイする。
  • ログイン試行の成功と失敗を追跡して条件 (例: POST メソッドと 401/403 エラー) を調整することで、推奨ルールを ATO 保護のベースラインとして使用する。
  • サービス全体で一貫した検出ロジックを適用して、監視の行き届いていない環境での防御の回避を困難にする。
  • 異常なログインアクティビティ (失敗の急増、失敗が繰り返された後の異常なログイン成功率など) を監視することで、アカウント乗っ取りの試みの兆候を検出する。

推奨ルールを使用するには、次のいずれかの操作を行います。

  • 推奨ルールからカスタムルールを作成する:
    1. [Suggested Rules] (推奨ルール) で、1つ以上のルールを選択し、[Create Selected Suggested Rules] (選択した推奨ルールを作成) をクリックします。
    2. [Create suggested custom In-App WAF rules] (推奨カスタムアプリ内 WAF ルールを作成) で、[Create rules] (ルールを作成) をクリックします。これにより、選択したルールのセキュリティアクティビティを監視するカスタムアプリ内 WAF ルールが作成されます。
  • 推奨ルールを変更してカスタムルールを作成する:
    1. [Suggested Rules] で、使用するルールを特定し、[View suggested rule] (推奨ルールを表示) をクリックします。
    2. [Add a new Business Logic] (新しいビジネスロジックを追加) で、必要に応じてルールを編集します。
    3. [Continue in In-App WAF] (アプリ内 WAF で続行) をクリックします。
    4. [Define your custom rule] (カスタムルールを定義) で、さらに変更を加えます。
    5. [Save Rule] (ルールを保存) をクリックします。

AAP アプリ内 WAF ルールの構成

サービスのブロックは、ポリシールールで定義します。アプリ内 WAF には、Datadog Recommended、攻撃の監視のみを行う Datadog Monitoring-only、攻撃ツールのブロックとその他のすべての攻撃の監視を行う Datadog Block Attack tools の 3 つの Datadog デフォルトポリシーが含まれています。

ポリシーが適用されているサービスは、ポリシー管理ページで直接確認できます。

  1. Datadog で [Security] > [App & API Protection] > [Policies] > [In-App WAF] の順に移動します。

    2 つのデフォルトポリシーが表示されているアプリ内 WAF 構成ページ。
  2. いずれかのポリシーの右側にある 3 つのドットをクリックして [Download Configuration of this Policy] (このポリシーの構成をダウンロード) を選択し、構成ファイルをローカルマシンにダウンロードします。

  3. 必要に応じて [Apply this Policy to Services] (このポリシーをサービスに適用) を選択し、保護が有効な 1 つ以上の AAP サービスにデフォルトポリシーを適用します。

    注: ポリシーは複数のサービスに適用できますが、1 つのサービスには 1 つの_ポリシー_しか含めることができません。

  4. 上記の仕様に従って、新しいルールの JSON 定義を含むようにファイルを更新します。たとえば、次のようになります。

        {
            "id": "id-123",
            "name": "My In-App WAF rule",
            "tags": {
                "category": "attack_attempt",
                "crs_id": "920260",
                "type": "http_protocol_violation"
            },
            "conditions": [
                {
                    "operator": "match_regex",
                    "parameters": {
                        "inputs": [
                            {
                                "address": "server.request.uri.raw"
                            }
                        ],
                        "options": {
                            "case_sensitive": true,
                            "min_length": 6
                        },
                        "regex": "\\%u[fF]{2}[0-9a-fA-F]{2}"
                    }
                }
            ],
            "transformers": []
        },
       
  5. SCP や FTP などのユーティリティを使用して、appsec-rules.json ファイルをアプリケーションサーバー (例: /home/asm/appsec-rules.json) にコピーします。

  6. AAP の有効化にある、環境にアプリケーション変数を追加する方法に従って、DD_APPSEC_RULES 環境変数をサービスに追加します (ファイルへのフルパスを使用)。

    DD_APPSEC_RULES=/home/asm/appsec-rules.json
    
  7. サービスを再起動します。

次にやるべきこと

次に、作成したアプリ内 WAF ルールで定義されたセキュリティトレースに基づいて、セキュリティシグナルを生成するための検出ルールを構成します。提供されている標準の AAP 検出ルールを変更することも、新しいルールを作成することもできます。