Позволяет использовать в кластере политики безопасности согласно Pod Security Standards Kubernetes. Модуль для работы использует Gatekeeper.
Pod Security Standards определяют три политики, охватывающие весь спектр безопасности. Эти политики являются кумулятивными, т.е. состоящими из набора политик, и варьируются по уровню ограничений от “неограничивающего” до “ограничивающего значительно”.
Список политик, предлагаемых модулем для использования:
Privileged
— неограничивающая политика с максимально широким уровнем разрешений (используется по умолчанию).Baseline
— минимально ограничивающая политика, которая предотвращает наиболее известные и популярные способы повышения привилегий. Позволяет использовать стандартную (минимально заданную) конфигурацию Pod’а.Restricted
— политика со значительными ограничениями. Предъявляет самые жесткие требования к Pod’ам.
Подробнее про каждый набор политик и их ограничения можно прочитать в документации Kubernetes.
Для применения политики достаточно установить лейбл security.deckhouse.io/pod-policy=<POLICY_NAME>
на соответствующее пространство имен.
Пример установки политики Restricted
для всех Pod’ов в пространстве имен my-namespace
:
kubectl label ns my-namespace security.deckhouse.io/pod-policy=restricted
Предлагаемые модулем политики могут быть расширены. Примеры расширения политик можно найти в FAQ.
Операционные политики
Модуль предоставляет набор операционных политик и лучших практик для безопасной работы ваших приложений. Мы рекомендуем устанавливать следующий минимальный набор операционных политик:
---
apiVersion: deckhouse.io/v1alpha1
kind: OperationPolicy
metadata:
name: common
spec:
policies:
allowedRepos:
- myrepo.example.com
- registry.deckhouse.io
requiredResources:
limits:
- memory
requests:
- cpu
- memory
disallowedImageTags:
- latest
requiredProbes:
- livenessProbe
- readinessProbe
maxRevisionHistoryLimit: 3
imagePullPolicy: IfNotPresent
priorityClassName: production-low
checkHostNetworkDNSPolicy: true
checkContainerDuplicates: true
match:
namespaceSelector:
labelSelector:
matchLabels:
operation-policy.deckhouse.io/enabled: "true"
Для применения приведенной политики достаточно навесить лейбл operation-policy.deckhouse.io/enabled: "true"
на желаемый namespace. Политика, приведенная в примере, рекомендована для использования командой Deckhouse. Аналогичным образом вы можете создать собственную политику с необходимыми настройками.