Merge pull request #148 from jk-cluster/feat/seccomp-runtime-default-batch1

Acht Charts: seccompProfile RuntimeDefault im Pod-Context und qualifizierte Images
This commit is contained in:
jklein authored and GitHub committed 2026-08-24 11:31:33 +00:00
commit 178d4e9a6a
28 files changed
+109 -22

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@ name: calibre-web-automated
description: A Helm chart to deploy calibere-web-automated description: A Helm chart to deploy calibere-web-automated
icon: https://raw.githubusercontent.com/crocodilestick/Calibre-Web-Automated/main/README_images/cwa-logo-round-dark.png icon: https://raw.githubusercontent.com/crocodilestick/Calibre-Web-Automated/main/README_images/cwa-logo-round-dark.png
version: 5.0.0+upv4.0.6 version: 6.0.0+upv4.0.6
appVersion: v4.0.6 appVersion: v4.0.6
maintainers: maintainers:
+2 -1
View File
@@ -230,7 +230,8 @@ default probe needs no further context.
{{- $given := (fromYaml (include "calibre-web-automated.subBlock" (dict "block" . "key" "pod" "path" "cwa.securityContext"))).value -}} {{- $given := (fromYaml (include "calibre-web-automated.subBlock" (dict "block" . "key" "pod" "path" "cwa.securityContext"))).value -}}
{{- $defaults := dict {{- $defaults := dict
"fsGroup" 1000 "fsGroup" 1000
"fsGroupChangePolicy" "Always" -}} "fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "calibre-web-automated.defaultedDict" (dict "defaults" $defaults "given" $given "path" "cwa.securityContext.pod") -}} {{- include "calibre-web-automated.defaultedDict" (dict "defaults" $defaults "given" $given "path" "cwa.securityContext.pod") -}}
{{- end -}} {{- end -}}
+14
View File
@@ -65,6 +65,20 @@ cwa:
pod: pod:
fsGroup: 1000 fsGroup: 1000
fsGroupChangePolicy: Always fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
#
# It is orthogonal to the readOnlyRootFilesystem: false deviation above:
# the filter restricts syscalls, not mount flags, so the s6 init keeps
# its writable root filesystem and the PUID/PGID remapping to uid 1000
# stays active. Verified against v4.0.6 under the filter.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
readOnlyRootFilesystem: false readOnlyRootFilesystem: false
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://avatars.githubusercontent.com/u/988985
type: application type: application
version: 3.0.0+up1.46.4 version: 4.0.0+up1.46.4
appVersion: "1.46.4" appVersion: "1.46.4"
maintainers: maintainers:
+2 -1
View File
@@ -224,7 +224,8 @@ the base image.
"runAsUser" 10000 "runAsUser" 10000
"runAsGroup" 10000 "runAsGroup" 10000
"fsGroup" 10000 "fsGroup" 10000
"fsGroupChangePolicy" "Always" -}} "fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "minecraft-router.defaultedDict" (dict "defaults" $defaults "given" $given "path" "server.securityContext.pod") -}} {{- include "minecraft-router.defaultedDict" (dict "defaults" $defaults "given" $given "path" "server.securityContext.pod") -}}
{{- end -}} {{- end -}}
@@ -27,7 +27,7 @@ spec:
{{- include "minecraft-router.podSecurityContext" .Values.server.securityContext | nindent 8 }} {{- include "minecraft-router.podSecurityContext" .Values.server.securityContext | nindent 8 }}
containers: containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment - name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
image: "itzg/mc-router:{{ .Chart.AppVersion }}" image: "docker.io/itzg/mc-router:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
args: args:
- "--port" - "--port"
+9
View File
@@ -108,6 +108,15 @@ server:
# Keeps the mounted routing-config ConfigMap readable for that gid. # Keeps the mounted routing-config ConfigMap readable for that gid.
fsGroup: 10000 fsGroup: 10000
fsGroupChangePolicy: Always fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
# No deviation needed: the image ships nothing but the static binary and # No deviation needed: the image ships nothing but the static binary and
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/outline/outline/main/public/images/icon-
type: application type: application
version: 6.0.0+up1.9.2 version: 7.0.0+up1.9.2
appVersion: 1.9.2 appVersion: 1.9.2
maintainers: maintainers:
+2 -1
View File
@@ -217,7 +217,8 @@ there is no dependency-free alternative to fall back to.
"runAsUser" 1001 "runAsUser" 1001
"runAsGroup" 1001 "runAsGroup" 1001
"fsGroup" 1001 "fsGroup" 1001
"fsGroupChangePolicy" "Always" -}} "fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "outline.defaultedDict" (dict "defaults" $defaults "given" $given "path" "outline.securityContext.pod") -}} {{- include "outline.defaultedDict" (dict "defaults" $defaults "given" $given "path" "outline.securityContext.pod") -}}
{{- end -}} {{- end -}}
+1 -1
View File
@@ -21,7 +21,7 @@ spec:
{{- include "outline.podSecurityContext" .Values.outline.securityContext | nindent 8 }} {{- include "outline.podSecurityContext" .Values.outline.securityContext | nindent 8 }}
containers: containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-sfs - name: {{ .Release.Name }}-{{ .Chart.Name }}-sfs
image: "outlinewiki/outline:{{ .Chart.AppVersion }}" image: "docker.io/outlinewiki/outline:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
- name: PORT - name: PORT
+9
View File
@@ -30,6 +30,15 @@ outline:
runAsGroup: 1001 runAsGroup: 1001
fsGroup: 1001 fsGroup: 1001
fsGroupChangePolicy: Always fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/PatchMon/PatchMon/main/frontend/public/a
type: application type: application
version: 6.1.0+up2.1.3 version: 7.0.0+up2.1.3
appVersion: "2.1.3" appVersion: "2.1.3"
maintainers: maintainers:
+2 -1
View File
@@ -217,7 +217,8 @@ helpers take dict "given" <block|nil> "root" $.
{{- $defaults := dict {{- $defaults := dict
"runAsNonRoot" true "runAsNonRoot" true
"runAsUser" 65532 "runAsUser" 65532
"runAsGroup" 65532 -}} "runAsGroup" 65532
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "patchmon.defaultedDict" (dict "defaults" $defaults "given" $given "path" "patchmon.server.securityContext.pod") -}} {{- include "patchmon.defaultedDict" (dict "defaults" $defaults "given" $given "path" "patchmon.server.securityContext.pod") -}}
{{- end -}} {{- end -}}
+12 -1
View File
@@ -22,6 +22,17 @@ patchmon:
runAsNonRoot: true runAsNonRoot: true
runAsUser: 65532 runAsUser: 65532
runAsGroup: 65532 runAsGroup: 65532
# RuntimeDefault applies the container runtime's default seccomp
# filter, which blocks the syscalls a normal workload never makes. It
# sits in the pod context on purpose: from here it covers every
# container in the pod - the server and the optional guacd sidecar
# alike - including init containers, while a container-level
# seccompProfile would have to be repeated for each one (and silently
# missed on the next one added). A container that genuinely needs a
# different filter can still override it under
# securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
@@ -88,7 +99,7 @@ patchmon:
enabled: false enabled: false
# guacd is an independent upstream application, so its image is not tied # guacd is an independent upstream application, so its image is not tied
# to the chart's appVersion. Pinned to the version upstream ships with. # to the chart's appVersion. Pinned to the version upstream ships with.
image: guacamole/guacd:1.6.0 image: docker.io/guacamole/guacd:1.6.0
# The image runs as its own unprivileged user (uid 1000); it only needs a # The image runs as its own unprivileged user (uid 1000); it only needs a
# writable /tmp, which the chart provides as an emptyDir. # writable /tmp, which the chart provides as an emptyDir.
securityContext: securityContext:
+1 -1
View File
@@ -3,7 +3,7 @@ name: satisfactory
description: A Helm chart to deploy a Satisfactory Gameserver on Kubernetes description: A Helm chart to deploy a Satisfactory Gameserver on Kubernetes
icon: https://raw.githubusercontent.com/wolveix/satisfactory-server/main/.github/logo.png icon: https://raw.githubusercontent.com/wolveix/satisfactory-server/main/.github/logo.png
type: application type: application
version: 5.0.0+upv1.9.10 version: 6.0.0+upv1.9.10
appVersion: "v1.9.10" appVersion: "v1.9.10"
maintainers: maintainers:
- name: jklein - name: jklein
+2 -1
View File
@@ -224,7 +224,8 @@ Probe specifics that a rebuilt default must not lose:
"runAsUser" 1000 "runAsUser" 1000
"runAsGroup" 1000 "runAsGroup" 1000
"fsGroup" 1000 "fsGroup" 1000
"fsGroupChangePolicy" "OnRootMismatch" -}} "fsGroupChangePolicy" "OnRootMismatch"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "satisfactory.defaultedDict" (dict "defaults" $defaults "given" $given "path" "securityContext.pod") -}} {{- include "satisfactory.defaultedDict" (dict "defaults" $defaults "given" $given "path" "securityContext.pod") -}}
{{- end -}} {{- end -}}
+9
View File
@@ -97,6 +97,15 @@ securityContext:
# entrypoint. # entrypoint.
fsGroup: 1000 fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch fsGroupChangePolicy: OnRootMismatch
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
# Works because the chart mounts emptyDirs at /tmp and the steam user's # Works because the chart mounts emptyDirs at /tmp and the steam user's
+1 -1
View File
@@ -4,5 +4,5 @@ description: A Helm chart to deploy urlaubsverwaltung on Kubernetes
icon: https://raw.githubusercontent.com/urlaubsverwaltung/urlaubsverwaltung/main/src/main/resources/static/favicons/apple-touch-icon.png icon: https://raw.githubusercontent.com/urlaubsverwaltung/urlaubsverwaltung/main/src/main/resources/static/favicons/apple-touch-icon.png
type: application type: application
version: 7.0.0+up6.7.0 version: 8.0.0+up6.7.0
appVersion: 6.7.0 appVersion: 6.7.0
+2 -1
View File
@@ -213,7 +213,8 @@ is only the fallback for the case where an override has erased the block.
{{- $defaults := dict {{- $defaults := dict
"runAsNonRoot" true "runAsNonRoot" true
"runAsUser" 1002 "runAsUser" 1002
"runAsGroup" 1001 -}} "runAsGroup" 1001
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "urlaubsverwaltung.defaultedDict" (dict "defaults" $defaults "given" $given "path" "urlaubsverwaltung.securityContext.pod") -}} {{- include "urlaubsverwaltung.defaultedDict" (dict "defaults" $defaults "given" $given "path" "urlaubsverwaltung.securityContext.pod") -}}
{{- end -}} {{- end -}}
@@ -20,7 +20,7 @@ spec:
{{- include "urlaubsverwaltung.podSecurityContext" .Values.urlaubsverwaltung.securityContext | nindent 8 }} {{- include "urlaubsverwaltung.podSecurityContext" .Values.urlaubsverwaltung.securityContext | nindent 8 }}
containers: containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment - name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
image: "urlaubsverwaltung/urlaubsverwaltung:{{ .Chart.AppVersion }}" image: "docker.io/urlaubsverwaltung/urlaubsverwaltung:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
securityContext: securityContext:
{{- include "urlaubsverwaltung.containerSecurityContext" .Values.urlaubsverwaltung.securityContext | nindent 12 }} {{- include "urlaubsverwaltung.containerSecurityContext" .Values.urlaubsverwaltung.securityContext | nindent 12 }}
+9
View File
@@ -29,6 +29,15 @@ urlaubsverwaltung:
runAsNonRoot: true runAsNonRoot: true
runAsUser: 1002 runAsUser: 1002
runAsGroup: 1001 runAsGroup: 1001
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/l4rm4nd/VoucherVault/main/myapp/static/a
type: application type: application
version: 5.0.0+up1.30.1 version: 6.0.0+up1.30.1
appVersion: "1.30.1" appVersion: "1.30.1"
maintainers: maintainers:
+2 -1
View File
@@ -217,7 +217,8 @@ header, otherwise the pod never becomes ready.
"runAsUser" 33 "runAsUser" 33
"runAsGroup" 33 "runAsGroup" 33
"fsGroup" 33 "fsGroup" 33
"fsGroupChangePolicy" "Always" -}} "fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "voucher-vault.defaultedDict" (dict "defaults" $defaults "given" $given "path" "voucherVault.securityContext.pod") -}} {{- include "voucher-vault.defaultedDict" (dict "defaults" $defaults "given" $given "path" "voucherVault.securityContext.pod") -}}
{{- end -}} {{- end -}}
@@ -27,7 +27,7 @@ spec:
# entrypoint's collectstatic only adds what is missing, e.g. the # entrypoint's collectstatic only adds what is missing, e.g. the
# Django admin static files). See securityContext in values.yaml. # Django admin static files). See securityContext in values.yaml.
- name: init-static - name: init-static
image: "l4rm4nd/vouchervault:{{ .Chart.AppVersion }}" image: "docker.io/l4rm4nd/vouchervault:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
# Copies the children (not ".") so cp never tries to set metadata # Copies the children (not ".") so cp never tries to set metadata
# on the mountpoint itself, which the non-root uid may not own. # on the mountpoint itself, which the non-root uid may not own.
@@ -48,7 +48,7 @@ spec:
ephemeral-storage: 10Mi ephemeral-storage: 10Mi
containers: containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-sfs - name: {{ .Release.Name }}-{{ .Chart.Name }}-sfs
image: "l4rm4nd/vouchervault:{{ .Chart.AppVersion }}" image: "docker.io/l4rm4nd/vouchervault:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
{{- range $value := .Values.voucherVault.env }} {{- range $value := .Values.voucherVault.env }}
+9
View File
@@ -74,6 +74,15 @@ voucherVault:
runAsGroup: 33 runAsGroup: 33
fsGroup: 33 fsGroup: 33
fsGroupChangePolicy: Always fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
+1 -1
View File
@@ -16,7 +16,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 6.0.0+up4.7.0 version: 7.0.0+up4.7.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
+2 -1
View File
@@ -218,7 +218,8 @@ a database outage must not restart the pod.
"runAsUser" 1000 "runAsUser" 1000
"runAsGroup" 1000 "runAsGroup" 1000
"fsGroup" 1000 "fsGroup" 1000
"fsGroupChangePolicy" "Always" -}} "fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "zipline.defaultedDict" (dict "defaults" $defaults "given" $given "path" "zipline.securityContext.pod") -}} {{- include "zipline.defaultedDict" (dict "defaults" $defaults "given" $given "path" "zipline.securityContext.pod") -}}
{{- end -}} {{- end -}}
+9
View File
@@ -26,6 +26,15 @@ zipline:
runAsGroup: 1000 runAsGroup: 1000
fsGroup: 1000 fsGroup: 1000
fsGroupChangePolicy: Always fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container: container:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
readOnlyRootFilesystem: true readOnlyRootFilesystem: true