Commit cc09e305 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch '14707-add-modsec-logging-sidecar-to-ingress-controller' into 'master'

Enable modsecurity logging sidecar for ingress controller

See merge request gitlab-org/gitlab!19600
parents 18be584d 4eaacff8
...@@ -21,6 +21,7 @@ module Clusters ...@@ -21,6 +21,7 @@ module Clusters
} }
FETCH_IP_ADDRESS_DELAY = 30.seconds FETCH_IP_ADDRESS_DELAY = 30.seconds
MODSEC_SIDECAR_INITIAL_DELAY_SECONDS = 10
state_machine :status do state_machine :status do
after_transition any => [:installed] do |application| after_transition any => [:installed] do |application|
...@@ -81,11 +82,39 @@ module Clusters ...@@ -81,11 +82,39 @@ module Clusters
"enable-owasp-modsecurity-crs" => "true", "enable-owasp-modsecurity-crs" => "true",
"modsecurity.conf" => modsecurity_config_content "modsecurity.conf" => modsecurity_config_content
}, },
"extraContainers" => [
{
"name" => "modsecurity-log",
"image" => "busybox",
"args" => [
"/bin/sh",
"-c",
"tail -f /var/log/modsec/audit.log"
],
"volumeMounts" => [
{
"name" => "modsecurity-log-volume",
"mountPath" => "/var/log/modsec",
"readOnly" => true
}
],
"startupProbe" => {
"exec" => {
"command" => ["ls", "/var/log/modsec"]
},
"initialDelaySeconds" => MODSEC_SIDECAR_INITIAL_DELAY_SECONDS
}
}
],
"extraVolumeMounts" => [ "extraVolumeMounts" => [
{ {
"name" => "modsecurity-template-volume", "name" => "modsecurity-template-volume",
"mountPath" => "/etc/nginx/modsecurity/modsecurity.conf", "mountPath" => "/etc/nginx/modsecurity/modsecurity.conf",
"subPath" => "modsecurity.conf" "subPath" => "modsecurity.conf"
},
{
"name" => "modsecurity-log-volume",
"mountPath" => "/var/log/modsec"
} }
], ],
"extraVolumes" => [ "extraVolumes" => [
...@@ -100,6 +129,10 @@ module Clusters ...@@ -100,6 +129,10 @@ module Clusters
} }
] ]
} }
},
{
"name" => "modsecurity-log-volume",
"emptyDir" => {}
} }
] ]
} }
......
---
title: Add modsecurity logging sidecar to ingress controller
merge_request: 19600
author:
type: added
...@@ -263,7 +263,7 @@ This feature: ...@@ -263,7 +263,7 @@ This feature:
For example: For example:
```sh ```sh
kubectl -n gitlab-managed-apps exec -it $(kubectl get pods -n gitlab-managed-apps | grep 'ingress-controller' | awk '{print $1}') -- tail -f /var/log/modsec_audit.log kubectl -n gitlab-managed-apps exec -it $(kubectl get pods -n gitlab-managed-apps | grep 'ingress-controller' | awk '{print $1}') -- tail -f /var/log/modsec/audit.log
``` ```
There is a small performance overhead by enabling `modsecurity`. However, if this is There is a small performance overhead by enabling `modsecurity`. However, if this is
......
...@@ -165,6 +165,12 @@ describe Clusters::Applications::Ingress do ...@@ -165,6 +165,12 @@ describe Clusters::Applications::Ingress do
expect(subject.values).to include('extraVolumes') expect(subject.values).to include('extraVolumes')
expect(subject.values).to include('extraVolumeMounts') expect(subject.values).to include('extraVolumeMounts')
end end
it 'includes modsecurity sidecar container' do
expect(subject.values).to include('modsecurity-log-volume')
expect(subject.values).to include('extraContainers')
end
end end
context 'when ingress_modsecurity is disabled' do context 'when ingress_modsecurity is disabled' do
...@@ -190,6 +196,12 @@ describe Clusters::Applications::Ingress do ...@@ -190,6 +196,12 @@ describe Clusters::Applications::Ingress do
expect(subject.values).not_to include('extraVolumes') expect(subject.values).not_to include('extraVolumes')
expect(subject.values).not_to include('extraVolumeMounts') expect(subject.values).not_to include('extraVolumeMounts')
end end
it 'excludes modsecurity sidecar container' do
expect(subject.values).not_to include('modsecurity-log-volume')
expect(subject.values).not_to include('extraContainers')
end
end end
end end
end end
...@@ -236,7 +236,8 @@ SecAuditLogParts ABIJDEFHZ ...@@ -236,7 +236,8 @@ SecAuditLogParts ABIJDEFHZ
# assumes that you will use the audit log only ocassionally. # assumes that you will use the audit log only ocassionally.
# #
# SecAuditLogType Serial # SecAuditLogType Serial
SecAuditLog /var/log/modsec_audit.log SecAuditLogFormat JSON
SecAuditLog /var/log/modsec/audit.log
# Specify the path for concurrent audit logging. # Specify the path for concurrent audit logging.
#SecAuditLogStorageDir /opt/modsecurity/var/audit/ #SecAuditLogStorageDir /opt/modsecurity/var/audit/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment