Cloud SIEM API によるセキュリティフィルター

概要

Cloud SIEM 製品は、ログを脅威インテリジェンスと照合したり、検出規則を適用して攻撃や異常を検出したりするなどして、取り込んだログを分析して脅威をリアルタイムで検出します。

Datadog は、Datadog Cloud SIEM サービスによって取り込まれ分析されたギガバイトの総数に基づいて、分析されたログの料金を請求します。デフォルトでは、Cloud SIEM は、取り込んだすべてのログを分析して、検出範囲を最大化します。ただし、Cloud SIEM API を使用すると、プログラムでセキュリティフィルターを設定して、取り込んだログのどのサブセットを分析するかを構成できます。

このガイドでは、以下の例についてご説明します、

: セキュリティフィルターは、Cloud SIEM 製品によって分析されたログを制御するためにのみ必要です。クラウドワークロードセキュリティ (source:runtime-security-agent) およびクラウドセキュリティポスチャ管理 (source:compliance-agent) 製品の一部として Datadog Agent によって生成されたログを除外するために、セキュリティフィルターを作成する必要はありません。分析ログとして請求されないためです。

前提条件

  • API を使用するには管理者ユーザーが保有する API キーとアプリケーションキーが必要です。これらは Datadog アカウントの API キーページで確認できます。<DATADOG_API_KEY><DATADOG_APP_KEY> を Datadog API キーおよび Datadog アプリケーションキーで置き換えてください。

  • このガイドでは curl の例を解説しています。curl をまだインストールしていない場合はインストールするか、API ドキュメントでこの API エンドポイントについての他言語の例を参照してください。

除外を追加する

デフォルトでは、取り込んだすべてのログを分析する単一のセキュリティフィルターが存在します。これは all ingested logs という名前で、クエリは * です。タグに基づいてログのサブセットを除外する除外を追加することで、カスタマイズできます。そのためには、まず、フィルターの id を取得するために、セキュリティフィルターのリストを取得する必要があります。

API call:

curl -L -X GET 'https://api./api/v2/security_monitoring/configuration/security_filters' \
--header 'Content-Type: application/json' \
--header 'DD-API-KEY: <DATADOG_API_KEY>' \
--header 'DD-APPLICATION-KEY: <DATADOG_APP_KEY>'

Response:

{
    "data": [
        {
            "attributes": {
                "is_enabled": true,
                "is_builtin": true,
                "name": "all ingested logs",
                "filtered_data_type": "logs",
                "exclusion_filters": [],
                "version": 1,
                "query": "*"
            },
            "type": "security_filters",
            "id": "l6l-rmx-mqx"
        }
    ]
}

この例では、フィルターの id"l6l-rmx-mqx" です。次に、それを変更して除外を追加できます。たとえば、env:staging でタグ付けされたすべてのログを除外します。

: version は、更新するフィルターの現在のバージョンを示します。

API call:

curl -L -X PATCH 'https://api./api/v2/security_monitoring/configuration/security_filters/l6l-rmx-mqx' \
--header 'Content-Type: application/json' \
--header 'DD-API-KEY: <DATADOG_API_KEY>' \
--header 'DD-APPLICATION-KEY: <DATADOG_APP_KEY>' \
--data-raw '{
    "data": {
        "attributes": {
             "exclusion_filters": [
                {
                    "query": "env:staging",
                    "name": "exclude env:staging"
                }
            ],
            "version": 1
        },
        "type": "security_filters"
    }
}'

Response:

{
    "data": {
        "attributes": {
            "is_enabled": true,
            "is_builtin": true,
            "name": "all ingested logs",
            "filtered_data_type": "logs",
            "exclusion_filters": [
                {
                    "query": "env:staging",
                    "name": "exclude env:staging"
                }
            ],
            "version": 2,
            "query": "*"
        },
        "type": "security_filters",
        "id": "l6l-rmx-mqx"
    }
}

カスタムフィルターを作成する

分析を明示的に指定されたログに制限するために、カスタムセキュリティフィルターを作成することもできます。たとえば、source:cloudtrail のみに一致するフィルターを使用して AWS Cloudtrail からのログを分析することを選択できます。

API call:

curl -L -X POST 'https://api./api/v2/security_monitoring/configuration/security_filters' \
--header 'Content-Type: application/json' \
--header 'DD-API-KEY: <DATADOG_API_KEY>' \
--header 'DD-APPLICATION-KEY: <DATADOG_APP_KEY>' \
--data-raw '{
    "data": {
        "type": "security_filters",
        "attributes": {
            "is_enabled": true,
            "name": "cloudtrail",
            "exclusion_filters": [],
            "filtered_data_type": "logs",
            "query": "source:cloudtrail"
        }
    }
}'

Response:

{
    "data": {
        "attributes": {
            "is_enabled": true,
            "is_builtin": false,
            "name": "cloudtrail",
            "filtered_data_type": "logs",
            "exclusion_filters": [],
            "version": 1,
            "query": "source:cloudtrail"
        },
        "type": "security_filters",
        "id": "qa6-tzm-rp7"
    }
}

セキュリティフィルターは包括的です。つまり、特定のログが少なくとも 1 つのセキュリティフィルタに一致する場合に分析されます。分析するログのサブセットを指定する場合は、all ingested logs という名前のデフォルトの組み込みフィルターを無効にすることもできます。これを行うには、次のように、その is_enabled 属性を false に設定します。

API call:

curl -L -X PATCH 'https://api./api/v2/security_monitoring/configuration/security_filters/l6l-rmx-mqx' \
--header 'Content-Type: application/json' \
--header 'DD-API-KEY: <DATADOG_API_KEY>' \
--header 'DD-APPLICATION-KEY: <DATADOG_APP_KEY>' \
--data-raw '{
    "data": {
        "attributes": {
            "is_enabled": false,
            "version": 2
        },
        "type": "security_filters"
    }
}'

Response:

{
    "data": {
        "attributes": {
            "is_enabled": false,
            "is_builtin": true,
            "name": "all ingested logs",
            "filtered_data_type": "logs",
            "exclusion_filters": [
                {
                    "query": "env:staging",
                    "name": "exclude env:staging"
                }
            ],
            "version": 3,
            "query": "*"
        },
        "type": "security_filters",
        "id": "l6l-rmx-mqx"
    }
}

主要なセキュリティ関連のタグと属性

明示的に指定されたログのカテゴリのみを分析する場合は、セキュリティに関連する貴重なユーザーやエンティティ、またはセキュリティログの主要なソースを含むログを除外しないように注意してください。以下の表は、有用な例を示しています。

主要なユーザーとエンティティ

名前クエリ
すべての名前付きイベント@evt.name:*
すべてのクライアント IP@network.client.ip:*
すべての宛先 IP@network.destination.ip:*
全てのユーザー@usr.id:* OR @usr.name:* @usr.email:*
すべてのホストhost:* OR instance-id:*

主要なセキュリティソース

名前クエリ
AWS セキュリティログsource:(cloudtrail OR guardduty OR route53)
AWS ネットワークログsource:(vpc OR waf OR elb OR alb)
GCP ログsource:gcp*
Azure ログsource:azure*
Kubernetes 監査ログsource:kubernetes.audit
ID プロバイダーログsource:(okta OR gsuite OR auth0)
CDN ログsource:(cloudfront OR cloudflare OR fastly)
Web サーバーログsource:(nginx* OR apache OR iis)