Позволяет использовать в кластере политики безопасности согласно 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. Аналогичным образом вы можете создать собственную политику с необходимыми настройками.