
Kafkaクラスターに潜むものを検知しましょう。
Kafkaクラスターに潜むものをキャッチします。
Kcatcherは、Kafkaクラスター構成を列挙・評価するためのコマンドラインユーティリティです。Apache Kafkaクラスターに接続し、ブローカー、トピック、ACL、さらにはメッセージのサンプルに関する詳細情報を取得します。セキュリティ監査、インフラストラクチャ評価、またはKafka環境で何が動いているかを把握するのに最適です。

動作するGo環境があれば、次のようにインストールできます。
go install github.com/RoseSecurity/kcatcher@latest
パッケージをインストールするには、以下のコマンドでリポジトリを自動的にセットアップできます。
curl -1sLf \
'https://dl.cloudsmith.io/public/rosesecurity/kcatcher/setup.deb.sh' \
| sudo -E bash
リポジトリを構成したら、次のコマンドでインストールできます。
apt install kcatcher
git clone [email protected]:RoseSecurity/kcatcher.git
cd kcatcher
make build
Kafkaクラスターに接続して、ブローカーとトピックのメタデータを取得します。
kcatcher -b kafka-broker-1,kafka-broker-2
デフォルト以外のKafkaポートを指定します。
kcatcher -b kafka-broker-1 -p 9093
クラスターに設定されているアクセス制御リスト(ACL)を取得します。
kcatcher -b kafka-broker-1 --acls
特定のトピックから最近のメッセージをサンプリングします。
kcatcher -b kafka-broker-1 --sample-topic my-topic --sample-count 5
結果をJSON形式で出力して、さらに処理します。
kcatcher -b kafka-broker-1 --acls -o json
ブローカーとトピックの構成を取得します。
kcatcher -b kafka-broker-1 --configs
Kafkaクラスターに対して包括的なセキュリティ分析を実行します。
kcatcher -b kafka-broker-1 --analyze
ACLおよび構成の列挙と組み合わせて、完全な評価を実行します。
kcatcher -b kafka-broker-1 --acls --configs --analyze
セキュリティ分析は、認証、認可、暗号化、アクセス制御、構成の5つのカテゴリにわたる20の組み込みセキュリティルールに基づいてクラスターを評価します。結果には、セキュリティスコア(0〜100)、レターグレード、および修復ガイダンス付きの詳細な所見が含まれます。
セキュリティ分析エンジンは、Kafkaクラスターを次のルールに基づいて評価します。
分析では、0〜100のセキュリティスコアとレターグレードが生成されます。
バグ報告や機能リクエストは、issue tracker をご利用ください。
PRも歓迎します! 標準的な「fork-and-pull」Gitワークフローに従っています。
[!TIP] プルリクエストを作成する前に、必ず"upstream"から最新の変更をマージしてください。
| Flag | Description | Default |
|---|
-b, --brokers | 列挙するKafkaブローカーのリスト(必須) | - |
-p, --port | Kafkaブローカーのポート | 9092 |
-t, --timeout | 接続タイムアウト時間 | 10s |
-o, --output | 出力形式(text または json) | text |
--acls | ACL列挙を有効にする | false |
--configs | ブローカーとトピックの構成取得を有効にする | false |
--analyze | クラスター構成のセキュリティ分析を実行する | false |
--metadata | クラスターメタデータを表示する(--analyze のみの場合を除き自動有効) | true |
--sample-topic | メッセージをサンプリングするトピック | - |
--sample-count | サンプリングするメッセージ数 | 10 |
| ルールID | 名前 | 重大度 | 説明 |
|---|
| AUTH001 | 認証が設定されていない | CRITICAL | 認証メカニズムが設定されていないことを検出します |
| AUTH002 | Plaintextリスナーが検出された | CRITICAL | PLAINTEXTプロトコルを使用するリスナーを特定します |
| AUTH003 | 弱いSASLメカニズム | HIGH | SSLなしのPLAINなど、弱いSASLメカニズムをフラグします |
| ルールID | 名前 | 重大度 | 説明 |
|---|
| AUTHZ001 | オーソライザーが設定されていない | CRITICAL | オーソライザー構成の欠落を検出します |
| AUTHZ002 | 全員に許可 | CRITICAL | 過度に寛容な全員許可設定を特定します |
| AUTHZ003 | スーパーユーザーの露出 | MEDIUM | 露出したスーパーユーザー構成をフラグします |
| ルールID | 名前 | 重大度 | 説明 |
|---|
| ENC001 | ブローカー間暗号化なし | CRITICAL | 暗号化されていないブローカー間通信を検出します |
| ENC002 | 弱いSSLプロトコル | HIGH | 非推奨または弱いSSL/TLSプロトコルを特定します |
| ENC003 | SSLクライアント認証なし | MEDIUM | SSLクライアント認証の欠落をフラグします |
| ENC004 | エンドポイント識別なし | MEDIUM | 無効化されたSSLエンドポイント識別を検出します |
| ルールID | 名前 | 重大度 | 説明 |
|---|
| ACL001 | ACL内のワイルドカードプリンシパル | CRITICAL | ワイルドカード(*)プリンシパルを持つACLを特定します |
| ACL002 | ACL内のワイルドカードホスト | MEDIUM | 任意のホストからのアクセスを許可するACLをフラグします |
| ACL003 | 過度に寛容なACL | HIGH | 過剰な権限を付与するACLを検出します |
| ACL004 | クラスター全体のACL | MEDIUM | クラスター全体に適用されるACLを特定します |
| ACL005 | ACL内のワイルドカードリソース | HIGH | ワイルドカードリソースパターンを持つACLをフラグします |
| ルールID | 名前 | 重大度 | 説明 |
|---|
| TOPIC001 | 自動トピック作成が有効 | HIGH | 自動トピック作成が有効になっていることを検出します |
| TOPIC002 | クリーンでないリーダー選出 | HIGH | クリーンでないリーダー選出構成を特定します |
| TOPIC003 | 低いMin ISR | HIGH | 最小同期レプリカ(ISR)が不十分なトピックをフラグします |
| TOPIC004 | 短い保持期間 | MEDIUM | 異常に短いメッセージ保持期間を検出します |
| TOPIC005 | トピック削除が有効 | MEDIUM | トピック削除が有効になっていることを特定します |
| グレード | スコア範囲 | 説明 |
|---|
| A | 90-100 | 優れたセキュリティ体制 |
| B | 80-89 | 良好なセキュリティ、軽微な改善が必要 |
| C | 70-79 | 中程度のセキュリティ、いくつかの改善を推奨 |
| D | 60-69 | 低いセキュリティ、大幅な変更が必要 |
| F | 0-59 | 直ちに対処が必要な重大なセキュリティ問題 |