Elastic Securityで独自の検出 as Codeを構築する

当初から、Elasticの検出-rulesリポジトリには、Elasticの事前構築済み検出ルールだけでなく、ElasticのThreat Research and Detection Engineering(TRaDE)チームが使用するテストスイート、CLIコマンド、自動化スクリプトなど、検出ルール管理のための追加ツールも含まれていました。

ElasticのTRaDEチームは長年にわたりDetections as Code(DaC)プラクティスに従い、Elasticの事前構築済み検出ルールおよびエンドポイントルールの社内開発とリリースプロセスをサポートしてきました。これまでお客様は主に検出-rules CLIを使用してきました。これはKibana APIラッパーとCLIコマンドを提供し、Elastic SIEMでのルール管理を容易にするものでしたが、ユーザーはElasticの社内プロセスと厳格な制限を採用する必要がありました。

DaCがより主流となり、オープン性へのコミットメントを継続する中で、ユーザーがElasticの検出ルールリポジトリを使用して独自のDaCプロセスを容易に開始できるよう取り組んでいます。このDaCの拡張は、これまでの検出ルール特徴を基盤とし、検出エンジニアにエンドツーエンドのエクスペリエンスを提供します。

この手法は、セキュリティチーム間の連携を強化し、アップデートを合理化し、進化する脅威に対してより迅速な対応を可能にします。根本的に、私たちは、お客様が自身のプロセスに組み込めるよう社内の機能をより多く公開することで、お客様の検出エンジニアリングの成熟度向上に取り組んでいます。

なぜ検出 as Code(DaC)なのか?

「コードとしてのインフラ(IaC)」のようなDevOpsの概念を聞いたことがあれば、「コードとしての検出(Detections as Code)」も馴染み深いものに感じられるはずです。IaCがコードを介したインフラの管理とプロビジョニングに重点を置いているのに対し、DaCは同様の原則を適用してセキュリティ検出ルールをコードとして管理します。「コードとしての検出」は、ピアレビュープロセスやツール、自動化されたCI/CDパイプラインを活用し、検出管理にコーディングのベストプラクティスを取り入れることを目指しています。

DaCの利点には、検出の質の高さ、検出導入の柔軟性とスケール、そして変更管理要件への準拠が含まれます。

1 DACロック

DaCの採用は、いくつかの要因によって推進されています:

  • セキュリティチームの成熟度向上:DaCを導入することで、セキュリティチーム内での成熟した反復可能なプロセスの開発が促進されます。また、体系的なピアレビューと厳格なテストを通じて、高品質な検出の維持をサポートします。

  • 増え続けるルールセット: ルールの数が増加するにつれ、DaCなしで検出ルールを保守することは困難になります。

  • 脅威の状況の拡大:新たな脅威からProtectするために必要なカバレッジの広さは、多様なスキルセットに適した拡張性のあるアプローチを必要とします。

  • 自動化の広範な採用: IaC原則の採用に代表される、テクノロジー環境における自動化への広範な動きは、セキュリティチームが使用するすべてのツールにおいて、より高度な自動化機能を求めています。DaCは、ルール管理を自動化されたワークフローに統合することでこの傾向に沿うものであり、一貫性、効率性、そして新たな脅威に迅速に対応する能力を確保します。

  • コンプライアンスおよびガバナンス要件:多くの組織が、SIEM検出のピアレビュー、変更管理、および災害復旧に関する認証コンプライアンス要件を満たすためにDaCを採用しています。DaCを導入することで、厳格なガバナンス基準に従ってセキュリティルールが開発、レビュー、維持されるようになり、コンプライアンスの監査可能な証拠が提供されます。

DaCアプローチと現在の開発の焦点

DaCはあくまで一つのアプローチであり、ユーザーによってインフラやプロセスのニーズは異なるため、組織でElastic Securityを使用してDaCを設計・実装する方法は複数存在します。しかし、主要コンポーネントは同じままであり、ユーザーには以下が必要です:

  • Elastic Securityソリューション 

  • 任意のバージョン管理システム

  • 検出を含むレポジトリ

  • すべてのコンポーネントを接続し、主要なプロセスを自動化し、UIを提供するツール

当社の初期の取り組みは、お客様のDaC開発を加速させるためにこれらのコンポーネントを提供することであり、第1フェーズでは、主要な構成要素として検出-rulesリポジトリに注力しました。

アルファ版を試してみましょう!

私たちは複数のユーザーと関わり、DaCに関する彼らのニーズと優先事項を把握しました。いただいたフィードバックに基づき、以下の機能強化が行われました。

  • 機能強化1:第1段階として、カスタムルール管理のために検出-rulesレポジトリをより使いやすくすることに注力しました。カスタムルール管理にフォークした検出-rulesレポジトリを使用する際のユーザーの競合(マージコンフリクト)を最小限に抑えることを目指しました。現在、組み込まれたルールローダーのスキーマバリデーターを使用してユーザーが読み込めるよう、カスタムルールディレクトリを指定する設定を提供しています。

  • 機能強化 2: Elasticが提供するユニットテストのうち、カスタムルールに対して実行するものとスキップするものを設定できるようになりました。一部のユニットテストを利用してベストプラクティスに従いたいというお客様がいる一方で、Elasticのルール管理専用に設計されたテストもあることを理解しています。今後は、実行したいテストを設定ファイルで指定できます。

  • 機能強化3:検出に加え、例外やアクションといった追加のルール設定を管理する必要性を認識したため、リポジトリ内でそれらを柔軟に管理できるようサポートを追加しました。

概念の階層とレキシコン

この取り組みの主な成果のひとつは、私たちの考えや検討事項を文書化したことです。外部ユーザーにとってより柔軟になるよう検出-rulesリポジトリをリファクタリングしましたが、DaCは単にインストール可能なツールではないと認識しています。これは、セキュリティルールの管理方法における根本的な変革です。

特定のDaCワークフローを導入する前に検討できるよう、概念の階層と用語集を作成し、ドキュメント化しました。

2 DaCのハイレベルコンポーネント
DaCの主要コンポーネント

参照ドキュメントおよびスライドでは、DaCのコアコンポーネントについて詳しく説明しています: 

  1. バージョン管理システム(VCS)内でのルールの保守

  2. VCSから各Platformへのルールの同期

  3. Platform内でのルール管理

  4. PlatformからVCSへのルール同期

さらに、DaCのコアコンポーネントを管理するためのさまざまなモデルを、以下のいずれかを使用して文書化しました。

  1. 信頼できる情報源としてのVCS

  2. 信頼できる情報源としてのPlatform

  3. VCSとPlatform間のデュアル同期

ご希望のアプローチに応じて、さまざまな詳細レベルを提供します。Elastic Securityソリューションから離れるほど、内容は抽象的になります。

他にどのようなものを提供していますか?

先日開催された BsidesOK24 において、私たちはElasticのDaCへのアプローチと、アルファブランチにある 検出-rules リポジトリの活用方法について議論しました。DaCの実装方法に関するミニシリーズとして分割することも可能ですが、それらの推奨事項は、お客様の環境にどのように実装するのが最適かという点において純粋に推測の域を出ないものとなります。そのため、ここでは「コードとしての検出(detections as code)」を独自に展開するためのコアとなる原則を共有します。

3 BSides OK 2024
BSides OK 2024

スライドこれらのスライドでは、高レベルのコンポーネント、ワークフロー、および区分について説明しています。また、検出ルールのリポジトリを使用する利点や、クイックスタートのエンドツーエンドの参照例についても触れています。 

リファレンスドキュメントこのリファレンスドキュメントには、特にElastic Security環境内での検出ルールの開発、デプロイ、管理に関する考慮事項や長所・短所がまとめられています。特に以下の方に役立ちます:

  • 自動化を活用してルール管理を効率化し、新たな脅威に迅速に対応したいと考えているSecurityアナリスト

  • 検出ロジックの開発、テスト、導入を効率化するための手法を求めている検出エンジニア

  • チーム内でルールバージョン管理、コラボレーション、品質保証のベストプラクティスを実装しようとしているSecurityチームリード

  • CI/CDパイプラインへのセキュリティプラクティスの統合に携わり、ワークフロー内でのより一貫性のある自動化されたセキュリティアプローチを目指すDevOpsエンジニア

  • アジリティ、再現性、信頼性を高めるために、セキュリティ運用にas-codeの原則を取り入れる方法を模索しているITセキュリティアーキテクト

より具体的な方向性を求める方のために、検出ルールのアプローチを推奨しています。alpha版の検出ルールブランチ、本スライド内のコンテンツ、およびこの参照ガイドは変更される可能性があることにご注意ください。変更を最終的に `main` ブランチへ移行した後、それに応じてコンテンツを更新します。

要約と次のステップ

要するに、第一段階として、カスタムルールの管理において検出ルールリポジトリをより使いやすくすることに注力しました。カスタムルールの管理にフォークした検出ルールリポジトリを使用するユーザーの、マージコンフリクトを最小限に抑えることを目指しています。また、リポジトリの変更に伴い、メリットとデメリットを考慮したDaC(Detection as Code)のライブガイドを開始しました。これにより、すぐに活用を開始できます。最後に、BsidesOKでの当社のアプローチを、お客様のカスタムセットアップに適用可能な具体的なコマンドやユースケースとともに共有し始めました。

現在アルファステージのため、関心をお持ちのユーザーの皆様には、検出-rules/DAC-特徴ブランチでテストを行い、フィードバックをお寄せいただけますと幸いです。

詳細については、Community Slackの #セキュリティ-rules-dac チャンネル、または検出ルールのissueトラッカーからお気軽にお問い合わせください。

本記事に記述されているあらゆる機能ないし性能のリリースおよびタイミングは、Elasticの単独裁量に委ねられます。現時点で提供されていないあらゆる機能ないし性能は、すみやかに提供されない可能性、または一切の提供が行われない可能性があります。