blogトップへ戻る

CrowdStrike Falcon SensorのインストーラーをAPIでダウンロードする方法

2021.3.12

スリーシェイク Sreake事業部の堤です。だんだん暖かくなってきましたね。春の訪れを感じる。

クラウドストライク(CrowdStrike)という企業をご存知でしょうか。

クラウドストライクは米国の新興セキュリティベンダーの一つで、かなり注目されている企業。その主力製品であるFalconは、EDR(Endpoint Detection Response)のカテゴリに含まれる製品だが、この分野では世界的なリーダーである。導入している企業数も多いためか、世界中からデータをかき集めることで製品を更に向上させることができる。これはクラウドストライクの強みではないかと思う。(※クラウドストライクの詳細に関しては、本記事では触れません)

ちなみに、クラウドストライクは以下の書籍にも掲載されており、2025年を制覇する企業にノミネートされていたりする。

2025年を制覇する破壊的企業 (SB新書)

今回の記事では、クラウドストライクのFalconセンサーのパッケージファイルをAPI経由で簡単に取得する方法をご紹介します。Falconセンサーは、クライアントやサーバーにインストールするエージェントのようなものです。

Falconセンサーのインストール/アップデートの課題

Falconは、Windows、Linux、macOSにインストールすることができます。また、この製品はKubernetesへのPodでのデプロイもサポートされおり、Dockerイメージを作ればOKです。Helmチャートも公開されている。

CrowdStrike/falcon-helm

ただ、Dockerイメージを作成するにあたっては、通常はFalconセンサーのインストーラパッケージ(rpm/deb形式)をFalconコンソールにログインしてからダウンロードする必要がある。もちろんこれは手作業になるため、いわゆる「トイル」に当たる。

しかも、1〜2ヶ月に1度の頻度で最新版のセンサーがリリースされているため、Kubernetesクラスタを大量に持っている組織にとっては辛いはず。。。このような手間がかかると、ソフトウェアを最新に保つことができず、セキュリティ的なリスクも出てくるであろう。

Falcon APIsを使ったセンサーファイルのダウンロード

「FalconのAPIなどを使って自動的にダウンロードできる仕組みがないかなー??」とFalconのドキュメントを読み漁ってみたところ、Falcon APIsのなかに「Sensor Download API」が存在することがわかった。世の中はよくできている。僕が考えて思いつくようなことは、すでにどこかの誰かさんが実現しているw

公式ドキュメントは、残念ながらFalconのコンソールにログインした後でないと読めません・・・しかし、GitHubにGo言語のSDKがあります。

CrowdStrike/gofalcon

そのなかに、Falcon Sensor Downloadのサンプルコードもあるので、これを試して見たいと思う。

↓サンプルコード

CrowdStrike/gofalcon

簡単な流れ

  1. Falconのコンソール画面からAPIsの Client IDとClient Secretを作ります。
  2. 取得したClient IDとClient Secretを環境変数に投入します。

export FALCON_CLIENT_ID=”***********”
export FALCON_CLIENT_SECRET=”******************************”

最後にサンプルコードをビルドして実行するとこんな感じになります。

% ./crowdstrike-download-client
Missing –os-name command-line option. Available OS names are:
[Amazon Linux, Debian, RHEL/CentOS/Oracle, SLES, Ubuntu, Windows,
macOS]
Selected OS Name: Amazon Linux
Missing –os-version command-line option. Available version are: [1, 2, 2 – arm64]
Selected OS Version: 2
Downloaded Falcon Kernel Sensor for AMI/Amazon to falcon-sensor-
6.16.0-11308.amzn2.x86_64.rpm

サンプルコードは対話的にOSやバージョンを入力していく形式になっているが、KubernetsノードのOSやバージョンが限定されている場合は、予め固定に設定しておけばOK。

この仕組を応用すれば、CI/CDで自動的に最新のセンサーバージョンをダウンロードしてDockerイメージのビルドといったことも可能。これでトイルは解消できる!

というわけで、今回の記事は以上。コメント等お気軽にどうぞ!

おまけ

本日、会社のブログで、僕のインタビュー記事がアップされたので、これも合わせて御覧ください。