This product is not supported for your selected
Datadog site. (
).
概要
App and API Protection (AAP) には、本番システムに影響を与える攻撃の試み、攻撃者が見つけた脆弱性、ビジネスロジックの不正使用を捕捉することを目的とした、一連のすぐに使える検出ルールが付属しています。
ただし、環境やワークロードに合わせてルールをカスタマイズしたい場合もあります。たとえば、自社の事業を展開していない地域からユーザーが機密性の高いアクションを実行したことを検知するルールをカスタマイズしたいことがあるかもしれません。
別の例として、社内のセキュリティスキャナーの対象から除外するようにルールをカスタマイズするケースが挙げられます。AAP はそのアクティビティを期待どおりに検出します。しかし、定期的に発生するスキャンについては通知を受け取りたくない場合があります。
このような状況では、カスタム検出ルールを作成して、特定のイベントを除外することができます。このガイドでは、AAP のカスタム検出ルールを作成する方法を説明します。
ビジネスロジック不正使用の検出ルール
AAP には、ビジネスロジックの不正使用 (例: ブルートフォース攻撃によるパスワードリセットなど) を検出するための、すぐに使えるルールが用意されています。これらのルールを使用するには、トレースにビジネスロジック情報を追加する必要があります。
最新の Datadog SDK は、コードを変更することなく、ユーザーのログインイベントやサインアップイベントを自動的に検出して送信する機能が提供されています。必要に応じて、このユーザーアクティビティイベントの自動追跡を無効にすることも可能です。
ルールをフィルタリングして、追跡を開始するビジネスロジックを特定できます。さらに、これらのルールをブループリントとして使用し、独自のビジネスロジックに基づいてカスタムルールを作成することもできます。
ルールの構成は、以下のセクションを参照してください。
構成
すぐに使える (OOTB) 検出ルールをカスタマイズするには、まず既存のルールをクローンする必要があります。検出ルール に移動し、ルールを選択します。ルールの下部までスクロールし、Clone Rule ボタンをクリックします。これで、既存のルールを編集できるようになります。
AAP クエリを定義する
AAP Trace Explorer と同じクエリ構文を使用して AAP クエリを作成します。たとえば、米国外からのログイン成功を監視するクエリを作成する場合、@appsec.security_activity:business_logic.users.login.success -@actor.ip_details.country.iso_code:US と指定します。
オプションで、一意のカウントとシグナルのグループ化を定義します。指定した期間内において、ある属性について観測された一意の値の数をカウントします。定義されたグループ化 (group-by) の条件に基づき、その値ごとにシグナルが生成されます。通常、グループ化の対象にはエンティティ (ユーザー、IP アドレス、サービスなど) が指定されます。また、このグループ化設定は、クエリを結合するためにも使用されます。
プレビューセクションを使用して、どの AAP トレースが検索クエリと一致するかを確認できます。Add Query ボタンを使用して、クエリを追加することも可能です。
クエリを結合する
特定の期間にまたがって複数のクエリを結合することで、セキュリティシグナルの信頼性や重大度を高めることができます。たとえば、攻撃の成功を検知するために、あるサービスに対する成功と失敗の両方のトリガーを関連付けることが可能です。
クエリ同士の関連付けには、group by の値が使用されます。この group by の値は通常エンティティ (IP や Service) ですが、任意の属性を指定できます。
たとえば、同じ business_logic.users.login.success アクティビティを対象としつつ、HTTP パスの条件を成功と失敗として対照的に設定したクエリを作成します。
クエリ 1: @appsec.security_activity:business_logic.users.login.success @actor.ip_details.country.iso_code:US。
クエリ 2: @appsec.security_activity:business_logic.users.login.success -@actor.ip_details.country.iso_code:US。
この場合、結合されたクエリは技術的に同じ属性値を保持することになります。ケースを満たすには、その値が一致している必要があります。group by 値が存在しない場合、ケースが満たされることはありません。ケースが一致すると、一意の group by 値ごとにセキュリティシグナルが生成されます。
抑制クエリで良性アクティビティを除外する
[Only generate a signal if there is a match] フィールドでは、クエリを入力して、値が満たされた場合にのみトリガーが生成されるように設定できます。
[This rule will not generate a signal if there is a match] フィールドでは、値が満たされた場合にトリガーが生成されないように抑制クエリを入力するオプションがあります。たとえば、サービスがシグナルをトリガーしているものの、そのアクションが良性であり、今後そのサービスからシグナルをトリガーしたくない場合は、service を除外するクエリを作成します。
ケースを設定する
トリガー
successful login > 0 のようなルールケースは、ケース文として評価されます。そのため、最初に一致したケースがシグナルを生成します。1 つまたは複数のルールケースを作成し、その横にあるグレーの領域をクリックしてドラッグすることで、順序を並べ替えることができます。
ルールケースには、事前に定義されたクエリのイベント数に基づいてシグナルを生成するかどうかを判断するための論理演算子 (>, >=, &&, ||) が含まれます。
注: クエリラベルは演算子の前に記述する必要があります。たとえば、a > 3 は許可されますが、3 < a は許可されません。
各ルールケースに名前を付けます。この名前は、シグナルが生成されたときにルール名に追加されます。
重大度および通知
In the Set severity to dropdown menu, select the appropriate severity level (INFO, LOW, MEDIUM, HIGH, CRITICAL).
In the Add notify section, click Add Recipient to optionally configure notification targets.
You can also create notification rules to avoid manual edits to notification preferences for individual detection rules.
タイムウィンドウ
An evaluation window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates cases in real time.
After a signal is generated, the signal remains “open” if a case is matched at least once within the keep alive window. Each time a new event matches any of the cases, the last updated timestamp is updated for the signal.
A signal closes once the time exceeds the maximum signal duration, regardless of the query being matched. This time is calculated from the first seen timestamp.
ケースを追加するには、[Add Case] をクリックします。
注: evaluation window は keep alive および maximum signal duration 以下である必要があります。
発生している事象を述べる
- Enter a Rule name. The name appears in the detection rules list view and the title of the security signal.
- In the Rule message section, use notification variables and Markdown to customize the notifications sent when a signal is generated.
- Use the Tag resulting signals dropdown menu to add tags to your signals. For example,
security:attack or technique:T1110-brute-force.- Note: the tag
security is special. This tag is used to classify the security signal. The recommended options are: attack, threat-intel, compliance, anomaly, and data-leak.
Tag resulting signals ドロップダウンメニューを使用して、シグナルにタグを追加します。たとえば、attack:sql-injection-attempt。
注: security タグは特別なタグです。このタグはセキュリティシグナルの分類に使用されます。推奨されるオプションは、attack、threat-intel、compliance、anomaly、および data-leak です。
参考資料