Kubernetes — создать политику безопасности — RBAC

Политика безопасности пода Kubernetes – это ресурс, который контролирует безопасность спецификации этого пода.




Используя определение объекта PodSecurityPolicy, вы можете управлять такими вещами, как:




  • Возможность запуска привилегированных контейнеров



  • Повышение привилегий



  • Доступ к типам томов



  • Доступ к файловым системам хоста



  • Использование хост-сети




Как создать политику безопасности пода Kubernetes
Давайте создадим политику безопасности пода Kubernetes, которая предотвращает создание привилегированных модулей и контролирует доступ к томам.
Во-первых, мы должны создать файл YAML.
В терминале введите команду:
nano psp.yaml
В этот файл вставьте следующее:




apiVersion: policy/v1beta1

kind: PodSecurityPolicy

metadata:

  name: psp

spec:

  privileged: false

  seLinux:

    rule: RunAsAny

  supplementalGroups:

    rule: RunAsAny

  runAsUser:

    rule: RunAsAny

  fsGroup:

    rule: RunAsAny

  volumes:

  - '*'




В этом файле мы запрещаем создание привилегированных модулей с помощью строки:




privileged: false




Мы также разрешаем следующее (через правило RunAsAny):




  • SeLinux – позволяет любому пользователю управлять SELinux в модулях.



  • Linux groups – дополнительные группы



  • runAsUser – позволяет пользователям запускать точки входа в контейнер с другим именем пользователя



  • fsGroup – тома, которые поддерживают управление собственностью




Сохраните и закройте файл.




Теперь мы должны применить политику.




Это делается с помощью команды:




kubectl apply -f psp.yaml




Вывод:




podsecurity.policy/psp created




В любой момент вы можете изменить файл YAML и выполнить ту же команду, чтобы переконфигурировать политику.




Убедитесь, что ваша политика доступна, введя команду:




kubectl get psp




В выводе будут перечислены детали:




Created with GIMP




Как назначить политику безопасности Kubernetes поду




Теперь, когда вы создали свою политику, возникает законный вопрос как ее назначить?




Это делается с помощью управления доступом на основе ролей (RBAC).




Создайте конфигурацию RBAC для политики с помощью команды:




nano rbac-psp.yaml




В этот файл вставьте следующее:




kind: ClusterRole

apiVersion: rbac.authorization.k8s.io/v1

metadata:

  name: psp:psp

rules:

- apiGroups:

  - extensions

  resources:

  - podsecuritypolicies

  resourceNames:

  - psp

  verbs:

  - use

---



kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1

metadata:

  name: psp:psp

subjects:

- kind: Group

  name: system:authenticated

  apiGroup: rbac.authorization.k8s.io

roleRef:

  kind: ClusterRole

  name: psp:psp

  apiGroup: rbac.authorization.k8s.io




Приведенный выше файл создаст роль кластера с именем psp, которая может использовать нашу новую политику, которую мы назвали psp.




Это также создаст привязку роли на уровне кластера, которая предоставляет доступ к роли psp: psp каждому аутентифицированному пользователю.




Сохраните и закройте файл.




Создайте эту политику с помощью команды:




kubectl apply -f rbac-psp.yaml




Теперь мы создали политику и контроль RBAC.




Давайте выясним, сможем ли мы теперь использовать эту новую политику.




Введите команду:




kubectl auth can-i use psp/psp




Выход должен сказать «yes».




Конечно, система должна сказать «yes», так как я пользователь с правами администратора.




Но что, если мы проверим это с другим пользователем?




Сделайте это с помощью команды:




kubectl auth can-i use psp/psp




Теперь вы должны увидеть «no» в ответе.




Вы только что создали политику безопасности пода Kubernetes, присвоили ей RBAC и протестировали ее, чтобы убедиться, что политика действительно работает.




Источник: https://sidmid.ru/kubernetes-создать-политику-безопасности-rbac/



2023-01-02T05:56:31
DevOps