diff --git a/changelog/fragments/1723149357-fix-insufficient-capabilities.yaml b/changelog/fragments/1723149357-fix-insufficient-capabilities.yaml new file mode 100644 index 00000000000..9ba50d8e40a --- /dev/null +++ b/changelog/fragments/1723149357-fix-insufficient-capabilities.yaml @@ -0,0 +1,3 @@ +kind: bug-fix +summary: Assign sys_ptrace and dac_override capabilities in permitted set to agentbeat binary. +component: elastic-agent, metricbeat diff --git a/dev-tools/packaging/templates/docker/Dockerfile.elastic-agent.tmpl b/dev-tools/packaging/templates/docker/Dockerfile.elastic-agent.tmpl index a54a9edde71..f7b2a57eb7f 100644 --- a/dev-tools/packaging/templates/docker/Dockerfile.elastic-agent.tmpl +++ b/dev-tools/packaging/templates/docker/Dockerfile.elastic-agent.tmpl @@ -57,7 +57,7 @@ RUN true && \ # Keep this after any chown command, chown resets any applied capabilities RUN setcap =p {{ $beatHome }}/data/elastic-agent-{{ commit_short }}/elastic-agent -RUN setcap cap_net_raw,cap_setuid+p {{ $beatHome }}/data/elastic-agent-{{ commit_short }}/components/agentbeat && \ +RUN setcap cap_net_raw,cap_setuid,cap_sys_ptrace,cap_dac_override+p {{ $beatHome }}/data/elastic-agent-{{ commit_short }}/components/agentbeat && \ {{- if .linux_capabilities }} # Since the beat is stored at the other end of a symlink we must follow the symlink first # For security reasons setcap does not support symlinks. This is smart in the general case diff --git a/testing/integration/agent_long_running_leak_test.go b/testing/integration/agent_long_running_leak_test.go index f3862665771..6ccc567f55a 100644 --- a/testing/integration/agent_long_running_leak_test.go +++ b/testing/integration/agent_long_running_leak_test.go @@ -151,7 +151,7 @@ func (runner *ExtendedRunner) TestHandleLeak() { timer := time.NewTimer(testDuration) defer timer.Stop() - ticker := time.NewTicker(time.Second * 10) + ticker := time.NewTicker(time.Second * 60) defer ticker.Stop() done := false diff --git a/testing/integration/agent_long_test_base_system_integ.json b/testing/integration/agent_long_test_base_system_integ.json index e231beb173b..496d0aaf6ef 100644 --- a/testing/integration/agent_long_test_base_system_integ.json +++ b/testing/integration/agent_long_test_base_system_integ.json @@ -531,7 +531,7 @@ } }, { - "enabled": true, + "enabled": false, "data_stream": { "type": "metrics", "dataset": "system.process" @@ -596,7 +596,7 @@ } }, { - "enabled": true, + "enabled": false, "data_stream": { "type": "metrics", "dataset": "system.process.summary" diff --git a/testing/integration/kubernetes_agent_standalone_test.go b/testing/integration/kubernetes_agent_standalone_test.go index e607e3065e5..04e8ede79e9 100644 --- a/testing/integration/kubernetes_agent_standalone_test.go +++ b/testing/integration/kubernetes_agent_standalone_test.go @@ -118,7 +118,7 @@ func TestKubernetesAgentStandalone(t *testing.T) { int64Ptr(1000), // elastic-agent uid nil, []corev1.Capability{"ALL"}, - []corev1.Capability{"CHOWN", "SETPCAP"}, + []corev1.Capability{"CHOWN", "SETPCAP", "DAC_OVERRIDE", "SYS_PTRACE"}, true, }, { @@ -126,7 +126,7 @@ func TestKubernetesAgentStandalone(t *testing.T) { int64Ptr(500), int64Ptr(500), []corev1.Capability{"ALL"}, - []corev1.Capability{"CHOWN", "SETPCAP", "DAC_READ_SEARCH"}, + []corev1.Capability{"CHOWN", "SETPCAP", "DAC_OVERRIDE", "SYS_PTRACE"}, true, }, }