Sobes.tech
Middle+

Кои практики знаете за подобряване на сигурността на приложението в Kubernetes?

sobes.tech AI

Отговор от AI

  • Използване на мрежови политики за контрол на трафика между подовете.
  • Прилагане на квоти за ресурси и диапазони на лимити за ограничаване на потреблението на ресурси от подовете.
  • Изключване на привилегирания режим за контейнерите.
  • Минимизиране на привилегиите, предоставени на акаунтите за услуги.
  • Използване на тайни за съхранение на чувствителни данни.
  • Редовно сканиране на контейнерните изображения за уязвимости.
  • Прилагане на ограничения за контекста на сигурността (SCC) в OpenShift или политики за сигурност на подовете (PSP) (остарели) / стандарти за сигурност на подовете в чист Kubernetes.
  • Използване на инструменти за одитиране на клъстера, като Kubesec или OpenSCAP.
  • Внедряване на принципа на минималните привилегии на ниво клъстер и приложения.
  • Сегментиране на подовете и именните пространства.
  • Използване на неизменяемост за разгръщания.

Пример за използване на мрежова политика:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
spec:
  podSelector:
    matchLabels:
      app: backend # Прилага се само към подове с тази етикета
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend # Позволява входящ трафик само от подове frontend
    ports:
    - protocol: TCP
      port: 8080 # Позволява трафик само на този порт

Пример за използване на контекст на сигурност:

apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    runAsUser: 1000 # Изпълнение на контейнера като потребител с ID 1000
    runAsGroup: 3000 # Изпълнение на контейнера като група с ID 3000
    fsGroup: 2000 # Файловата система ще принадлежи към група 2000
  containers:
  - name: sec-ctx-demo
    image: busybox
    command: [ "sh", "-c", "sleep 1h" ]
    securityContext:
      allowPrivilegeEscalation: false # Забраняване на повишаване на привилегиите
      readOnlyRootFilesystem: true # Правене на кореновата файлова система само за четене