postgres-operator icon indicating copy to clipboard operation
postgres-operator copied to clipboard

Custom Security Context in postgresql

Open olivejing opened this issue 2 years ago • 8 comments

  • **Which image of the operator are you using? postgres-operator:v1.9.0
  • **Where do you run it - cloud or metal? Kubernetes and OpenShift
  • Type of issue? feature request

Hi, i checked postgres operator configuration and postgresql manifest, there is no parameter to custom SecurityContext. Parameter additional_pod_capabilities only supports adding capabilities in container level SecurityContex. Actually, i want to custom pod level and container lever SecurityContext, example:

pod level SecurityContext:

        securityContext:
          fsGroup: 7777
          runAsNonRoot: true
          runAsUser: 7777

container level SecurityContext:

          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
              - ALL
            privileged: false
            readOnlyRootFilesystem: true
            seccompProfile:
              type: RuntimeDefault

olivejing avatar Feb 16 '23 02:02 olivejing

Postgresql, OperatorConfiguration CRDs provide a rather limited set of SecurityContext configuration properties. I could not find a way how to configure the following properties:

  1. seccompProfile for the pod SecurityContext. It supports the spiloRunAsUser, spiloRunAsGroup, spiloFSGroup only.
  2. SecurityContext configuration for the sidecar containers is not supported.
  3. For the spilo container level is supported only adding capabilities list by the additional_pod_capabilities parameter.

Created the #2244 PR which implements the above features.

hshmilo avatar Feb 27 '23 10:02 hshmilo

I hate to be that guy but is there a timeline when (and if) this will be merged? It is a critical thing for the decision for our current setup...

mjdazz avatar Apr 18 '23 23:04 mjdazz

I agree with @mjdazz that this is a significant issue, as it makes deploying Postgres to Autopilot, for example, impossible.

  • https://github.com/zalando/postgres-operator/issues/1646
  • https://github.com/zalando/postgres-operator/issues/1638

theobolo avatar Apr 27 '23 08:04 theobolo

This MR is very much needed if you are trying to enforce restricted pod policies: https://kubernetes.io/docs/concepts/security/pod-security-standards/ (Yes I know pod policies are deprecated - but you can do the same restricted policy management with Pod Security Admission)

EmilMunksoe avatar Apr 28 '23 07:04 EmilMunksoe

Is there any timeline on when this will be merged, or anything we can do to help it along?

ajchiarello avatar Oct 09 '23 12:10 ajchiarello

+1 on needing this to comply with restricted profiles, as @EmilMunksoe mentioned here

There's an open PR here: https://github.com/zalando/postgres-operator/pull/2244, just needs a review.

mattwing avatar Dec 06 '23 19:12 mattwing

As Workaround you can use a kyverno ClusterPolicy

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: postgresql-securitycontext
spec:
  rules:
    - name: mutate-postgresql-sts
      match:
        any:
          - resources:
              kinds:
                - Pod
              selector:
                matchLabels:
                  application: spilo
      mutate:
        patchStrategicMerge:
          spec:
            containers:
              - (name): "*"
                securityContext:
                  allowPrivilegeEscalation: false
                  capabilities:
                    drop:
                      - ALL
                  seccompProfile:
                    type: RuntimeDefault
            securityContext:
              runAsNonRoot: true

yyvess avatar Jul 02 '24 06:07 yyvess

+1 - Is there anything that I can do to help move this along?

I'm using this operator within vClusters, and can't use the Kyverno Policy workaround until vCluster's next major release (https://www.vcluster.com/docs/platform/integrations/host-kyverno). It seems like my only option would be to wait for that release or switch to the CNPG Operator.

zacharyljones avatar Aug 09 '24 16:08 zacharyljones