☸️ Как создать политику безопасности Kubernetes — Information Security Squad
☸️  Как создать политику безопасности Kubernetes
Если вы хотите поднять безопасность Kubernetes на новый уровень, вам нужно начать работать с политиками безопасности ваших подов.
Вот краткое введение в эту функцию.
Kubernetes — невероятно мощный инструмент управления контейнерами.
Если вы работали с контейнерами достаточно долго, вы знаете, что безопасность должна играть центральную роль в развертывании ваших приложений и сервисов.
Без соблюдения безопасности этих контейнеров может произойти хоас в вашей сети.
Вы, конечно, не хотите этого.
Так что мы можем сделать?
В Kubernetes вы должны рассмотреть возможность создания политик безопасности подов.

Что такое под?

Если вы новичок в Kubernetes, вы можете не знать, что такое под.
Проще говоря, под Kubernetes представляет собой набор процессов, которые составляют контейнер, а именно:
  • Ресурсы хранения
  • Уникальный сетевой IP-адрес
  • Параметры, управляющие тем, как должен работать контейнер
Другими словами, модуль — это под развертывания — либо один контейнер, либо несколько контейнеров, работающих вместе.
Теперь, когда вы понимаете, что такое под, давайте посмотрим, что мы можем сделать с созданием политики безопасности.

Что такое политика безопасности пода Kuberntes?

Политика безопасности пода Kubernetes — это ресурс, который контролирует безопасность спецификации этого пода.
Используя определение объекта PodSecurityPolicy, вы можете управлять такими вещами, как:
  • Возможность запуска привилегированных контейнеров
  • Повышение привилегий
  • Доступ к типам томов
  • Доступ к файловым системам хоста
  • Использование хост-сети
Но как определить политику?
Как и почти все в Kubernetes, это определено в файле YAML.

Как создать политику безопасности пода 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
В выводе будут перечислены детали:

Как назначить политику безопасности 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 --as-group=system:authenticated --as=any-user

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *