
カーネル空間で実行ファイルレベルのアクセスポリシーを強制し、LSMフックを介してプロセスをサンドボックス化し、ファイル、ネットワーク、GPUへのアクセスを制限するeBPFベースのLinuxエージェント。
Bomfather Agentは、カーネル空間で動作し、ポリシーに基づいてアクションをブロックするeBPFベースのエージェントです。
私たちは、既存のソリューションで抱えていた問題を解決するためにこのエージェントを開発しました。
これらの点は、このプロジェクト全体を通じた私たちの北極星です。すべての機能と開発は、これらの点を満たすことを目的としています。
このリポジトリではAI生成コードの使用を避けるよう努めており、AI生成のPRは受け付けません。
(システムでLSMを有効にする方法については、こちらのガイドを参照してください: https://docs.bomfather.dev/prerequisites)
ソースからビルドするには、以下のツールがインストールされている必要があります:
go 1.26 or higher
make
clang
llvm
llvm-14
protobuf-compiler
git
Debian/Ubuntuでは、Go以外のビルド依存関係を次のようにインストールできます:
apt-get update \
&& apt-get install -y --no-install-recommends \
clang \
llvm \
llvm-14 \
protobuf-compiler \
&& rm -rf /var/lib/apt/lists/*
その後、次のコマンドでエージェントをビルドします:
make
クイックスタートとして、次のコマンドを使用してデフォルトポリシーでエージェントを実行できます:
sudo ./agent run --config config.yaml
これにより、設定ファイルで定義されたポリシーでエージェントが実行されます。
その後、必要に応じて次のコマンドを使用してエージェントのステータスを確認できます:
sudo ./agent status --help
statusコマンドは、主にエージェントからPrometheusメトリクスを読み取るためのものです。
ポリシーは、エージェントが適用するルールを定義するYAMLファイルです。
設定は主にpoliciesとattributesの2つのセクションで構成されています。policiesセクションは、誰が保護されたリソースにアクセスできるかを定義します。policiesセクションは、どの実行ファイルが保護されたディレクトリやIPにアクセスできるかを定義します。attributesは実行ファイルの境界を定義するため、属性によって実行ファイルを単一のIPにのみ接続させ、他のIPへの接続をブロックすることができます。
ポリシーを作成する方法は多数あるため、機能ごとに、その機能のポリシーを作成する方法を説明する専用のセクションをドキュメントに用意しています: https://docs.bomfather.dev/configuration-guide。
ただし、クイックスタートのユースケースとしては、次のポリシーファイルを使用できます:
policies:
- executable: "filepath = [absolute-path]/app/signer"
can_access_dirs:
- "[absolute-path]/secrets/keys : read"
is_allowed_to_access_ip:
- "kms.us-east-1.amazonaws.com:443"
attributes:
- path: "type = executable | filepath = [absolute-path]/app/signer"
can_only_access_ips:
- "kms.us-east-1.amazonaws.com:443"
このポリシーにより、signerをサンドボックス化し、システム上でそのデータにアクセスできる唯一のプロセスであることを保証できます。
policiesセクションでは、実行ファイルsignerが/secrets/keysディレクトリとAWS KMSエンドポイントに関連付けられたIPにアクセスできる唯一のプロセスであることを定義しています。
attributesセクションでは、実行ファイルsignerがAWS KMSエンドポイントにのみアクセスを許可され、他のIPにはアクセスできないことを定義しています。
この比較的シンプルな設定で、わずか10行の設定でsignerプロセス(実世界ではより大きなシステムの一部である可能性があります)を大幅に強化することができました。
ドキュメントには、より実践的な例がいくつかあります: https://docs.bomfather.dev/examples/gpu。
オプションとして、エージェントが検出した違反をエクスポートしたい場合は、APIキーを含めると、エージェントは違反をBomfatherサーバーに送信します。
しかし最も重要なのは、これは必須ではないということです。APIキーがなくてもエージェントは同じように機能します。APIキーを含めない場合に無効になる機能はなく、APIキーが含まれていない場合は、いかなる種類のデータもBomfatherサーバーに送信されません。
Bomfatherサーバーを使用したい場合は、[email protected]までお問い合わせください。