falcosecurity/falcosidekick!falcosidekick
!release !last commit !licence !docker pulls
Falcosidekick是一个帮助处理Falco输出的简单守护进程([***]
目前可用的输出目标包括:
falcosidekick)falcosidekick)适用于需要将Falco检测到的安全事件、系统事件等转发到多种通知工具(如Slack、Teams)、监控系统(如Datadog、Prometheus AlertManager)或数据存储(如Elasticsearch、InfluxDB)的场景。可部署在各种架构中,如systemd服务、Kubernetes DaemonSet、Swarm服务等。
可将该守护进程作为架构中的其他守护进程运行(systemd、k8s DaemonSet、Swarm服务等)。
bashdocker run -d -p 2801:2801 -e SLACK_WEBHOOKURL=XXXX -e DATADOG_APIKEY=XXXX falcosecurity/falcosidekick
bashgit clone [***] cd ./falcosidekick/deploy/helm/falcosidekick/ helm install --name falcosidekick .
在falco.yaml中添加以下配置(根据环境调整):
yamljson_output: true json_include_output_property: true http_output: enabled: true url: http://localhost:2801/
或
yamljson_output: true json_include_output_property: true program_output: enabled: true keep_alive: false program: "curl -d @- localhost:2801/"
配置可通过文件(yaml) 和环境变量进行,环境变量的值会覆盖文件中的配置。
参考config_example.yaml:
yaml# listenport: 2801 # 守护进程监听端口(默认:2801) debug: false # 如果为true,所有输出将在stdout中打印发送的 payload(默认:false) customfields: # 自定义字段将添加到Falco事件中 Akey: "AValue" Bkey: "BValue" Ckey: "CValue" slack: webhookurl: "" # Slack Webhook URL(例如:[***] # footer: "" # Slack页脚 # icon: "" # Slack图标(头像) outputformat: "text" # all(默认)、text、fields minimumpriority: "debug" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) messageformat: "Alert : rule *{{ .Rule }}* triggered by user *{{ index .OutputFields \"user.name\" }}*" # 用于格式化Slack附件上方文本的Go模板,除SLACK_OUTPUTFORMAT的输出外额外显示,详情参见README中的Slack消息格式。若为空,则不在附件前显示文本。 teams: webhookurl: "" # Teams Webhook URL(例如:[***] # activityimage: "" # 消息部分的图片 outputformat: "text" # all(默认)、text、facts minimumpriority: "debug" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) datadog: # apikey: "" # Datadog API密钥,若不为空则启用Datadog输出 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) alertmanager: # hostport: "" # http://{域名或IP}:{端口},若不为空则启用AlertManager输出 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) elasticsearch: # hostport: "" # http://{域名或IP}:{端口},若不为空则启用Elasticsearch输出 # index: "falco" # 索引(默认:falco) # type: "event" # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) # suffix: "daily" # 索引轮换的日期后缀:daily(默认)、monthly、annually、none influxdb: # hostport: "" # http://{域名或IP}:{端口},若不为空则启用Influxdb输出 # database: "falco" # Influxdb数据库(默认:falco) # user: "" # 若Influxdb启用认证,则使用的用户名 # password: "" # 若Influxdb启用认证,则使用的密码 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) loki: # hostport: "" # http://{域名或IP}:{端口},若不为空则启用Loki输出 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) nats: # hostport: "" # nats://{域名或IP}:{端口},若不为空则启用NATS输出 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) aws: # accesskeyid: "" # AWS访问密钥(若使用EC2实例配置文件则可选) # secretaccesskey: "" # AWS密钥(若使用EC2实例配置文件则可选) # region : "" # AWS区域(若使用EC2实例配置文件则可选) lambda: # functionname : "" # Lambda函数名称,若不为空则启用AWS Lambda输出 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) sqs: # url : "" # SQS队列URL,若不为空则启用AWS SQS输出 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) smtp: # hostport: "" # SMTP服务器的host:port地址,若不为空则启用SMTP输出 # user: "" # 访问SMTP服务器的用户 # password: "" # 访问SMTP服务器的密码 # from: "" # 发件人地址(若启用SMTP输出则为必填) # to: "" # 收件人地址列表(逗号分隔,若启用SMTP输出则不能为空,必填) # outputformat: "" # html(默认)、text # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) opsgenie: # apikey: "" # Opsgenie API密钥,若不为空则启用Opsgenie输出 # region: "eu" # 域名区域(us|eu)(默认:'us') # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认) statsd: forwarder: "" # StatsD转发器地址,格式为"host:port",若不为空则启用StatsD namespace: "falcosidekick." # 所有指标的前缀(默认:"falcosidekick.") dogstatsd: forwarder: "" # DogStatsD转发器地址,格式为"host:port",若不为空则启用DogStatsD namespace: "falcosidekick." # 所有指标的前缀(默认:"falcosidekick.") # tag : # key: "value" webhook: # address: "" # Webhook地址,若不为空则启用Webhook输出 # minimumpriority: "" # 使用此输出的事件最低优先级,顺序为emergency|alert|critical|error|warning|notice|informational|debug或""(默认)
使用方法:
bashusage: falcosidekick [<flags>] Flags: --help 显示上下文相关帮助(也可尝试 --help-long 和 --help-man)。 -c, --config-file=CONFIG-FILE 配置文件
守护进程的配置也可通过环境变量进行,这些值会覆盖yaml文件中的配置。环境变量与yaml文件中的字段名称对应关系为:yaml: a.b --> envvar: A_B(注意大小写):
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务