J'ai activé le podsecuritypolicy dans minikube. Par défaut, il a créé deux psp - privilégié et restreint.
NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES
privileged true * RunAsAny RunAsAny RunAsAny RunAsAny false *
restricted false RunAsAny MustRunAsNonRoot MustRunAs MustRunAs false configMap,emptyDir,projected,secret,downwardAPI,persistentVolumeClaim
J'ai également créé un utilisateur linux - kubexz, pour lequel j'ai créé un ClusterRole et un RoleBinding afin de restreindre la gestion des pods à l'espace de noms de kubexz, et d'utiliser le psp restreint.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: only-edit
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["create", "delete", "deletecollection", "patch", "update", "get", "list", "watch"]
- apiGroups: ["policy"]
resources: ["podsecuritypolicies"]
resourceNames: ["restricted"]
verbs: ["use"]
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: kubexz-rolebinding
namespace: kubexz
subjects:
- kind: User
name: kubexz
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: only-edit
J'ai placé le fichier kubeconfig dans mon utilisateur kubexz $HOME/.kube. Le RBAC fonctionne bien - à partir de l'utilisateur kubexz, je suis seulement capable de créer et de gérer les ressources des pods dans l'espace de noms kubexz, comme prévu.
Mais quand je poste un manifeste de pods avec securityContext.privileged: true
la politique de sécurité des pods restreinte ne m'empêche pas de créer ce pod. Je ne devrais pas être en mesure de créer un pod avec un conteneur à privilèges. Mais le pod est créé. Je ne sais pas ce qui m'échappe.
apiVersion: v1
kind: Pod
metadata:
name: new-pod
spec:
hostPID: true
containers:
- name: justsleep
image: alpine
command: ["/bin/sleep", "999999"]
securityContext:
privileged: true