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

Genieで調査

備考

プレビュー

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

Databricks Genieは、Lakewatchに自然言語データ支援をもたらします。Genieファミリーの2つの部分を主に使用します。

  • Genie Code は、Lakewatch UI全体に組み込まれているAIアシスタントです。SQLの記述、検出ルールの構築、データソースの探索など、コンテキストを認識した迅速なヘルプに使用します。左側のメニューの Genie をクリックするか、右上隅のGenieアイコンをクリックすると、任意のページの横で開きます。
  • Genie Agents (以前はGenie spaces)は、Genie Research Agentによって強化された、深層的な多段階調査のための専用環境です。

このページでは、両方を使用したLakewatchセキュリティワークフローについて説明します。Genieとは何か、どのように課金されるのか、一般的なセットアップについては、上記のリンクに従ってください。

Genieでアラートをトリアージする​

Genieは、アラートの詳細ページからセキュリティアラートをトリアージできます。アラートで Genieでトリアージ を選択すると、Genieはシニアアナリストのように機能します。つまり、調査計画を構築し、関連するコンテキストと証拠を収集し、評決に達し、その結果でアラートを更新します。

Genie でトリアージ ボタンは、セキュリティ アラートでのみ使用できます。システムエラーには表示されません。

Genieがアラートをトリアージする方法​

Genieにセキュリティアラートのトリアージを依頼すると、次のフェーズで動作します:

  1. 調査の計画 :Genieは、何かを実行する前に短い計画を述べるほか、悪意のある説明と一緒にテストするためのいくつかの良性の説明も提示するため、その推論を追跡できます。
  2. コンテキストの収集 :Genieは、アラートを生成した検出ルールを読み取り、そのルールが以前に何回トリガーされたかを確認してノイズの多さを判断し、アラートのシグナルを調べます。
  3. エビデンスの調査 :Genieはセキュリティデータに対してクエリーをランして各説明をテストし、ユーザー、IPアドレス、ホストなど、アラート内のエンティティに基づいてピボットします。
  4. 判定に達する : Genieは、収集した証拠に基づいて、アラートを真陽性、偽陽性、または良性陽性に分類します。証拠が不十分な場合、Genieはその旨を伝え、アラートの分類と状態を変更しません。
  5. アラートの更新 :あなたの承認を得て、Genieは調査コメントを投稿し、アラートの分類と状態を設定し、アラートをあなたに割り当てます。

アラートのトリアージ​

Genieでセキュリティアラートをトリアージするには:

  1. Explore(探索) > Alerts(アラート) に移動し、調査するセキュリティアラートを開きます。
  2. アラートの上部にある Genieでトリアージ を選択します。Genieが開き、調査が起動されます。以前にこのアラートをトリアージしたことがある場合、ボタンは「 トリアージの再開 」に変わり、以前の調査が再開されます。
  3. Genieが提案する計画を確認し、コンテキストを収集して調査クエリーを実行するプロセスに従ってください。
  4. 判定を確認します。Genieは、コメントをアラートに追加する前、および分類と状態を設定してアラートを割り当てる前に、承認を求めます。各変更が評価と一致する場合のみ承認します。

Genieが生成するもの​

Genieは、調査結果をアラートに関するコメントとして記録し、クエリーを実行しなかった読者向けに構成されます。

  • 概要 :評決と主な根本原因を数文で記述します。
  • 評価: 分類(真、偽、または良性陽性)と結果のアラート状態。
  • リスクベースの証拠 : 判定を形成した各検出結果のテーブル。時間枠とそれが由来するデータが含まれます。
  • 検出品質評価 : トリガーされたルールの評価(偽陽性を引き起こしたギャップや推奨される修正などを含む)。
  • 次のステップ : 推奨されるフォローアップアクション。直ちに実施する作業と後回しにする作業に分けて示します。

承認すると、Genieはアラートの分類と状態も設定し、アラートを割り当てます。Genieはトリアージの会話をアラートに保存するため、後で再度開いてレビューしたり、調査を続けたりできます。

制限​

  • セキュリティアラートのトリアージ実行のみ。 Genieでトリアージ ボタンは、システムエラーでは使用できません。
  • Genieがアラートのイベントを読み取り、調査用クエリーを実行するには、稼働中のSQL Warehouseが必要です。
  • Genieは、アラートのシグナルと、ユーザー、IPアドレス、ホストなど、それらが参照するエンティティを基盤として動作します。

スレットインテルのためのGenie Agentを構成する​

Genie Research Agent(RA)は、脅威インテリジェンスフィードを分析し、セキュリティデータから潜在的な脅威を抽出します。このセクションでは、Lakewatch脅威インテリジェンスワークフローのためにGenie Agentを構成する手順について説明します。

前提条件​

  • 取り込まれ、カタログで使用できるようになった解析済みテーブル
  • Databricks に読み込まれる脅威インテリジェンスフィード(例: テーブルにマップされた TAXII/STIX フィード)
  • Research Agentがワークスペースで有効になっています

ステップ1: セキュリティデータを使用してGenie Agentを作成する​

Genie Agentを作成し、Genieにクエリーさせたいデータに接続します:

  • 関連するすべての解析済みテーブル
  • カタログの「__lakewatch」スキーマ内の「signals」ビュー
  • system.lakewatch.system_events システムテーブル
  • 脅威インテリジェンステーブル
注記

Genie Agentは最大30個のテーブルをサポートします。より大きな環境では、トピック固有のエージェント(「Endpoint RA」など)を作成してください。

ステップ2: Research Agent をオンにする​

新しいGenie Agentで、クエリーモードを Chat から Research Agent に切り替えます。これにより、Genieは単一の質問に答えるのではなく、データ全体で多段階の分析を実行できるようになります。

ステップ 3: 指示を追加する​

適切な指示は、Genieがあなたのデータモデルを理解し、質問に答えるときにどこを見るべきかを判断するのに役立ちます。 構成 > 指示 > テキスト に移動し、以下の領域をカバーするコンテキストを追加します。

一般的なガイダンス:

  • ユーザーが明示的に生データについて尋ねない限り、解析済みテーブルにクエリーを集中させます。
  • Lakewatch はスケジュールに基づいて検出ルールを実行します。

主要な用語:

  • シグナル: 検出ルールが条件に一致したときに生成されるアラート。
  • エンティティ : ユーザー、ホスト、アプリケーション、ネットワークデバイス。
  • アセット : セキュリティステータスのために追跡される保護対象リソース。
  • 検出ルール :特定のパターンについてイベントデータを検索する保存済みSQLクエリー。
  • データソース : 外部ソース(例えば、AWS CloudTrail、Akamai WAF)、既存の Unity Catalog テーブル、または API コネクタからセキュリティデータを取り込むデータパイプライン。

スキーマコンテキスト:

  • 解析されたテーブルには、宣言されたフィールドとLakewatchで管理される列(lw_id、lw_meta、lw_observables)が含まれます。
  • 重大度レベル: 1=情報、2=低、3=中、4=高、5=重大、6=致命的。

以下の手順では、<threat-intel-table>を脅威インテリジェンステーブルの名前に置き換えてください。

脅威インテリジェンスフィードのコンテキスト:

  • <threat-intel-table> テーブルには、最新の脅威フィードが含まれています。ユーザーはこのテーブルを使用して、検討すべき脅威を理解できます。
ヒント

手順で脅威インテルテーブルを明示的に指定することが重要です。このコンテキストがないと、Genie はインテルフィードではなく、他のテーブル (シグナルなど) を使用して脅威の質問に答える可能性があります。

ステップ4:脅威のクエリー​

エージェントを構成した後、脅威ランドスケープについてGenieに質問します。

Genieが脅威インテリジェンス テーブルを自動的に参照しない場合は、次のいずれかを行います:

  • 質問の中でテーブルの名前を明示的に指定します: "<threat-intel-table>テーブルを使用して、どのような脅威を考慮する必要がありますか?"
  • 脅威関連のクエリー用のテーブルを Genie が指すように指示を追加します (ステップ 3 を参照)。

クエリーの例​

クエリー

Genieが返すもの

「どのような脅威を懸念すべきですか?」

シグナルから取得したアクティブな脅威のサマリー

"<threat-intel-table> テーブルを使用して、どのような脅威を懸念すべきですか?"

インテリジェンスフィードからのMITRE ATT&CK手法、脅威アクターグループ、マルウェアファミリーの分析

「考慮すべき、または探すべき新しい脅威はありますか?」

最近更新された攻撃パターン、新たに出現したマルウェアファミリー、進行中のキャンペーン

「コマンドおよび制御の戦術の検出範囲のギャップを見つける。」

MITRE ATT&CK戦術全体でのギャップ分析

"IP 203.0.113.42からのすべてのアクティビティを確認できますか?"

特定のエンティティの調査の要約

「企業のS3バケットの改ざんについて説明してください。」

次のステップを含む段階的攻撃の概要

クエリー

Genieが返すもの

「どのような脅威を懸念すべきですか?」

シグナルから取得したアクティブな脅威のサマリー

"<threat-intel-table> テーブルを使用して、どのような脅威を懸念すべきですか?"

インテリジェンスフィードからのMITRE ATT&CK手法、脅威アクターグループ、マルウェアファミリーの分析

「考慮すべき、または探すべき新しい脅威はありますか?」

最近更新された攻撃パターン、新たに出現したマルウェアファミリー、進行中のキャンペーン

「コマンドおよび制御の戦術の検出範囲のギャップを見つける。」

MITRE ATT&CK戦術全体でのギャップ分析

"IP 203.0.113.42からのすべてのアクティビティを確認できますか?"

特定のエンティティの調査の要約

「企業のS3バケットの改ざんについて説明してください。」

次のステップを含む段階的攻撃の概要

トラブルシューティング​

Genie が脅威インテリジェンス テーブルを使用していない​

Genie Agentの構成に、テーブル名とその目的を示す明示的な指示を追加します。Genieはdefaultで、質問に最も関連性があると思われるテーブルを使用します。ヒントがない場合は、代わりにシグナルを使用する場合があります。

脅威インテリジェンスフィードはDatabricksにはありません​

Genieがフィードをクエリーできるようにするには、フィードを取り込み、テーブルとして構造化する必要があります。TAXIIファイルフィールドに1対1でマッピングされるリキッドクラスタテーブルが推奨されるアプローチです。

最良の結果を得るためのヒント​

  • プロンプトを具体的にする : テーブルに直接名前を付けると、関連性が向上します。
  • 指示を活用して手間を減らす :Genieの指示に脅威インテリジェンステーブルを記載すると、アナリストはテーブル名を指定せずに自然言語で質問できます。
  • 手順を繰り返す :Genieが誤ったソースからデータを一貫して取得する場合は、質問の種類ごとにどのテーブルを使用するかをより明示的に指定するように手順を調整します。
  • エージェントの作成とチューニングの詳細については、Genie Agentの作成と管理をご覧ください。

Genie Codeのプロンプト例​

Genie Codeは、SQLクエリーの作成、検出ルールの構築、データソースの調査などを支援します。以下のサンプルプロンプトは、ユースケース別に整理されています。

ヒント

Genieでセキュリティアラートをステップバイステップでトリアージする方法については、Genieでアラートをトリアージするを参照してください。

一般​

一般的なプロンプトを表示

SQLクエリー:

  • "このSQLクエリーを実行します: SELECT * FROM my_table LIMIT 10"
  • 「認証テーブルの行をカウントするクエリーをラン」
  • 「このテーブルのスキーマを表示してください」
  • 「ネットワークトラフィックデータの最後の1時間をクエリーする」

テーブルの検出とスキーマ:

  • 「名前に 'user' が含まれるすべてのテーブルを検索」
  • "セキュリティカタログでテーブルを検索"
  • "http_activityテーブルにはどの列がありますか?"
  • 「このテーブルのすべてのフィールドのデータ型を表示」
  • 「すべての利用可能なカタログとスキーマをリストする」

資産検索:

  • 「機密データを含むUnity Catalogボリュームを検索」
  • 「セキュリティモニタリングに関連するダッシュボードを検索」
  • 「認証ログをクエリーするノートブックを見つける」

ドキュメント検索:

  • 「Spark SQL日付関数のドキュメントを検索」
  • 「Databricksでウィンドウ関数を使用するにはどうすればよいですか?」
  • 「Delta Lake タイムトラベルについてのドキュメントを検索」

検出​

検出ルールを構築および管理する際には、これらのプロンプトを使用します。

検出プロンプトを表示

検出したい内容を入力してください:

  • 「ネットワークからデータを流出させる検出」
  • 「アクセスすべきでない機密ファイルにアクセスしようとしているユーザーを見つけるためのルールを作成する」

テーブルの発見:

  • 「認証イベントを含むテーブルはどれですか?」
  • 「network_activityテーブルのサンプルデータを表示して」
  • "認証テーブルで使用可能なフィールドは何ですか?"

異なる検出ロジックタイプに対するSQLの検出の書き方:

  • 「SQLを作成して、1時間に100回以上のログイン失敗があったIPを検出する」 (threshold)
  • 「ベースラインと比較してログイン回数が異常なユーザーを検出する」 (異常)
  • 「ユーザーがホストに初めてログインしたときに検出する」(初回表示)
  • 「2時間以内に複数の国からログインしているユーザーを検出」(地理的異常)
  • 「深夜以降に実行されるデータベースクエリーを検出」(時間ベース)

既存の検出SQLを変更:

  • 「サービスアカウントを除外するフィルターを追加」
  • "ノイズを減らすにはthresholdを引き上げてください"
  • "営業時間後のフィルター処理と組み合わせる"

クエリーのテストとデバッグ:

  • 「この検出クエリーを実行して結果を表示」
  • 「クエリーの結果が返されないので、デバッグを手伝ってください」
  • 「このクエリーは非常に低速ですので、最適化を支援してください」
  • 「これにより多くの偽陽性が生成されるため、どのように調整すればよいでしょうか?」

MITRE ATT&CK にマップする:

  • "ブルートフォース攻撃に適用される MITRE 手法は何ですか?"
  • 「この検知を適切な戦術と技術にマッピングする」
  • "テクニック T1078 の詳細を表示"

シグナル出力を定義する:

  • 「このアラートのサマリーTemplateを作成」
  • 「どのコンテキスト フィールドを含めるべきですか?」
  • 「サンプルデータでアラートがどのように表示されるかを確認する」

スケジューリングとコンピュートをセットアップします:

  • 「これを15分ごとに実行するように設定してください」
  • 「午前2時に毎日コンプライアンスチェックを設定する」
  • 「コストを節約するため、営業時間中にのみこれをラン」
  • "このルールをServerlessコンピュートで実行するか、SQL Warehouseで実行するか?"

既存のルールを使用する:

  • 「『ブルートフォースログイン』ルールの設定を表示して」
  • 「このワークスペース内のすべての検出ルールを一覧表示」
  • 「既存のルール内のthresholdを変更する」

検出の概念について:

  • 「threshold検出のしくみを教えてください」
  • 「アノマリー検知とthreshold検知の違いは何ですか?」
  • 「異なるスケジュールのコストへの影響は何ですか?」

マルチステップワークフローを構築する:

  • 「ゼロから完全なブルートフォース検知を構築する」
  • 「ログイン失敗と権限昇格の間の相関関係を作成する」

検知のトラブルシューティング:

  • 「なぜこの検知がTriggerされないのですか?」
  • 「スキーマにすべてのフィールド名が存在することを確認する」
  • 「ベースラインが間違っているため、再構築するにはどうすればよいですか?」

クエリー​

これらのプロンプトをクエリーページで使用します。

クエリープロンプトを表示

データの探索:

  • 「データソースOktaの未加工テーブルの行数はいくつですか?」
  • 「AWS CloudTrailの解析されたテーブルスキーマを表示してください」
  • データソース crowdstrike_events の未加工テーブルと解析済みテーブルの行数を比較します
  • 「Crowdstrikeでパースされたテーブルの最後の10件のイベントを表示して」

結果を絞り込む:

  • 「これらの結果を、米国からのイベントのみを表示するようにフィルタリングする」
  • "リスクスコアを計算する列を追加"
  • 「ステータスが 'test' の行を削除」
  • 「これらの結果をユーザー別にグループ化し、イベントをカウントする」
  • 「Timestamp列を降順で並べ替える」

クエリーを最適化:

  • 「このクエリーは時間がかかりすぎます。スピードアップするにはどうすればよいですか?"
  • "500万行が返されました。それを減らすにはどうすればよいですか?"
  • 「このクエリーは効率的ですか?」
  • "この結合を最適化するにはどうすればよいですか?"
  • 「クエリーエラーを修正するのを手伝ってください」

結果を解釈します。

  • 「これらの結果から何がわかるか?」
  • 「このデータにパターンはありますか?」
  • 「今見ている内容を要約して」
  • 「これに基づいて何を調査する必要がありますか?」

データソース​

データソースを構成および管理するときに、これらのプロンプトを使用します。

データソースのプロンプトを表示

データ品質の評価:

  • "データ品質のサマリーを表示する"
  • 「ほとんどの値がnullの列はありますか?」
  • 「event_type」列の値の分布はどうなっていますか?
  • 「RAWスキーマを分析し、どの列が存在するかを表示します」
  • "抽出が必要なJSONデータが含まれている列はどれですか?"

診断エラー:

  • 「なぜデータソースのプレビューが失敗したのですか?」
  • 「プレビューがエラーを返しました。デバッグを助けてください」
  • 「列が存在しません」というエラーが発生しますが、何が間違っているのでしょうか?

JSON フィールドを抽出:

  • 「'user' JSON オブジェクトを別々の列にフラット化する」
  • 「'metadata' JSON列からフィールドを抽出」
  • 「抽出後に元のJSON列を保持する」
  • 「抽出されたJSONフィールドにプレフィックスを追加」

変換フィールド:

  • 「'userId' 列の名前を 'user_id' に変更します」
  • "'timestamp'フィールドを適切なTIMESTAMP型にキャスト"

データのフィルタリング:

  • 「内部IPアドレスを除外」
  • 「ステータスが'success'のレコードのみを含める」
  • 「'user_id'フィールドに空値を持つレコードを除外する」

テーブルの作成と変更:

  • 「認証イベントのみの新しいパース済みテーブルを作成する」
  • 「イベントタイプによって生データを別々のテーブルに分割する」
  • 「特定のフィールドのみを持つカスタムテーブルを追加する」
  • 「既存の'security_events'テーブルを修正して新しいフィールドを追加する」

列の保持を構成する:

  • "未加工テーブルの参照されていない列をすべて保持"
  • "明示的にマッピングされていない列を省略する"

検証とプレビュー:

  • 「このフィールド式を適用する前に検証する」
  • 「変換結果のプレビュー」
  • 「これらの変更を適用した後にサンプルデータを表示」

推奨事項を取得します:

  • "データが乱雑に見えますが、どのような変換が推奨されますか?"
  • 「対処すべきデータ品質の問題はありますか?」
  • 「この高null率列を処理する最適な方法は何ですか?」

その他のリソース​