Kubernetes политика безопасности модуля

Ресурс политики безопасности модуля PodSecurityPolicy определяет следующее:

  • может ли модуль использовать пространства имен хоста IPC, PID или Network;
  • к каким портам хоста может быть привязан модуль;
  • под какими идентификаторами пользователя может работать контейнер;
  • можно ли создать модуль с привилегированными контейнерами;
  • какие функциональные возможности ядра разрешены, какие добавляются по умолчанию и какие всегда игнорируются;
  • какие метки SELinux может использовать контейнер;
  • может ли контейнер использовать доступную для записи корневую файловую систему;
  • под какими группами файловых систем может работать контейнер;
  • какие типы томов может использовать модуль.

Чтобы включить RBAC на minikube его надо запустить с такими параметрами

minikube start --extra-config apiserver.Authenticatin.PasswordFile.BasicAuthFile=/etc/kubernetes/passwd --extra-config=apiserver.Authorization.Mode=RBAC --extra-config=apiserver.GenericServerRunOptions.AdmissionControl=NamespaceLifecysle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,PodSecurityPolicy

И создать пользователей в вируалке

cat <<EOF | minikube ssh sudo tee /etc/kubernetes/passwd
password,alice,1000,basic-user
password,bob,2000,privileged-user
EOF

PodSecurityPolicy — позволяют добавить или удалить привилегии для вновь созданных подов. Чтобы применять данные политики пользователям или namespaces, есть механизм RBAC

Создавая ClusterRole мы добавляем в них политики и при помощи ClusterRoleBinding привязываем из к определённым группам и пользователям

Создадим политику, которая позволит привелигерованным пользователям создавать привилегированные контейнеры

apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:
  name: privileged
spec:
  privileged: true
  runAsUser:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  volumes:
  - '*'

Просмотрим политики

kubectl get psp

Создадим роль в которой будет использоваться наша политика

kubectl create clusterrole psp-privileged --verb=use --resource=podsecuritypolicies --resource-name=privileged

Теперь привязываем данную политику к пользователю

kubectl create clusterrolebinding psp-bob --clusterrole=psp-privileged --user=bob

Создадим пользователя

kubectl config set-credentials bob --username=bob --password=1234

Создадим модуль, с использованием пользователя

kubectl --user bob create -f pod-privileged.yaml

 

K8S

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.