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にセキュリティアラートのトリアージを依頼すると、次のフェーズで動作します:
- 調査を計画します。 Genie は、何かを実行する前に短いプランを提示します。これには、悪意のある説明と並行してテストするためのいくつかの良性の説明も含まれるため、その推論に従うことができます。
- コンテキストを収集します。 Genieは、アラートを生成した検出ルールを読み取り、そのルールが以前にどれだけ頻繁に発生したかを確認してノイズの多さを判断し、アラートの シグナルを調査します。
- エビデンスを調査します。 Genieは、ユーザー、IPアドレス、ホストなど、アラート内のエンティティに基づいて各説明をテストし、セキュリティデータに対してクエリーを実行します。
- 判定に達します。 Genieは、収集した証拠に基づいて、アラートを真陽性、偽陽性、または良性陽性として分類します。
- アラートを更新します。 Genieは調査コメントを投稿し、アラートの分類、状態、担当者を設定します。
アラートのトリアージ
Genieでセキュリティアラートをトリアージするには:
- Explore(探索) > Alerts(アラート) に移動し、調査するセキュリティアラートを開きます。
- アラートの上部にある Genieでトリアージ を選択します。Genieが開き、調査が起動されます。以前にこのアラートをトリアージしたことがある場合、ボタンは「 トリアージの再開 」に変わり、以前の調査が再開されます。
- Genieが提案する計画を確認し、コンテキストを収集して調査クエリーを実行するプロセスに従ってください。
- 判定と、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にクエリーさせたいデータに接続します:
- 関連するすべての解析済みテーブル
signalsやなどのシステムテーブルoperational_alerts- 脅威インテリジェンステーブル
Genie Agentは最大30個のテーブルをサポートします。より大きな環境では、トピック固有のエージェント(「Endpoint RA」など)を作成してください。
ステップ2: Research Agent をオンにする
新しいGenie Agentで、クエリーモードを Chat から Research Agent に切り替えます。これにより、Genieは単一の質問に答えるのではなく、データ全体で多段階の分析を実行できるようになります。
ステップ 3: 指示を追加する
適切な指示は、Genieがあなたのデータモデルを理解し、質問に答えるときにどこを見るべきかを判断するのに役立ちます。 構成 > 指示 > テキスト に移動し、以下の領域をカバーするコンテキストを追加します。
一般的なガイダンス:
- ユーザーが明示的に生データについて尋ねない限り、解析済みテーブルにクエリーを集中させます。
- LakewatchはApache Sparkを使用して、固定スケジュールで検出ルールを実行します。
主要な用語:
- シグナル: 検出ルールがその条件に一致したときに生成されるアラート。
- エンティティ: ユーザー、ホスト、アプリケーション、またはネットワークデバイス。
- アセット: セキュリティ状態が追跡される保護対象のリソース。
- 検出ルール: イベントデータで特定のパターンを検索する保存済みの SQL クエリー。
- データソース: 外部ソース( AWS CloudTrail 、 Akamai WAFなど)、既存の Unity Catalog テーブル、または Lakeflow Connect コネクタからセキュリティデータを取り込むデータパイプライン。
スキーマコンテキスト:
- 解析されたテーブルには、宣言されたフィールドとLakewatchで管理される列(
lw_id、lw_meta、lw_observables)が含まれます。 - 重大度レベル: 1=情報、2=低、3=中、4=高、5=重大、6=致命的。
脅威インテリジェンスフィードのコンテキスト:
mitre_enterprise_attack_goldテーブルには、最新の脅威フィードが含まれています。ユーザーはこのテーブルを使用して、検討すべき脅威を理解できます。
手順で脅威インテルテーブルを明示的に指定することが重要です。このコンテキストがないと、Genie はインテルフィードではなく、他のテーブル (シグナルなど) を使用して脅威の質問に答える可能性があります。
ステップ4:脅威のクエリー
エージェントを構成したら、Genieに脅威の状況に関する質問をします。
Genieが脅威インテリジェンス テーブルを自動的に参照しない場合は、次のいずれかを行います:
- 質問の中で明示的にテーブルに名前を付けてください: 「mitre_enterprise_attack_goldテーブルを使用して、どのような脅威を懸念すべきですか?」
- 脅威関連のクエリー用のテーブルを Genie が指すように指示を追加します (ステップ 3 を参照)。
クエリーの例
クエリー | Genieが返すもの |
|---|---|
「どのような脅威を懸念すべきですか?」 | シグナルから取得したアクティブな脅威のサマリー |
「mitre_enterprise_attack_goldテーブルを使用して、どのような脅威を懸念すべきですか?」 | インテリジェンスフィードからのMITRE ATT&CK手法、脅威アクターグループ、マルウェアファミリーの分析 |
「考慮すべき、または探すべき新しい脅威はありますか?」 | 最近更新された攻撃パターン、新たに出現したマルウェアファミリー、進行中のキャンペーン |
「コマンドおよび制御の戦術の検出範囲のギャップを見つける。」 | MITRE ATT&CK戦術全体でのギャップ分析 |
「IP 5.161.151.88からのすべてのアクティビティをレビューできますか?」 | 特定のエンティティの調査の要約 |
「企業の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時間以内に複数の国からログインしているユーザーを検出」(地理的異常)
- 「深夜以降に実行されるデータベースクエリーを検出」(時間ベース)
既存のクエリーを変更:
- 「サービスアカウントを除外するフィルターを追加」
- "ノイズを減らすにはthresholdを引き上げてください"
- "営業時間後のフィルター処理と組み合わせる"
クエリーをテストしてデバッグする
- 「この検出クエリーを実行して結果を表示」
- 「クエリーの結果が返されないので、デバッグを手伝ってください」
- 「このクエリーは非常に低速ですので、最適化を支援してください」
- 「これにより多くの偽陽性が生成されるため、どのように調整すればよいでしょうか?」
MITRE ATT&CKにマッピングする
- "ブルートフォース攻撃に適用される MITRE 手法は何ですか?"
- 「この検知を適切な戦術と技術にマッピングする」
- "テクニック T1078 の詳細を表示"
信号出力を定義する
- 「このアラートのサマリーTemplateを作成」
- 「どのコンテキスト フィールドを含めるべきですか?」
- 「サンプルデータでアラートがどのように表示されるかを確認する」
スケジュールとコンピュートのセットアップ
- 「これを15分ごとに実行するように設定してください」
- 「午前2時に毎日コンプライアンスチェックを設定する」
- 「コストを節約するため、営業時間中にのみこれをラン」
- 「自動コンピュートと専用コンピュートのどちらを使用すべきですか?」
既存のルールで作業する
- 「『ブルートフォースログイン』ルールの設定を表示して」
- 「このワークスペース内のすべての検出ルールを一覧表示」
- 「既存のルール内の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フィールドにプレフィックスを追加」
フィールドを変換
- "roleに'admin'が含まれる場合にTrueとなる'is_admin'という新しいフィールドを追加"
- 「'userId' 列の名前を 'user_id' に変更します」
- "'timestamp'フィールドを適切なTIMESTAMP型にキャスト"
- 「姓名からユーザーのフルネーム用のコンピュートフィールドを作成する」
データをフィルタリング
- 「内部IPアドレスを除外」
- 「ステータスが'success'のレコードのみを含める」
- 「'user_id'フィールドに空値を持つレコードを除外する」
データの結合とエンリッチデータ
- 「ユーザーディレクトリと結合して部門情報を補完」
- 「外部参照テーブルからIPレピュテーションデータを追加する」
- 「別のUnity Catalogテーブルとの結合を構成するにはどうすればよいですか?」
テーブルを作成して変更
- 「認証イベントのみの新しいパース済みテーブルを作成する」
- 「イベントタイプによって生データを別々のテーブルに分割する」
- 「特定のフィールドのみを持つカスタムテーブルを追加する」
- 「既存の'security_events'テーブルを修正して新しいフィールドを追加する」
列の保持を構成する
- "未加工テーブルの参照されていない列をすべて保持"
- 「参照されていない列を1列に埋め込む」
- "明示的にマッピングされていない列を省略する"
検証とプレビュー
- 「このフィールド式を適用する前に検証する」
- 「変換結果のプレビュー」
- 「これらの変更を適用した後にサンプルデータを表示」
推奨事項の取得
- "データが乱雑に見えますが、どのような変換が推奨されますか?"
- 「対処すべきデータ品質の問題はありますか?」
- 「この高null率列を処理する最適な方法は何ですか?」
構成オプションを理解する
- 「addTablesとmodifyTablesの違いを説明してください」
- 「unreferencedColumns.preserve」は何をしますか?
- 「エンリッチメントにおける静的結合はどのように機能しますか?」