メインコンテンツまでスキップ

Akamai WAF logs

備考

プレビュー

Lakewatch は プライベート プレビュー段階です。アクセスをリクエストするには、Databricksアカウントチームにお問い合わせください。

Lakewatchには、AkamaiからWAF Logsを取り込むためのAPIコネクターが用意されています。この記事では、前提条件、構成手順、コネクタースキーマ、およびLakewatchパーサーの観測対象について説明します。

前提条件​

コネクターには以下が必要です:

  1. ワークスペースでServerlessLakeflow Spark Declarative Pipelinesが有効になっています。
  2. Unity Catalogと、Unity Catalog接続を作成または使用するための権限。「接続のパーミッション」を参照してください。
  3. Akamai Control Center管理者は、SIEM統合を有効にして、SIEMユーザーをプロビジョニングする必要があります。
  4. API資格情報に関連付けられているユーザーは、取り込むセキュリティ構成を含むすべてのグループに対して SIEMの管理 ロールを持っている必要があります。Akamai SIEM統合を参照してください。
  5. 各セキュリティ構成で SIEM インテグレーションとデータ収集をオンにする必要があり、その構成は本番運用ネットワークでアクティブである必要があります。SIEM インテグレーション API を起動するを参照してください。

既知の制限事項​

  • Akamai WAF Logsは追記のみであるため、SCDタイプ2はサポートされていません。
  • コネクタは、defaultで2年間有効な長寿命のEdgeGrid認証情報を使用して認証します。期限が切れたら、新しい認証情報を作成し、接続を更新してください。
  • 過去のルックバックは、Akamai が WAF Logs を保持する 12 時間を超えることはできません。取り込む過去の期間の選択を参照してください。

インジェストのための Akamai の構成​

Databricksからの認証を有効にするようにAkamaiを構成します。

Webセキュリティ構成IDを取得する​

  1. 管理者として Akamai Control Center にサインインします。
  2. ページの左上にあるメニューアイコンをクリックして、ナビゲーションペインを開きます。
  3. ナビゲーションウィンドウで、 Your Services > Web & Data Center Security > Security Configurations > Web Security をクリックします。
  4. セキュリティ構成のリストを確認します。各構成にはドロップダウンがあります。ドロップダウンの下にある コントラクトとグループ ID に注意してください。 MANAGE_SIEM ロールを持つユーザーを作成する場合、これらの値が必要です。
  5. Logsを取り込む各セキュリティ設定について:
    1. 最後に作成 、 ステージング 、または 本番運用 の下にあるバージョンをクリックします。
    2. [詳細設定] > [ログ記録] > [SIEM統合のためのデータ収集] > [Webセキュリティ構成ID] の順に選択します。
    3. Webセキュリティ構成ID を書き留めます。 MANAGE_SIEM ロールを持つユーザーを作成するときに、これらの値が必要です。

MANAGE_SIEMロールを持つユーザーを作成する​

  1. 管理者として Akamai Control Center にサインインします。
  2. ページの左上にあるメニューアイコンをクリックして、ナビゲーションペインを開きます。
  3. ナビゲーション ウィンドウで、[ サービス > アカウント管理者 > ID & アクセス ] をクリックします。
  4. [ ユーザーの作成 ]をクリックします。
  5. Eメール と Eメールの確認 の値を入力します。
  6. [ ロールの割り当て ]で、前のステップのWebセキュリティ構成IDを定義するために使用される各グループに対して[ MANAGE_SIEM ]を選択します。

API クライアントの作成​

  1. 前のステップで作成したユーザーとしてAkamaiコントロールセンターにサインインします。
  2. ページの左上にあるメニューアイコンをクリックして、ナビゲーションペインを開きます。
  3. ナビゲーション ウィンドウで、[ サービス > アカウント管理者 > ID & アクセス ] をクリックします。
  4. API クライアントの作成 > 詳細 をクリックします。
  5. APIs の下で、 APIs を選択 を選択します。
  6. API選択のReset をクリックします。
  7. SIEM APIを検索します。
  8. アクセスレベル で、 読み取り専用 を選択し、 送信 をクリックします。
  9. APIクライアントの一意の 名前 を入力し、 APIクライアントの作成 をクリックします。
  10. client_secret 、 host 、 access_token 、および client_token の値をコピーします。Akamaiは、これらの資格情報を1回だけ表示します。これらを使用して、Databricksで Unity Catalog接続を作成します。
ヒント

Lakewatch UIから接続を作成するときは、上記で収集した ホスト 、 クライアントトークン 、 クライアントシークレット 、および アクセストークン が必要です。

次のステップ​

上記の設定が完了したら、Lakewatch UIでAkamai WAFコネクターを使用してデータソースを作成します。手順については、APIコネクターを参照してください。


コネクタとLakewatchのスキーマ​

コネクタは、defaultソーススキーマから次のソーステーブルを取り込みます。

ソーステーブル

Akamaiデータ

組み込みのLakewatchパーサー

akamai_waf_events

Akamai SIEM Integration APIからのWAFセキュリティイベント

akamai_waf

ソーステーブル

Akamaiデータ

組み込みのLakewatchパーサー

akamai_waf_events

Akamai SIEM Integration APIからのWAFセキュリティイベント

akamai_waf

コネクターは、ソーステーブルをデータソースの未加工宛先に書き込みます。データソースを構成するときに解析された宛先を設定しない限り、組み込みパーサーはパーサーの名前に基づく個別の解析済みテーブルを書き込みます。

Lakewatch管理列​

コネクタは lw_id を追加します。これは、Lakewatch が安定した重複排除と時刻の順序付けに使用する非 null 文字列です。これは、イベントの Timestamp と _databricks_primary_key から lw_id を派生させます。コネクタは以下を派生させます。

  • _databricks_primary_key ソースイベントの安定したハッシュから。
  • time httpMessage.startから、Unixエポック秒として解釈されます。このコネクタは、増分取り込みのカーソルフィールドとしてtimeを使用します。

解析されたテーブルはlw_idを引き継ぎます。パーサーは、解析されたtimeカラムも割り当て、以下を追加します。

  • lw_meta:標準のLakewatch処理メタデータ。
  • lw_observables:パーサー内のセキュリティ観測可能としてマークされたフィールドから抽出された値。

情報については、 パーサーリファレンスを参照してください。

未処理コネクターテーブルスキーマ​

次のスキーマは、標準のLakeflow ConnectフィールドとLakewatchのみの lw_id カラムを組み合わせたものです。フィールド定義については、 Akamai SIEM Integration APIを参照してください。

スキーマ

列

データ型

lw_id

STRING

_databricks_primary_key

LONG

time

TIMESTAMP

format

STRING

type

STRING

version

STRING

attackData

STRUCT<appliedAction: STRING, clientIP: STRING, configId: STRING, policyId: STRING, ruleActions: STRING, ruleData: STRING, ruleMessages: STRING, ruleSelectors: STRING, ruleTags: STRING, ruleVersions: STRING, rules: STRING, apiId: STRING, apiKey: STRING, clientReputation: STRING, slowPostAction: STRING, slowPostRate: STRING, decodedRules: ARRAY<STRUCT<rule: STRING, ruleAction: STRING, ruleData: STRING, ruleMessage: STRING, ruleSelector: STRING, ruleTag: STRING, ruleVersion: STRING>>>

botData

STRUCT<botScore: STRING, responseSegment: STRING>

clientData

STRUCT<telemetryType: STRING, appBundleId: STRING, appVersion: STRING, sdkVersion: STRING>

custom

STRING

geo

STRUCT<asn: STRING, city: STRING, continent: STRING, country: STRING, regionCode: STRING>

httpMessage

STRUCT<bytes: STRING, host: STRING, method: STRING, path: STRING, port: STRING, protocol: STRING, query: STRING, requestHeaders: STRING, requestId: STRING, responseHeaders: STRING, start: STRING, status: STRING, tls: STRING>

identity

STRUCT<ja4: STRING, tlsFingerprintV2: STRING, tlsFingerprintV3: STRING>

userRiskData

STRUCT<allow: STRING, emailDomain: STRING, general: STRING, originUserId: STRING, risk: STRING, score: STRING, status: STRING, trust: STRING, username: STRING, uuid: STRING>

列

データ型

lw_id

STRING

_databricks_primary_key

LONG

time

TIMESTAMP

format

STRING

type

STRING

version

STRING

attackData

STRUCT<appliedAction: STRING, clientIP: STRING, configId: STRING, policyId: STRING, ruleActions: STRING, ruleData: STRING, ruleMessages: STRING, ruleSelectors: STRING, ruleTags: STRING, ruleVersions: STRING, rules: STRING, apiId: STRING, apiKey: STRING, clientReputation: STRING, slowPostAction: STRING, slowPostRate: STRING, decodedRules: ARRAY<STRUCT<rule: STRING, ruleAction: STRING, ruleData: STRING, ruleMessage: STRING, ruleSelector: STRING, ruleTag: STRING, ruleVersion: STRING>>>

botData

STRUCT<botScore: STRING, responseSegment: STRING>

clientData

STRUCT<telemetryType: STRING, appBundleId: STRING, appVersion: STRING, sdkVersion: STRING>

custom

STRING

geo

STRUCT<asn: STRING, city: STRING, continent: STRING, country: STRING, regionCode: STRING>

httpMessage

STRUCT<bytes: STRING, host: STRING, method: STRING, path: STRING, port: STRING, protocol: STRING, query: STRING, requestHeaders: STRING, requestId: STRING, responseHeaders: STRING, start: STRING, status: STRING, tls: STRING>

identity

STRUCT<ja4: STRING, tlsFingerprintV2: STRING, tlsFingerprintV3: STRING>

userRiskData

STRUCT<allow: STRING, emailDomain: STRING, general: STRING, originUserId: STRING, risk: STRING, score: STRING, status: STRING, trust: STRING, username: STRING, uuid: STRING>

パーサーの観測対象​

akamai_waf パーサーは、入れ子になったオブジェクトを VARIANT として書き込み、次のフィールドを lw_observables に抽出します。

可観測項目

フィールド

可観測項目

attackData.clientIP

ip

httpMessage.host

hostname

httpMessage.requestId

trace_id

userRiskData.emailDomain

domain

userRiskData.originUserId

actor_id

userRiskData.username

username

userRiskData.uuid

actor_id

フィールド

可観測項目

attackData.clientIP

ip

httpMessage.host

hostname

httpMessage.requestId

trace_id

userRiskData.emailDomain

domain

userRiskData.originUserId

actor_id

userRiskData.username

username

userRiskData.uuid

actor_id