
Falco(CNCF を卒業したランタイムセキュリティプロジェクト)が、AWS により検証済みの Amazon EKS アドオンとして正式に利用可能になったことをお知らせします。これは、Amazon Elastic Kubernetes Service(EKS)ユーザーがランタイムセキュリティをより手軽に、より簡単にデプロイできるようにするうえでの重要なマイルストーンです。
なぜ重要なのか
ランタイムセキュリティは、クラウドネイティブ環境において不可欠な要件となっています。従来のセキュリティツールは既知の脆弱性やシグネチャに焦点を当てますが、現代の脅威には、ゼロデイ攻撃や内部脅威をリアルタイムで検知できる行動監視が求められます。
Falco はカーネルレベルでシステムコールを監視することでこのニーズに応え、コンテナやホスト内部で実際に何が起きているのかを深く可視化します。Falco が EKS アドオンとして提供されることが画期的である理由は次のとおりです。
1. デプロイと管理の簡素化
現在、多くのユーザーは Helm チャートを使って Falco をデプロイしていますが、その場合は Helm リリースの管理、values ファイルの更新、アップグレードの手動対応が必要になります。EKS アドオンを使うと、次のメリットがあります。
- Helm を必要としない、単一コマンドでのインストール
- EKS クラスターのライフサイクルとの自動統合
- 別途 Helm リポジトリやリリースを管理する必要がない
- EKS アドオンの更新メカニズムによる更新の簡素化
2. AWS サービスとのシームレスな統合
公式アドオンとして、Falco は AWS エコシステムに自然に統合されます。
- セキュリティイベントを Amazon CloudWatch へ直接ストリーミング
- syscall 監視に加え、AWS CloudTrail イベントをネイティブにサポート
- EKS クラスターのメタデータとの自動タグ付けと相関付け
- 安全な AWS サービスアクセスのために事前設定された IAM Roles for Service Accounts(IRSA)
3. ライフサイクル管理の自動化
Falco に重要なセキュリティ更新や新しい検知機能を含む新バージョンがリリースされた場合でも、AWS が EKS バージョンとの互換性をテストしているため、安心して更新できます。
アップグレード前には、新しいバージョンに破壊的変更がないか、リリースノートを確認することが不可欠です。
4. クラスター間で一貫したデプロイ
複数の EKS クラスターを管理する組織にとって、このアドオンは、Helm ベースのデプロイで起こり得る設定ドリフトなしに、すべての環境で一貫した Falco デプロイを実現します。
はじめに
EKS クラスターへの Falco のインストールは、いまや単一コマンドを実行するだけで完了します。開始手順は次のとおりです。
前提条件
- Kubernetes 1.25 以降で稼働している EKS クラスター
- Falco EKS アドオンは、Falcoctl アーティファクトレジストリからルールとプラグインをダウンロードするためのネットワーク接続を必要とします。EKS ノードが次へアクセスできることを確認してください。
- https://falcosecurity.github.io/falcoctl/index.yaml(Falcoctl レジストリのインデックス)
- ghcr.io(アーティファクトをダウンロードするための GitHub Container Registry)
インストール
注: 執筆時点での最新アドオンバージョンは v0.41.0-eksbuild.1 です
オプション 1: AWS CLI を使用
export ADD_ON_VERSION=v0.41.0-eksbuild.1
aws eks create-addon \
--cluster-name <cluster-name> \
--addon-name sysdig_falco \
--addon-version ${ADD_ON_VERSION} \
--region <cluster-region>
オプション 2: eksctl を使用
export ADD_ON_VERSION=v0.41.0-eksbuild.1eksctl create addon \
--cluster <your-cluster-name> \
--name falco \
--version ${ADD_ON_VERSION} \
--region <cluster-region>
オプション 3: AWS コンソールから
- AWS Console で EKS クラスターに移動します
- 「Add-ons」タブをクリックします
- 「Get more add-ons」をクリックし、下部の セクション内で「Falco」を検索します
- 右側のチェックボックスにチェックを入れ、次のステップへ進みます
- IAM ロールとバージョンを設定します
- 「Add」をクリックします
Falco ルールについて
Falco ルールは検知エンジンの中核です。各ルールは、検知すべき疑わしい、または悪意のある振る舞いを記述するセキュリティポリシーを定義します。ルールは YAML で記述され、システムコール、ファイルアクセス、ネットワーク接続、プロセスの挙動をリアルタイムに分析できる強力な条件言語を使用します。
典型的な Falco ルールは次で構成されます。
- Condition: 検知する具体的な振る舞いパターン(例: 「コンテナ内でシェルが起動される」)
- Output: イベントに関するコンテキスト情報を含むアラートメッセージ
- Priority: 重大度レベル(INFO、WARNING、ERROR、CRITICAL)
Falco には、初期状態で次のような包括的なルールセットが含まれています。
- コンテナ内のターミナルシェル
- コンテナ内での Netcat によるリモートコード実行
- コンテナ内で新しいバイナリを配置して実行
- Linux カーネルモジュールのインジェクションを検知
- ほか多数…
設定されているルールをより詳しく確認したい場合は、Github でホストされている Falco ルールファイルをご覧ください。
Falco ルールのチューニング
EKS アドオンはデフォルトルールを使用しますが、ConfigMap を使って独自ルールを読み込むことでカスタマイズできます。
仕組み
Falco はルールファイルを順番に読み込み、次のことが可能になります。
- 上書き 既存ルール(優先度変更、無効化、条件の変更)
- 追加 新しいカスタムルール
- 維持 すべてのデフォルトルールをそのまま保持
ルールをカスタマイズする手順
- ルールの上書きを含む ConfigMap を作成します(この例ではマニフェストファイル名は「my-falco-rules.yaml」です)。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-falco-custom-rules
namespace: falco
data:
my-falco-rules.yaml: |
- rule: Terminal shell in container
override:
enabled: replace
enabled: false
2. ConfigMap を適用します。
kubectl apply -f my-falco-rules.yaml
3. DaemonSet をパッチして、カスタムルールをマウントします。
kubectl patch daemonset falco -n falco --type=json -p='[
{bas
"op": "add",
"path": "/spec/template/spec/volumes/-",
"value": {
"name": "custom-rules-volume",
"configMap": {
"name": "my-falco-custom-rules",
"items": [{
"key": "my-falco-rules.yaml",
"path": "my-falco-rules.yaml"
}]
}
}
},
{
"op": "add",
"path": "/spec/template/spec/containers/0/volumeMounts/-",
"value": {
"name": "custom-rules-volume",
"mountPath": "/etc/falco/rules.d/my-falco-rules.yaml",
"subPath": "my-falco-rules.yaml",
"readOnly": true
}
}
]'
4. Pod 内で、カスタムルール(my-falco-rules.yaml)がデフォルトルールとともに正しく読み込まれていることを確認します。
kubectl logs -n falco -l app.kubernetes.io/name=falco -c falco | grep -i "rules"
Tue Jun 1711:27:302025: /etc/falco/falco_rules.yaml | schema validation: ok
Tue Jun 1711:27:302025: /etc/falco/rules.d/my-falco-rules.yaml | schema validation: ok
-
重要な注意点
- 永続性: EKS アドオンの更新後は、DaemonSet のパッチを再適用する必要があります
- テスト: ルール変更は、必ず最初に非本番環境でテストしてください
セキュリティイベントの確認
いずれかの Falco ルールがトリガーされると、イベントが Pod の出力に表示されます。次のコマンドで確認できます。
kubectl logs -n falco -l app.kubernetes.io/name=falco
Falco の出力はバッファリングされる場合があることに注意してください。
次のステップ
- ルールをチューニング: デフォルトのルールセットから始め、ワークロードのパターンに基づいて段階的にカスタマイズします
- アラート設定: 重要な Falco イベントに対する CloudWatch アラームを設定します
- ベストプラクティスの確認: ランタイムセキュリティについては Amazon EKS Best Practices Guide を参照してください
トラブルシューティング
問題が発生した場合は、Falco Pod のステータスを確認してください。
kubectl get pods -n falco
kubectl logs -n falco -l app.kubernetes.io/name=falco
kubectl describe daemonset falco -n falco
最新情報の追跡
現在、AWS は EKS アドオン更新の自動通知を提供していません。次のコマンドを使って、新しいバージョンがないか定期的に確認することを推奨します。
aws eks describe-addon-versions --addon-name sysdig_falco --kubernetes-version <your-k8s-version> --region <your-region>
まとめ
Falco が EKS アドオンとして利用可能になったことで、AWS ユーザーは他の AWS サービスと同じ手軽さで、エンタープライズグレードのランタイム脅威検知をデプロイできるようになりました。コンテナエスケープへの対策、暗号資産マイナーの検知、コンプライアンスの担保など、どのような目的であっても、Falco は必要な深い可視性を提供します。
Falco アドオンをインストールして、今すぐ Amazon EKS ワークロードのセキュリティを強化しましょう。
Kubernetes とコンテナセキュリティ
翻訳元: https://www.sysdig.com/blog/falco-amazon-eks-add-on
