@@ -201,6 +201,10 @@ capabilities:
201201allowPrivilegeEscalation: false
202202seccompProfile:
203203 type: Unconfined
204+ { {- if eq (include " host.response_actions_needs_higher_privileges" .) " true" } }
205+ seLinuxOptions:
206+ type: control_t
207+ { {- end } }
204208capabilities:
205209 drop:
206210 - ALL
@@ -227,20 +231,48 @@ true
227231
228232{ {/*
229233 This function checks if the response_actions feature is enabled for the host.
230- It first checks the additional_settings and then the features.
234+ It first checks host. additional_settings.features.respond/responding, then features.respond/responding .
231235 If neither is found, it defaults to false .
232236*/} }
233237{ {- define " host.response_actions_enabled" } }
234- { {- $feature_respond := dig " respond " (dict) .Values.features } }
238+ { {- $respondKey := include " host.respond_key " .Values.features } }
235239{ {- $additional_features := dig " features" (dict) .Values.host.additional_settings } }
236- { {- $additional_respond := dig " respond" (dict) $additional_features } }
240+ { {- $additional_respond := dig $respondKey (dict) $additional_features } }
241+ { {- $feature_respond := dig $respondKey (dict) .Values.features } }
237242{ {- if hasKey $additional_respond " response_actions" } }
238243{ {- dig " response_actions" " enabled" false $additional_respond -} }
239244{ {- else if hasKey $feature_respond " response_actions" } }
240245{ {- dig " response_actions" " enabled" false $feature_respond -} }
241246{ {- end } }
242247{ {- end } }
243248
249+ { {/*
250+ This function checks if response actions that need higher privileges are enabled.
251+ These include : file_acquire, file_quarantine, and get_logs.
252+ Returns true if response_actions is enabled AND at least one of these actions has trigger != " none" .
253+ Checks host.additional_settings first, then features.
254+ */} }
255+ { {- define " host.response_actions_needs_higher_privileges" } }
256+ { {- if eq (include " host.response_actions_enabled" .) " true" } }
257+ { {- $respondKey := include " host.respond_key" .Values.features } }
258+ { {- $additional_features := dig " features" (dict) .Values.host.additional_settings } }
259+ { {- $additional_respond := dig $respondKey (dict) $additional_features } }
260+ { {- $feature_respond := dig $respondKey (dict) .Values.features } }
261+ { {- $response_actions := dict } }
262+ { {- if hasKey $additional_respond " response_actions" } }
263+ { {- $response_actions = get $additional_respond " response_actions" } }
264+ { {- else if hasKey $feature_respond " response_actions" } }
265+ { {- $response_actions = get $feature_respond " response_actions" } }
266+ { {- end } }
267+ { {- $file_acquire_trigger := dig " file_acquire" " trigger" " all" $response_actions } }
268+ { {- $file_quarantine_trigger := dig " file_quarantine" " trigger" " all" $response_actions } }
269+ { {- $get_logs_trigger := dig " get_logs" " trigger" " all" $response_actions } }
270+ { {- if or (ne $file_acquire_trigger " none" ) (ne $file_quarantine_trigger " none" ) (ne $get_logs_trigger " none" ) } }
271+ { {- true -} }
272+ { {- end } }
273+ { {- end } }
274+ { {- end } }
275+
244276{ {- define " host.rapid_response_password" } }
245277{ {- $feature_respond := get .Values.features (include " host.respond_key" .Values.features) } }
246278{ {- if (dig " rapid_response" " password" nil $feature_respond ) } }
0 commit comments