こんにちは、 ネクストモード株式会社 の sobar です。
今回はAWS EKS 環境に対して、CrowdStrike のコンテナセキュリティ製品である Falcon Container Sensor for Linux をインストールする手順をご紹介します。公式のインストールスクリプトを使用し、手元の端末経由で AWS ECR へイメージをプッシュしてから EKS へ展開するといった流れとなります。
Falcon Container sensor for Linux は、Kubernetes環境のカーネルへのアクセス権がなくカーネルベースの Falcon sensor for Linux を導入できない Kubernetes クラスター内のコンテナワークロードのランタイムセキュリティを提供します。Falcon Container センサーは、ワーカーノード OS のカーネルで実行されるコードはなく、ユーザースペースで実行されます。
Cloud Workload Protection (CWP) 、Falcon Managed Containers (FMC)のどちらかのサブスクリプションが必要となります。※詳細につきましては弊社までお問い合わせください。
作業OS:ubuntu (WSL2)
Cluster:Amazon EKS on EC2(ap-northeast-1)
Tool:Docker, AWS CLI, kubectl, eksctl, jq
※現在はHelmが推奨されるケースも多いようですが、今回は手動制御が可能なDocker Run方式をご紹介する
CrowdStrikeテナントで作業を行います。サポートおよびリソース > APIクライアントおよびキー へ移動。
「新しい API クライアントを追加」から、以下のスコープを選択して作成。
クライアントIDとシークレットを控えます。
ホストのセットアップおよび管理 > センサーダウンロード へ移動。
「カスタマーID」をコピーして控えます。
作業端末(WSL2)で環境変数を設定し、EKS クラスターを構築します。
# CrowdStrike API情報
export FALCON_CLIENT_ID="<取得したClient ID>"
export FALCON_CLIENT_SECRET="<取得したClient Secret>"
export CID="<取得したCID (Checksum付き)>"
# AWS情報
export AWS_REGION="ap-northeast-1"
export CLUSTER_NAME="sobar-test-cluster"
eksctl create cluster --name $CLUSTER_NAME --region $AWS_REGION --nodes 2
(完了まで15~20分程度かかります)
CrowdStrike のレジストリからイメージをダウンロードし、自身の AWS ECR へアップロードします。 ※公式スクリプト falcon-container-sensor-pull.sh を使用します。
# スクリプトのダウンロードと権限付与
sudo curl -L -o sensor-pull.sh https://github.com/CrowdStrike/falcon-scripts/releases/latest/download/falcon-con
chmod +x sensor-pull.sh
# 現在利用可能な正しいバージョン番号を確認
sudo ./sensor-pull.sh -u "$FALCON_CLIENT_ID" -s "$FALCON_CLIENT_SECRET" -t falcon-container --list-tags
# バージョンを指定してダウンロード (例: 7.33.0-7205)
# ※ sudo は Docker 実行権限に応じて必要
sudo ./sensor-pull.sh -u "$FALCON_CLIENT_ID" -s "$FALCON_CLIENT_SECRET" -t falcon-container -v 7.33.0-7205 -p x86_64
# ECR リポジトリの作成
aws ecr create-repository --repository-name falcon-sensor/falcon-container --region $AWS_REGION
# リポジトリ URI の取得
export MY_REGISTRY=$(aws ecr describe-repositories --repository-name falcon-sensor/falcon-container --region $AWS_REGION --query "repositories[0].repositoryUri" --output text)
(※echo "Target Registry: $MY_REGISTRY"で取得・設定を確認)
# ダウンロードしたイメージ名を変数にセット
# ※ docker images | grep falcon で表示された正確なタグを確認
export LATESTSENSOR="registry.crowdstrike.com/falcon-container/us-2/release/falcon-sensor:7.32.0-7103.container.Release.US-2"
# タグ付けとプッシュ
sudo docker tag "$LATESTSENSOR" "$MY_REGISTRY":latest
aws ecr get-login-password --region $AWS_REGION | sudo docker login --username AWS --password-stdin "$MY_REGISTRY"
sudo docker push "$MY_REGISTRY":latest
docker run コマンドを使用してインストール用マニフェスト (YAML) を生成し、そのまま kubectl で適用します。
# EKS 用のプル・トークン生成
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
IMAGE_PULL_TOKEN=$(echo "{\"auths\":{\"${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com\":{\"auth\":\"$(echo AWS:$(aws ecr get-login-password --region $AWS_REGION)|base64 -w 0)\"}}}" | base64 -w 0)
# 保護対象の Namespace 指定
export NAMESPACES="default"
# (※NAMESPACES 変数を設定しない場合はプルシークレットがデフォルトの名前空間にしか作成されない模様)
# インストーラーの実行 (YAML生成 -> 適用)
sudo docker run --rm "$MY_REGISTRY":latest \
-cid "$CID" \
-image "$MY_REGISTRY":latest \
-pulltoken "$IMAGE_PULL_TOKEN" \
-namespaces "$NAMESPACES" \
| tee falcon-container.yaml | kubectl create -f -
6. 動作確認
# Falcon の Injector ポッドが起動確認
kubectl get pod -n falcon-system
STATUS が Running(&READY1/1) であれば正常です。
テスト用のアプリケーション (Nginx) をデプロイし、センサーが自動注入されるか確認します。
# Pod 作成
kubectl create deployment nginx-deploy --image=nginx --replicas=1 -n default
# 数秒待ってから詳細を確認
kubectl describe pod nginx-deploy -n default | grep falcon
参考
さいごに
今回はFalcon Container センサーのインストールについてご紹介いたしました。※インストールに使用したコマンドはあくまでも参考までとして見ていただければと思います。
この記事が、皆様のセキュリティ対策や、CloudSecurity の運用の一助となれば幸いです。
ネクストモードでは、Netskopeをはじめ、OktaやNetskopeを活用したSaaS・生成AIの包括的なセキュリティ対策をご支援しています。ご興味のある方は、ぜひお気軽にご相談ください!