Skip to content

Commit 75df8f6

Browse files
committed
Hardening: add security context; split geonode PVC into individual PVCs, to allow more granular handling and better control of subdirectory creation (avoid subPath)
1 parent db281ad commit 75df8f6

2 files changed

Lines changed: 62 additions & 8 deletions

File tree

charts/geonode/templates/geonode/geonode-pvc.yaml

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,46 @@
11
apiVersion: v1
22
kind: PersistentVolumeClaim
33
metadata:
4-
name: pvc-{{ .Release.Name }}-geonode
4+
name: pvc-{{ .Release.Name }}-geonode-statics
5+
namespace: {{ .Release.Namespace }}
6+
spec:
7+
accessModes:
8+
- {{ .Values.global.accessMode }}
9+
storageClassName: {{ .Values.global.storageClass }}
10+
resources:
11+
requests:
12+
storage: {{ .Values.geonode.persistant.storageSize }}
13+
---
14+
apiVersion: v1
15+
kind: PersistentVolumeClaim
16+
metadata:
17+
name: pvc-{{ .Release.Name }}-geonode-geoserver-data
18+
namespace: {{ .Release.Namespace }}
19+
spec:
20+
accessModes:
21+
- {{ .Values.global.accessMode }}
22+
storageClassName: {{ .Values.global.storageClass }}
23+
resources:
24+
requests:
25+
storage: {{ .Values.geonode.persistant.storageSize }}
26+
---
27+
apiVersion: v1
28+
kind: PersistentVolumeClaim
29+
metadata:
30+
name: pvc-{{ .Release.Name }}-geonode-backup-restore
31+
namespace: {{ .Release.Namespace }}
32+
spec:
33+
accessModes:
34+
- {{ .Values.global.accessMode }}
35+
storageClassName: {{ .Values.global.storageClass }}
36+
resources:
37+
requests:
38+
storage: {{ .Values.geonode.persistant.storageSize }}
39+
---
40+
apiVersion: v1
41+
kind: PersistentVolumeClaim
42+
metadata:
43+
name: pvc-{{ .Release.Name }}-geonode-data
544
namespace: {{ .Release.Namespace }}
645
spec:
746
accessModes:

charts/geonode/templates/geonode/jobs/geonode-statics-job.yaml

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,25 @@ spec:
2222
- name: {{ .Values.geonode.imagePullSecret }}
2323
{{ end }}
2424
restartPolicy: OnFailure
25+
securityContext:
26+
runAsNonRoot: true
27+
fsGroup: {{ .Values.geonode.securityContext.fsGroup | default .Values.global.securityContext.fsGroup }}
28+
2529
containers:
2630
- name: {{ .Values.geonode.container_name }}-statics-job
2731
image: "{{ .Values.geonode.image.name }}:{{ .Values.geonode.image.tag }}"
2832
imagePullPolicy: {{ .Values.geonode.imagePullPolicy }}
33+
securityContext:
34+
runAsUser: {{ .Values.geonode.securityContext.runAsUser | default .Values.global.securityContext.runAsUser }}
35+
runAsGroup: {{ .Values.geonode.securityContext.runAsGroup | default .Values.global.securityContext.runAsGroup }}
36+
runAsNonRoot: true
37+
allowPrivilegeEscalation: false
38+
capabilities:
39+
drop:
40+
- ALL
41+
seccompProfile:
42+
type: RuntimeDefault
43+
2944
command:
3045
- bash
3146
- -c
@@ -72,9 +87,8 @@ spec:
7287
- name: DATABASE_URL
7388
value: "postgis://$(GEONODE_DATABASE):$(GEONODE_DATABASE_PASSWORD)@$(DATABASE_HOST):$(DATABASE_PORT)/$(GEONODE_DATABASE)"
7489
volumeMounts:
75-
- name: "{{ include "persistant_volume_name" . }}"
90+
- name: pvc-data
7691
mountPath: /data
77-
subPath: data
7892
- name: cache-volume
7993
mountPath: /tmp
8094
- name: tasks-py
@@ -88,13 +102,15 @@ spec:
88102
mountPath: "/usr/src/geonode/geonode/geonode-k8s-settings-additions.py"
89103
subPath: geonode-k8s-settings-additions.py
90104
readOnly: true
91-
- name: "{{ include "persistant_volume_name" . }}"
105+
- name: pvc-statics
92106
mountPath: /mnt/volumes/statics
93-
subPath: statics
94107
volumes:
95-
- name: "{{ include "persistant_volume_name" . }}"
108+
- name: pvc-statics
96109
persistentVolumeClaim:
97-
claimName: pvc-{{ .Release.Name }}-geonode
110+
claimName: {{ include "pvc_statics_name" . }}
111+
- name: pvc-data
112+
persistentVolumeClaim:
113+
claimName: {{ include "pvc_data_name" . }}
98114
- name: tasks-py
99115
configMap:
100116
name: {{ .Release.Name }}-geonode-tasks-py
@@ -115,7 +131,6 @@ spec:
115131
items:
116132
- key: geonode-k8s-settings-additions.py
117133
path: "geonode-k8s-settings-additions.py"
118-
119134
# Using an emptyDir to cache compiled statics... it will survive container crashes, but not pod restarts
120135
- name: cache-volume
121136
emptyDir: {}

0 commit comments

Comments
 (0)