File tree Expand file tree Collapse file tree 8 files changed +60
-8
lines changed Expand file tree Collapse file tree 8 files changed +60
-8
lines changed Original file line number Diff line number Diff line change @@ -64,18 +64,24 @@ COPY dojo/ ./dojo/
6464RUN env DD_SECRET_KEY='.' DD_DJANGO_DEBUG_TOOLBAR_ENABLED=True python3 manage.py collectstatic --noinput --verbosity=2 && true
6565
6666FROM nginx:1.29.1-alpine3.22@sha256:42a516af16b852e33b7682d5ef8acbd5d13fe08fecadc7ed98605ba5e3b26ab8
67- ARG uid=1001
68- ARG appuser=defectdojo
67+ ARG uid=101
68+ ARG gid=101
6969COPY --from=collectstatic /app/static/ /usr/share/nginx/html/static/
7070COPY wsgi_params nginx/nginx.conf nginx/nginx_TLS.conf /etc/nginx/
7171COPY docker/entrypoint-nginx.sh /
7272RUN \
73- apk add --no-cache openssl && \
73+ apk add --no-cache openssl
74+ RUN \
7475 chmod -R g=u /var/cache/nginx && \
76+ chown -R ${uid}:${gid} /var/cache/nginx && \
7577 mkdir /var/run/defectdojo && \
7678 chmod -R g=u /var/run/defectdojo && \
79+ chown -R ${uid}:${gid} /var/run/defectdojo && \
80+ chmod -R g=u /run/defectdojo && \
81+ chown -R ${uid}:${gid} /run/defectdojo && \
7782 mkdir -p /etc/nginx/ssl && \
7883 chmod -R g=u /etc/nginx && \
84+ chown -R ${uid}:${gid} /etc/nginx && \
7985 true
8086ENV \
8187 DD_UWSGI_PASS="uwsgi_server" \
8692 NGINX_METRICS_ENABLED="false" \
8793 METRICS_HTTP_AUTH_USER="" \
8894 METRICS_HTTP_AUTH_PASSWORD=""
89- USER ${uid}
95+ USER ${uid}:${gid}
9096EXPOSE 8080
9197ENTRYPOINT ["/entrypoint-nginx.sh"]
Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ services:
44 environment :
55 USE_TLS : ' true'
66 GENERATE_TLS_CERTIFICATE : ' true'
7+ tmpfs :
8+ - /etc/nginx/ssl:uid=101,gid=101
79 ports :
810 - target : 8443
911 published : ${DD_TLS_PORT:-8443}
Original file line number Diff line number Diff line change @@ -19,8 +19,12 @@ services:
1919 NGINX_METRICS_ENABLED : " ${NGINX_METRICS_ENABLED:-false}"
2020 DD_UWSGI_HOST : " ${DD_UWSGI_HOST:-uwsgi}"
2121 DD_UWSGI_PORT : " ${DD_UWSGI_PORT:-3031}"
22+ read_only : true
2223 volumes :
2324 - defectdojo_media:/usr/share/nginx/html/media
25+ tmpfs :
26+ - /run/defectdojo:uid=101,gid=101
27+ - /var/cache/nginx:uid=101,gid=101
2428 ports :
2529 - target : 8080
2630 published : ${DD_PORT:-8080}
Original file line number Diff line number Diff line change @@ -19,4 +19,6 @@ dependencies:
1919 condition : redis.enabled
2020annotations :
2121 artifacthub.io/prerelease : " true"
22- artifacthub.io/changes : " "
22+ artifacthub.io/changes : |
23+ - kind: changed
24+ description: Hardening of Nginx container
Original file line number Diff line number Diff line change @@ -611,7 +611,12 @@ A Helm chart for Kubernetes to install DefectDojo
611611| django.mediaPersistentVolume.persistentVolumeClaim.size | string | `"5Gi"` | |
612612| django.mediaPersistentVolume.persistentVolumeClaim.storageClassName | string | `""` | |
613613| django.mediaPersistentVolume.type | string | `"emptyDir"` | |
614- | django.nginx.containerSecurityContext.runAsUser | int | `1001` | |
614+ | django.nginx.containerSecurityContext.allowPrivilegeEscalation | bool | `false` | |
615+ | django.nginx.containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | |
616+ | django.nginx.containerSecurityContext.readOnlyRootFilesystem | bool | `true` | |
617+ | django.nginx.containerSecurityContext.runAsGroup | int | `101` | |
618+ | django.nginx.containerSecurityContext.runAsNonRoot | bool | `true` | |
619+ | django.nginx.containerSecurityContext.runAsUser | int | `101` | |
615620| django.nginx.extraEnv | list | `[]` | |
616621| django.nginx.extraVolumeMounts | list | `[]` | |
617622| django.nginx.resources.limits.cpu | string | `"2000m"` | |
Original file line number Diff line number Diff line change 7676 volumes :
7777 - name : run
7878 emptyDir : {}
79+ - name : nginx_cache
80+ emptyDir : {}
7981 {{- if .Values.localsettingspy }}
8082 - name : localsettingspy
8183 configMap :
@@ -296,6 +298,8 @@ spec:
296298 volumeMounts :
297299 - name : run
298300 mountPath : /run/defectdojo
301+ - name : nginx_cache
302+ mountPath : /var/cache/nginx
299303 {{- with .Values.django.extraVolumeMounts }}
300304 {{- . | toYaml | nindent 8 }}
301305 {{- end }}
Original file line number Diff line number Diff line change 399399 "containerSecurityContext" : {
400400 "type" : " object" ,
401401 "properties" : {
402+ "allowPrivilegeEscalation" : {
403+ "type" : " boolean"
404+ },
405+ "capabilities" : {
406+ "type" : " object" ,
407+ "properties" : {
408+ "drop" : {
409+ "type" : " array" ,
410+ "items" : {
411+ "type" : " string"
412+ }
413+ }
414+ }
415+ },
416+ "readOnlyRootFilesystem" : {
417+ "type" : " boolean"
418+ },
419+ "runAsGroup" : {
420+ "type" : " integer"
421+ },
422+ "runAsNonRoot" : {
423+ "type" : " boolean"
424+ },
402425 "runAsUser" : {
403426 "type" : " integer"
404427 }
Original file line number Diff line number Diff line change @@ -286,8 +286,14 @@ django:
286286 nginx :
287287 # Container security context for the nginx containers.
288288 containerSecurityContext :
289- # nginx dockerfile sets USER=1001
290- runAsUser : 1001
289+ allowPrivilegeEscalation : false
290+ readOnlyRootFilesystem : true
291+ capabilities :
292+ drop :
293+ - ALL
294+ runAsNonRoot : true
295+ runAsUser : 101
296+ runAsGroup : 101
291297 # To extra environment variables to the nginx container, you can use extraEnv. For example:
292298 # extraEnv:
293299 # - name: FOO
You can’t perform that action at this time.
0 commit comments