Skip to content

Commit d598375

Browse files
committed
init remote workloadfilter on security agent and system-probe
1 parent b4b0683 commit d598375

File tree

14 files changed

+57
-36
lines changed

14 files changed

+57
-36
lines changed

cmd/cluster-agent/subcommands/start/command.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ func start(log log.Component,
517517
go func() {
518518
defer wg.Done()
519519

520-
if err := runCompliance(mainCtx, demultiplexer, wmeta, apiCl, compression, ipc, le.IsLeader); err != nil {
520+
if err := runCompliance(mainCtx, demultiplexer, wmeta, filterStore, apiCl, compression, ipc, le.IsLeader); err != nil {
521521
pkglog.Errorf("Error while running compliance agent: %v", err)
522522
}
523523
}()

cmd/cluster-agent/subcommands/start/compliance.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"k8s.io/client-go/dynamic"
1515

1616
ipc "github.com/DataDog/datadog-agent/comp/core/ipc/def"
17+
workloadfilter "github.com/DataDog/datadog-agent/comp/core/workloadfilter/def"
1718
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
1819
logscompression "github.com/DataDog/datadog-agent/comp/serializer/logscompression/def"
1920
"github.com/DataDog/datadog-agent/pkg/aggregator/sender"
@@ -26,9 +27,9 @@ import (
2627
"github.com/DataDog/datadog-agent/pkg/util/startstop"
2728
)
2829

29-
func runCompliance(ctx context.Context, senderManager sender.SenderManager, wmeta workloadmeta.Component, apiCl *apiserver.APIClient, compression logscompression.Component, ipc ipc.Component, isLeader func() bool) error {
30+
func runCompliance(ctx context.Context, senderManager sender.SenderManager, wmeta workloadmeta.Component, filterStore workloadfilter.Component, apiCl *apiserver.APIClient, compression logscompression.Component, ipc ipc.Component, isLeader func() bool) error {
3031
stopper := startstop.NewSerialStopper()
31-
if err := startCompliance(senderManager, wmeta, stopper, apiCl, isLeader, compression, ipc); err != nil {
32+
if err := startCompliance(senderManager, wmeta, filterStore, stopper, apiCl, isLeader, compression, ipc); err != nil {
3233
return err
3334
}
3435

@@ -38,7 +39,7 @@ func runCompliance(ctx context.Context, senderManager sender.SenderManager, wmet
3839
return nil
3940
}
4041

41-
func startCompliance(senderManager sender.SenderManager, wmeta workloadmeta.Component, stopper startstop.Stopper, apiCl *apiserver.APIClient, isLeader func() bool, compression logscompression.Component, ipc ipc.Component) error {
42+
func startCompliance(senderManager sender.SenderManager, wmeta workloadmeta.Component, filterStore workloadfilter.Component, stopper startstop.Stopper, apiCl *apiserver.APIClient, isLeader func() bool, compression logscompression.Component, ipc ipc.Component) error {
4243
endpoints, ctx, err := seccommon.NewLogContextCompliance()
4344
if err != nil {
4445
log.Error(err)
@@ -59,7 +60,7 @@ func startCompliance(senderManager sender.SenderManager, wmeta workloadmeta.Comp
5960
return err
6061
}
6162

62-
agent := compliance.NewAgent(statsdClient, wmeta, ipc, compliance.AgentOptions{
63+
agent := compliance.NewAgent(statsdClient, wmeta, ipc, filterStore, compliance.AgentOptions{
6364
ConfigDir: configDir,
6465
Reporter: reporter,
6566
CheckInterval: checkInterval,

cmd/security-agent/subcommands/start/command.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ import (
5050
tagger "github.com/DataDog/datadog-agent/comp/core/tagger/def"
5151
remoteTaggerfx "github.com/DataDog/datadog-agent/comp/core/tagger/fx-remote"
5252
"github.com/DataDog/datadog-agent/comp/core/telemetry"
53+
workloadfilter "github.com/DataDog/datadog-agent/comp/core/workloadfilter/def"
54+
remoteWorkloadfilterfx "github.com/DataDog/datadog-agent/comp/core/workloadfilter/fx-remote"
5355
wmcatalog "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/catalog-remote"
5456
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
5557
workloadmetafx "github.com/DataDog/datadog-agent/comp/core/workloadmeta/fx"
@@ -109,6 +111,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command {
109111
workloadmetafx.Module(workloadmeta.Params{
110112
AgentType: workloadmeta.Remote,
111113
}),
114+
remoteWorkloadfilterfx.Module(),
112115
remoteTaggerfx.Module(tagger.NewRemoteParams()),
113116
fx.Provide(func() startstop.Stopper {
114117
return startstop.NewSerialStopper()
@@ -134,7 +137,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command {
134137
// TODO - components: Do not remove runtimeAgent ref until "github.com/DataDog/datadog-agent/pkg/security/agent" is a component so they're not GCed
135138
return status.NewInformationProvider(runtimeAgent.StatusProvider()), runtimeAgent, nil
136139
}),
137-
fx.Provide(func(stopper startstop.Stopper, log log.Component, config config.Component, statsdClient ddgostatsd.ClientInterface, sysprobeconfig sysprobeconfig.Component, wmeta workloadmeta.Component, compression logscompression.Component, ipc ipc.Component, hostname hostnameinterface.Component) (status.InformationProvider, *compliance.Agent, error) {
140+
fx.Provide(func(stopper startstop.Stopper, log log.Component, config config.Component, statsdClient ddgostatsd.ClientInterface, sysprobeconfig sysprobeconfig.Component, wmeta workloadmeta.Component, filterStore workloadfilter.Component, compression logscompression.Component, ipc ipc.Component, hostname hostnameinterface.Component) (status.InformationProvider, *compliance.Agent, error) {
138141
hostnameDetected, err := hostname.Get(context.TODO())
139142
if err != nil {
140143
return status.NewInformationProvider(nil), nil, err
@@ -146,7 +149,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command {
146149
}
147150

148151
// start compliance security agent
149-
complianceAgent, err := compliance.StartCompliance(log, config, hostnameDetected, stopper, statsdClient, wmeta, compression, ipc, sysProbeClient)
152+
complianceAgent, err := compliance.StartCompliance(log, config, hostnameDetected, stopper, statsdClient, wmeta, filterStore, compression, ipc, sysProbeClient)
150153
if err != nil {
151154
return status.NewInformationProvider(nil), nil, err
152155
}

cmd/system-probe/modules/eventmonitor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func createEventMonitorModule(_ *sysconfigtypes.Config, deps module.FactoryDepen
5454
}
5555

5656
if secconfig.RuntimeSecurity.IsRuntimeEnabled() {
57-
cws, err := secmodule.NewCWSConsumer(evm, secconfig.RuntimeSecurity, deps.WMeta, secmoduleOpts, deps.Compression, deps.Ipc)
57+
cws, err := secmodule.NewCWSConsumer(evm, secconfig.RuntimeSecurity, deps.WMeta, deps.FilterStore, secmoduleOpts, deps.Compression, deps.Ipc)
5858
if err != nil {
5959
return nil, err
6060
}

cmd/system-probe/subcommands/run/command.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import (
5050
remoteTaggerFx "github.com/DataDog/datadog-agent/comp/core/tagger/fx-remote"
5151
"github.com/DataDog/datadog-agent/comp/core/telemetry"
5252
"github.com/DataDog/datadog-agent/comp/core/telemetry/telemetryimpl"
53+
remoteWorkloadfilterfx "github.com/DataDog/datadog-agent/comp/core/workloadfilter/fx-remote"
5354
wmcatalog "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/catalog-remote"
5455
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
5556
workloadmetafx "github.com/DataDog/datadog-agent/comp/core/workloadmeta/fx"
@@ -129,6 +130,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command {
129130
workloadmetafx.Module(workloadmeta.Params{
130131
AgentType: workloadmeta.Remote,
131132
}),
133+
remoteWorkloadfilterfx.Module(),
132134
ipcfx.ModuleReadWrite(),
133135
// Provide tagger module
134136
remoteTaggerFx.Module(tagger.NewRemoteParams()),
@@ -315,6 +317,7 @@ func runSystemProbe(ctxChan <-chan context.Context, errChan chan error) error {
315317
workloadmetafx.Module(workloadmeta.Params{
316318
AgentType: workloadmeta.Remote,
317319
}),
320+
remoteWorkloadfilterfx.Module(),
318321
ipcfx.ModuleReadWrite(),
319322
// Provide tagger module
320323
remoteTaggerFx.Module(tagger.NewRemoteParams()),

pkg/compliance/agent.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/shirou/gopsutil/v4/process"
2323

2424
ipc "github.com/DataDog/datadog-agent/comp/core/ipc/def"
25+
workloadfilter "github.com/DataDog/datadog-agent/comp/core/workloadfilter/def"
2526
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
2627
"github.com/DataDog/datadog-agent/pkg/compliance/aptconfig"
2728
"github.com/DataDog/datadog-agent/pkg/compliance/dbconfig"
@@ -113,6 +114,7 @@ const (
113114
type Agent struct {
114115
telemetrySender telemetry.SimpleTelemetrySender
115116
wmeta workloadmeta.Component
117+
filterStore workloadfilter.Component
116118
ipc ipc.Component
117119
opts AgentOptions
118120

@@ -177,7 +179,7 @@ func MakeDefaultRuleFilter(ipc ipc.Component) RuleFilter {
177179
}
178180

179181
// NewAgent returns a new compliance agent.
180-
func NewAgent(telemetrySender telemetry.SimpleTelemetrySender, wmeta workloadmeta.Component, ipc ipc.Component, opts AgentOptions) *Agent {
182+
func NewAgent(telemetrySender telemetry.SimpleTelemetrySender, wmeta workloadmeta.Component, ipc ipc.Component, filterStore workloadfilter.Component, opts AgentOptions) *Agent {
181183
if opts.ConfigDir == "" {
182184
panic("compliance: missing agent configuration directory")
183185
}
@@ -202,6 +204,7 @@ func NewAgent(telemetrySender telemetry.SimpleTelemetrySender, wmeta workloadmet
202204
return &Agent{
203205
telemetrySender: telemetrySender,
204206
wmeta: wmeta,
207+
filterStore: filterStore,
205208
ipc: ipc,
206209
opts: opts,
207210
statuses: make(map[string]*CheckStatus),
@@ -210,7 +213,7 @@ func NewAgent(telemetrySender telemetry.SimpleTelemetrySender, wmeta workloadmet
210213

211214
// Start starts the compliance agent.
212215
func (a *Agent) Start() error {
213-
telemetry, err := telemetry.NewContainersTelemetry(a.telemetrySender, a.wmeta, pkgconfigsetup.Datadog(), "compliance_config.")
216+
telemetry, err := telemetry.NewContainersTelemetry(a.telemetrySender, a.wmeta, a.filterStore.GetContainerComplianceFilters())
214217
if err != nil {
215218
log.Errorf("could not start containers telemetry: %v", err)
216219
return err

pkg/compliance/compliance.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/DataDog/datadog-agent/comp/core/config"
1919
ipc "github.com/DataDog/datadog-agent/comp/core/ipc/def"
2020
log "github.com/DataDog/datadog-agent/comp/core/log/def"
21+
workloadfilter "github.com/DataDog/datadog-agent/comp/core/workloadfilter/def"
2122
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
2223
"github.com/DataDog/datadog-agent/comp/dogstatsd/constants"
2324
compression "github.com/DataDog/datadog-agent/comp/serializer/logscompression/def"
@@ -35,6 +36,7 @@ func StartCompliance(log log.Component,
3536
stopper startstop.Stopper,
3637
statsdClient ddgostatsd.ClientInterface,
3738
wmeta workloadmeta.Component,
39+
filterStore workloadfilter.Component,
3840
compression compression.Component,
3941
ipc ipc.Component,
4042
sysProbeClient SysProbeClient,
@@ -73,7 +75,7 @@ func StartCompliance(log log.Component,
7375
reporter := NewLogReporter(hostname, "compliance-agent", "compliance", endpoints, context, compression)
7476
telemetrySender := telemetry.NewSimpleTelemetrySenderFromStatsd(statsdClient)
7577

76-
agent := NewAgent(telemetrySender, wmeta, ipc, AgentOptions{
78+
agent := NewAgent(telemetrySender, wmeta, ipc, filterStore, AgentOptions{
7779
ResolverOptions: resolverOptions,
7880
ConfigDir: configDir,
7981
Reporter: reporter,

pkg/security/module/cws.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/DataDog/datadog-go/v5/statsd"
1818

1919
ipc "github.com/DataDog/datadog-agent/comp/core/ipc/def"
20+
workloadfilter "github.com/DataDog/datadog-agent/comp/core/workloadfilter/def"
2021
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
2122
compression "github.com/DataDog/datadog-agent/comp/serializer/logscompression/def"
2223
"github.com/DataDog/datadog-agent/pkg/eventmonitor"
@@ -72,12 +73,12 @@ type CWSConsumer struct {
7273
}
7374

7475
// NewCWSConsumer initializes the module with options
75-
func NewCWSConsumer(evm *eventmonitor.EventMonitor, cfg *config.RuntimeSecurityConfig, wmeta workloadmeta.Component, opts Opts, compression compression.Component, ipc ipc.Component) (*CWSConsumer, error) {
76+
func NewCWSConsumer(evm *eventmonitor.EventMonitor, cfg *config.RuntimeSecurityConfig, wmeta workloadmeta.Component, filterStore workloadfilter.Component, opts Opts, compression compression.Component, ipc ipc.Component) (*CWSConsumer, error) {
7677
crtelemcfg := telemetry.ContainersRunningTelemetryConfig{
7778
RuntimeEnabled: cfg.RuntimeEnabled,
7879
FIMEnabled: cfg.FIMEnabled,
7980
}
80-
crtelemetry, err := telemetry.NewContainersRunningTelemetry(crtelemcfg, evm.StatsdClient, wmeta)
81+
crtelemetry, err := telemetry.NewContainersRunningTelemetry(crtelemcfg, evm.StatsdClient, wmeta, filterStore)
8182
if err != nil {
8283
return nil, err
8384
}

pkg/security/telemetry/containers_running_telemetry_linux.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
"os"
1111
"time"
1212

13+
workloadfilter "github.com/DataDog/datadog-agent/comp/core/workloadfilter/def"
1314
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
14-
pkgconfigsetup "github.com/DataDog/datadog-agent/pkg/config/setup"
1515
"github.com/DataDog/datadog-agent/pkg/security/metrics"
1616
"github.com/DataDog/datadog-agent/pkg/util/log"
1717

@@ -25,9 +25,9 @@ type ContainersRunningTelemetry struct {
2525
}
2626

2727
// NewContainersRunningTelemetry creates a new ContainersRunningTelemetry instance
28-
func NewContainersRunningTelemetry(cfg ContainersRunningTelemetryConfig, statsdClient statsd.ClientInterface, wmeta workloadmeta.Component) (*ContainersRunningTelemetry, error) {
28+
func NewContainersRunningTelemetry(cfg ContainersRunningTelemetryConfig, statsdClient statsd.ClientInterface, wmeta workloadmeta.Component, filterStore workloadfilter.Component) (*ContainersRunningTelemetry, error) {
2929
telemetrySender := NewSimpleTelemetrySenderFromStatsd(statsdClient)
30-
containersTelemetry, err := NewContainersTelemetry(telemetrySender, wmeta, pkgconfigsetup.SystemProbe(), "runtime_security_config.")
30+
containersTelemetry, err := NewContainersTelemetry(telemetrySender, wmeta, filterStore.GetContainerRuntimeSecurityFilters())
3131
if err != nil {
3232
return nil, err
3333
}

pkg/security/telemetry/containers_running_telemetry_others.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,17 @@ package telemetry
1010
import (
1111
"context"
1212

13-
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
1413
"github.com/DataDog/datadog-go/v5/statsd"
14+
15+
workloadfilter "github.com/DataDog/datadog-agent/comp/core/workloadfilter/def"
16+
workloadmeta "github.com/DataDog/datadog-agent/comp/core/workloadmeta/def"
1517
)
1618

1719
// ContainersRunningTelemetry reports environment information (e.g containers running) when the runtime security component is running
1820
type ContainersRunningTelemetry struct{}
1921

2022
// NewContainersRunningTelemetry creates a new ContainersRunningTelemetry instance (not supported on non-linux platforms)
21-
func NewContainersRunningTelemetry(_ ContainersRunningTelemetryConfig, _ statsd.ClientInterface, _ workloadmeta.Component) (*ContainersRunningTelemetry, error) {
23+
func NewContainersRunningTelemetry(_ ContainersRunningTelemetryConfig, _ statsd.ClientInterface, _ workloadmeta.Component, _ workloadfilter.Component) (*ContainersRunningTelemetry, error) {
2224
return nil, nil
2325
}
2426

0 commit comments

Comments
 (0)