Tengo un clúster K8S ejecutándose en el servicio Azure AKS.
Quiero hacer cumplir la política MustRunAsNonRoot . ¿Cómo hacerlo?
Se crea la siguiente política:
apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: restrict-root spec: privileged: false allowPrivilegeEscalation: false runAsUser: rule: MustRunAsNonRoot seLinux: rule: RunAsAny fsGroup: rule: RunAsAny supplementalGroups: rule: RunAsAny volumes: - '*'Se despliega en el clúster:
$ kubectl get psp NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES restrict-root false RunAsAny MustRunAsNonRoot RunAsAny RunAsAny false *El controlador de admisión se está ejecutando en el clúster:
$ kubectl get pods -n gatekeeper-system NAME READY STATUS RESTARTS AGE gatekeeper-audit-7b4bc6f977-lvvfl 1/1 Running 0 32d gatekeeper-controller-5948ddcd54-5mgsm 1/1 Running 0 32d gatekeeper-controller-5948ddcd54-b59wg 1/1 Running 0 32dDe todos modos, es posible ejecutar un pod simple ejecutándose bajo la raíz:
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mypod image: busybox args: ["sleep", "10000"] securityContext: runAsUser: 0El pod se está ejecutando:
$ kubectl describe po mypod Name: mypod Namespace: default Priority: 0 Node: aks-default-31327534-vmss000001/10.240.0.5 Start Time: Mon, 08 Feb 2021 23:10:46 +0100 Labels: <none> Annotations: <none> Status: Running¿Por qué no se aplica MustRunAsNonRoot ? ¿Cómo hacerlo cumplir?
EDITAR: Parece que el motor de AKS no es compatible con PodSecurityPolicy ( lista de políticas admitidas ). Entonces la pregunta sigue siendo la misma: ¿cómo hacer cumplir la regla MustRunAsNonRoot en las cargas de trabajo?
No debe usar PodSecurityPolicy en el clúster de Azure AKS, ya que se desactivó a partir del 31 de mayo de 2021 a favor de Azure Policy para AKS . Consulte los documentos oficiales para obtener más detalles:
Advertencia
La característica que se describe en este documento, la política de seguridad de pod (versión preliminar), está en desuso y ya no estará disponible después del 31 de mayo de 2021 a favor de Azure Policy para AKS . La fecha de depreciación se ha extendido desde la fecha anterior del 15 de octubre de 2020.
Por lo tanto, actualmente debería usar Azure Policy para AKS , donde, entre otras políticas integradas agrupadas en iniciativas (una iniciativa en Azure Policy es una colección de definiciones de políticas que se adaptan para lograr un objetivo general único), puede encontrar una política que El objetivo es no permitir la ejecución de contenedores privilegiados en su clúster de AKS .
En cuanto a PodSecurityPolicy , por el momento debería seguir funcionando. Marque aquí si no se olvidó de nada, por ejemplo, asegúrese de configurar el ClusterRole y el ClusterRoleBinding correspondientes para permitir el uso de la política.