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/

Was this helpful?

0 / 0