This product is not supported for your selected
Datadog site. (
).
概要
App and API Protection (AAP) を有効にすると、Datadog のトレーシングライブラリは、すべての Web サービスや API リクエストを積極的に監視し、疑わしいセキュリティアクティビティがないかどうかを確認します。
_アプリ内 WAF ルール_は、受信するリクエストの条件を指定し、ライブラリが何を疑わしいとみなすかを定義します。Datadog トレーシングライブラリには、何百ものすぐに使える AAP アプリ内 WAF ルールが含まれており、トレースエクスプローラーやデフォルトシグナルルールでセキュリティトレースを表示するために使用されます。
トレーシングライブラリをアップグレードすることなく、アプリ内 WAF ルールに追加することができます。
AAP アプリ内 WAF ルールの構造
アプリ内 WAF ルールは、カテゴリー、名前、タグ、条件からなる JSON オブジェクトです。セキュリティトレースを検出すると、ルールのタグがセキュリティトレースに伝搬され、検出ルールを構築するのに利用されます。
条件
条件は、ルールが受信リクエストにタグ付けするタイミングを定義します。条件は、_入力_と_演算子_で構成されます。
入力
入力は、リクエストのどの部分に演算子が適用されるかを表します。アプリ内 WAF ルールでは、以下の入力が使用されます。
| 名前 | 説明 | 例 |
|---|
server.request.uri.raw | アプリケーションサービスが受信した完全なリクエスト URI | https://my.api.com/users/1234/roles?clientId=234 |
server.request.path_params | パースされたパスパラメーター (キー/値マップ) | userId => 1234 |
server.request.query | パースされたクエリパラメーター (キー/値マップ) | clientId => 234 |
server.request.headers.no_cookies | Cookie ヘッダー (キー/値マップ) を除いた、受信する 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.status | http ステータスコード | 200 |
演算子
| name | 説明 |
|---|
match_regex | 入力に対して正規表現によるマッチングを実行する |
phrase_match | キーワードリストマッチングを高速に実行する |
is_xss | クロスサイトスクリプティング (XSS) ペイロードをチェックするための特別な演算子 |
is_sqli | SQL インジェクション (SQLI) ペイロードをチェックするための特別な演算子 |
カスタムアプリ内 WAF ルール
カスタムアプリ内 WAF ルールにより、ユーザーはアプリケーションに対する特定のタイプのリクエストを記録したり、ブロックしたりすることができます。例えば、カスタムルールを使用して、ログインの成功または失敗を監視することができます。開始するには、Security -> App and API Protection -> Protection -> In-App WAF -> Custom Rules に移動します。
注: In-App WAF のデフォルト ルールは読み取り専用です。In-App WAF の動作を調整するには、デフォルト ルールを基にカスタム ルールを作成し、必要に応じて一致条件を変更してください。デフォルト ルール自体は変更できません。同じリクエストを類似した 2 つのルールが評価しないよう、元のデフォルト ルールは無効にしてください。
AAP アプリ内 WAF ルールの構成
サービスのブロックは、ポリシールールで定義します。アプリ内 WAF には、Datadog Recommended、攻撃のみを監視する Datadog Monitoring-only、攻撃ツールをブロックし、その他のすべての攻撃を監視する Datadog Block Attack tools の 3 つの Datadog デフォルトポリシーが含まれています。
ポリシーが適用されているサービスは、ポリシー管理ページで直接確認できます。
Datadog で、Security > App and API Protection > Protection > In-App WAF に移動します。
ポリシーの右側にある 3 つのドットをクリックし、Download Configuration of this Policy を選択して、コンフィギュレーションファイルをローカルマシンにダウンロードします。
オプションとして、Apply this Policy to Services を選択して、デフォルトのポリシーを保護が有効な 1 つ以上の AAP サービスに適用することもできます。
注: ポリシーは複数のサービスに適用できますが、1 つのサービスには 1 つの_ポリシー_しか含めることができません。
上記の仕様に従って、新しいルールの 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": []
},
SCP や FTP などのユーティリティを使用して、appsec-rules.json ファイルを /home/asm/appsec-rules.json などのアプリケーションサーバーにコピーします。
AAP の有効化にある、環境にアプリケーション変数を追加する方法に従って、DD_APPSEC_RULES 環境変数をサービスに追加し、ファイルへのフルパスを指定します。
DD_APPSEC_RULES=/home/asm/appsec-rules.json
サービスを再起動します。
次にやるべきこと
次に、作成した In-App WAF ルールで定義されたセキュリティ トレースに基づいて、セキュリティ シグナルを生成するための検出ルールを設定します。提供されている標準の AAP 検出ルールを変更することも、新しいルールを作成することもできます。
その他の参考資料