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

Akamai WAF logs

備考

ベータ版

Lakewatchはベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。ワークスペースレベルのプレビューを管理するを参照してください。

Lakewatchは、AkamaiからWAF Logsを取り込むためのAPIコネクタを提供します。この記事では、前提条件、設定手順、コネクタスキーマ、セキュリティ観察可能要素について説明します。

前提条件​

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

  1. ワークスペースで有効になっている Serverless Lakeflow pipelines。
  2. Unity Catalogと、Unity Catalog接続を作成または使用するための権限。「接続のパーミッション」を参照してください。
  3. Akamai WAF用のLakeflow Connect のプレビューは、ワークスペース管理者によってワークスペースでオンにされました。コネクタ プレビューのオンを参照してください。
  4. ワークスペースのServerlessネットワークポリシーでアクセス制限が使用されている場合は、ソースのAPIドメインをポリシーの「 許可されたドメイン 」リストに追加する必要があります。ネットワークポリシーでソースAPIドメインを許可するを参照してください。
  5. Akamai Control Center管理者は、SIEM統合を有効にして、SIEMユーザーをプロビジョニングする必要があります。
  6. API資格情報に関連付けられているユーザーは、取り込むセキュリティ構成を含むすべてのグループに対して SIEMの管理 ロールを持っている必要があります。Akamai SIEM統合を参照してください。
  7. 各セキュリティ構成で 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 を書き留めてください。これらのIDは、 MANAGE_SIEM 権限の設定とデータソースの セキュリティ構成ID フィールドの両方に必要です。

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コネクターを使用してデータソースを作成します。

  1. ホスト 、 クライアントトークン 、 クライアントシークレット 、および アクセストークン を使用して、Unity Catalog 接続を作成または選択します。
  2. データソース フォームの必須の Web セキュリティ構成 ID フィールドに、Web セキュリティ構成 ID をコンマ区切りの整数で入力します(例: 12345, 67890)。これらの ID は、取り込む構成を選択するものであり、接続資格情報とは別のものです。

データソースのその他の設定については、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

コネクタは、各ソーステーブルをその組み込みパーサー用に構成された宛先に直接書き込みます。defaultでは、宛先テーブルの名前はパーサーの名前に基づいて付けられます。データソースの作成時に別の宛先を設定できます。独立した未加工のステージングテーブルや、後の解析ステップはありません。

Lakewatch管理列​

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

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

Lakewatchデータソースの場合、コネクターは以下も追加します。

  • lw_meta:データソースと接続 ID、パーサー名とバージョン、およびインジェスト時間。
  • lw_observables: コネクタによって抽出されたセキュリティオブザーバブル。

情報については、「 コネクタ出力テーブル」を参照してください。

コネクタ出力テーブル スキーマ​

宛先には、以下のソースおよびイベント列に加えて、上記の lw_meta および 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>

セキュリティ可観測項目​

コネクタは次のフィールドを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