🌐 Kubernetes — мощная система оркестрации контейнеров, но её безопасность требует внимания. Рассмотрим основные уязвимости и способы защиты с примерами кода.
1️⃣ Неправильная настройка RBAC
Некорректная настройка ролей может предоставить лишние привилегии.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: example-admin-binding
subjects:
- kind: ServiceAccount
name: example-service-account
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
Защита: Примените принцип минимальных привилегий.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-only-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
2️⃣ Уязвимости в API Kubernetes
Неправильно настроенная аутентификация API может привести к несанкционированному доступу.
Защита: Включите TLS и настройте аутентификацию. Пример включения TLS:
apiServer:
certSANs:
- "your-cluster-api-server.com"
tlsCipherSuites:
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
3️⃣ Уязвимости в секретах Kubernetes
Утечка секретов может привести к компрометации.
Защита: Шифруйте секреты в etcd. Пример конфигурации:
apiVersion: apps/v1
kind: Secret
metadata:
name: my-secret
namespace: default
data:
password: cGFzc3dvcmQ=
4️⃣ Привилегированные контейнеры
Привилегированные контейнеры могут получить доступ к ядру ОС.
Защита: Не используйте флаг --privileged. Пример политики безопасности:
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted-psp
spec:
privileged: false
runAsUser:
rule: 'MustRunAsNonRoot'
5️⃣ Уязвимости в образах контейнеров
Проблема: Использование уязвимых или устаревших образов.
Защита: Сканируйте образы на уязвимости с помощью Trivy. Команда для сканирования:
trivy image my-image:latest
