FalcoSecurity.Plugin.Sdk
1.0.0
DNNE 기본 수출 및 NET6+ 기본 메모리 관리로 구동되는 .NET 용 비공식 FALCO 플러그인 SDK.
이것이 어떻게 작동하는지에 대한 전체 예와 추가 정보를 보려면 위키를 확인하십시오!
| DESC | changelog | ||
|---|---|---|---|
| falcosecurity.plugin.sdk | 핵심 플러그인 SDK 유형 | changelog.md | |
| falcosecurity.plugin.sdk.generator | 기본 수출을위한 소스 생성기 | changelog.md | |
| falcosecurity.plugin.sdk.template | 프로젝트 템플릿 dotnet new falcoplugin |
[ FalcoPlugin (
Id = 999 ,
Name = "dummy_plugin" ,
Description = "A dummy plugin" ,
Contacts = "mvenditto" ,
RequiredApiVersion = "2.0.0" ,
Version = "1.0.0" ) ]
public class Plugin : PluginBase , IEventSource , IFieldExtractor {
public string EventSourceName => "dummy_source" ;
public IEnumerable < string > EventSourcesToExtract
=> Enumerable . Empty < string > ( ) ; // only consume ourselves event-source
public IEnumerable < OpenParam > OpenParameters =>
=> Enumerable . Empty < string > ( ) ; // no specific open-params
public IEnumerable < ExtractionField > Fields => new List < ExtractionField > {
new ( type : "uint64" ,
name : "dummy.counter" ,
display : "Counter value" ,
desc : "Current value of the internal counter" )
} ;
public IEventSourceInstance Open ( IEnumerable < OpenParam > ? openParams ) {
return new CounterInstance ( ) ;
}
public void Close ( IEventSourceInstance instance ) {
instance . Dispose ( ) ;
}
public void Extract ( IExtractionRequest extraction , IEventReader evt ) {
var counter = BitConverter . ToInt32 ( evt . Data ) ;
extraction . SetValue ( ( ulong ) counter ) ;
}
}
public class CounterInstance : PullEventSourceInstance {
public int Counter { get ; set ; }
public CounterInstance ( ) : base ( batchSize : 10 , eventSize : 8 ) {
Counter = 1 ;
}
protected override void PullEvent ( EventSourceInstanceContext ctx , IEventWriter evt ) {
var unixNano = ( ulong ) DateTimeOffset . Now . ToUnixTimeSeconds ( ) * 1000000000 ;
evt . Write ( BitConverter . GetBytes ( Counter ) ) ;
evt . SetTimestamp ( unixNano ) ;
if ( Counter >= 50 ) {
ctx . IsEof = true ;
}
Counter += 1 ;
}
} - rule : Dummy counter rule
desc : Dummy counter equals 42
condition : (dummy.counter=42)
output : dummy.counter is 42 value=%dummy.counter
priority : DEBUG
source : dummy_source
tags : [dummy] admin@someplace : ~ $ tree/usr/share/falco
/usr/share/falco/
└ ─) 플러그인
libjson.so
libk8saudit.so
Dummy_plugin
plugin_native.so
falcosecurity.plugin.sdk.dll
falcosecurity.plugin.sdk.dummyplugin.dll
Microsoft.extensions.objectpool.dll
Falcosecurity.plugin.sdk.dummyplugin.runtimeconfig.json
admin@someplace : ~ $ falco -enable-source dummy_source
토요일 11 월 5 일 18:08:52 2022 : Falco 버전 : 0.33.0 (x86_64)
[... 잘린 ...]
토요일 11 월 5 일 18:08:52 2022 : 활성화 이벤트 소스 : dummy_source
토요일 11 월 5 일 18:08:52 2022 : 이벤트 소스 오프닝 'dummy_source'
토요일 11 월 5 일 18:08:52 2022 : 플러그인 'dummy_plugin'을 사용한 캡처 오프닝
토요일 11 월 5 일 18:08:52 2022 : 마감 이벤트 소스 'Dummy_Source'
18 : 08 : 52.000000000 : Debug Dummy.counter는 42 value = 42입니다
감지 된 사건 : 1
심각도에 의한 규칙 수 :
디버그 : 1
규칙 이름으로 트리거 된 규칙 :
더미 카운터 규칙 : 1
admin@someplace : ~ $ █이 SDK는 비공식적 이며 Sysdig와 Falcosecurity/Falco와 관련이 있거나 승인되지 않습니다.