バージョン0.18.0以降、Falcoには一連のgRPC APIを提供する自身のgRPCサーバーがあります。
現在のAPIは次のとおりです:
- schema definition: Falco出力イベントをサブスクライブします。
- schema definition: Falcoバージョンを取得します。現在のバージョンは0.26.2です。
これらのAPIと対話するために、falcosecurity組織はGoおよびPythonクライアントを提供しています。
設定
Falco gRPCサーバーとFalco gRPC出力APIは、デフォルトでは有効になっていません。
それらを有効にするには、falco.yaml
Falco設定ファイルを編集します。Falco設定ファイルのサンプルを以下に示します:
# gRPC server configuration.
# The gRPC server is secure by default (mutual TLS) so you need to generate certificates and update their paths here.
# By default the gRPC server is off.
# You can configure the address to bind and expose it.
# By modifying the threadiness configuration you can fine-tune the number of threads (and context) it will use.
grpc:
enabled: true
bind_address: "0.0.0.0:5060"
threadiness: 8
private_key: "/tmp/server.key"
cert_chain: "/tmp/server.crt"
root_certs: "/tmp/ca.crt"
# gRPC output service.
# By default it is off.
# By enabling this all the output events will be kept in memory until you read them with a gRPC client.
grpc_output:
enabled: true
証明書
Falco gRPCサーバーは、設計上、相互TLSでのみ機能します。したがって、上記の構成では、証明書を生成してパスを更新する必要があります。
Falcoの作成者は、証明書の生成を間もなく自動化する予定です。
それまでの間、次のスクリプトを使用して証明書を生成します。
注:設定に従って、必ず -passin
, -passout
、および -subj
フラグを設定してください。
有効なCAを生成する
次のコマンドを実行します:
$ openssl genrsa -passout pass:1234 -des3 -out ca.key 4096
$ openssl req -passin pass:1234 -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=SP/ST=Italy/L=Ornavasso/O=Test/OU=Test/CN=Root CA"
有効なサーバーkey/証明書を生成する
次のコマンドを実行します:
$ openssl genrsa -passout pass:1234 -des3 -out server.key 4096
$ openssl req -passin pass:1234 -new -key server.key -out server.csr -subj "/C=SP/ST=Italy/L=Ornavasso/O=Test/OU=Server/CN=localhost"
$ openssl x509 -req -passin pass:1234 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
サーバーkeyからパスフレーズを削除する
次のコマンドを実行します:
$ openssl rsa -passin pass:1234 -in server.key -out server.key
有効なクライアントkey/証明書を生成する
次のコマンドを実行します:
$ openssl genrsa -passout pass:1234 -des3 -out client.key 4096
$ openssl req -passin pass:1234 -new -key client.key -out client.csr -subj "/C=SP/ST=Italy/L=Ornavasso/O=Test/OU=Client/CN=localhost"
$ openssl x509 -passin pass:1234 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
クライアントkeyからパスフレーズを削除
Run the following command:
$ openssl rsa -passin pass:1234 -in client.key -out client.key
使用法
設定が完了すると、FalcoはgRPCサーバーとその出力APIを公開する準備が整います。
これを行うには、シンプルにFalcoを実行します。 例えば:
$ falco -c falco.yaml -r rules/falco_rules.yaml -r rules/falco_rules.local.yaml -r rules/k8s_audit_rules.yaml
Outputイベントを受信して使用する方法については、Go clientまたはPython clientのドキュメントを参照してください。
Table of contents