Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Стандарты безопасности в Kubernetes

flant
March 31, 2023

Стандарты безопасности в Kubernetes

Доклад руководителя разработки Deckhouse Kubernetes Platform (https://dechouse.ru/) Константина Аксенова на VK Kubernetes Conf 2023.

flant

March 31, 2023
Tweet

More Decks by flant

Other Decks in Technology

Transcript

  1. Стандарты
    безопасности
    в Kubernetes
    Константин Аксёнов Руководитель разработки
    Deckhouse Kubernetes Platform

    View Slide

  2. Все знают про безопасность,
    но далеко не всегда делают правильно.

    View Slide

  3. Почему сегодня все говорят про
    безопасность в Kubernetes?

    View Slide

  4. Распространение Kubernetes
    За 3 года количество компаний
    с 50+ кластерами Kubernetes
    выросло с 15 до 29%.
    Число действующих кластеров Kubernetes
    2022
    2021
    2020
    5 или
    меньше
    6–10 11–25 26–50 Больше
    чем 50
    12% 23% 20% 16% 29%
    25% 32% 17% 10% 16%
    30% 27% 16% 13% 15%
    Исследование VMware The State of Kubernetes 2022

    View Slide

  5. Нужно больше золота Kubernetes-кластеров
    48% респондентов ожидают
    существенного роста количества
    кластеров Kubernetes в компании.
    Ожидаемый рост числа кластеров
    Kubernetes в компаниях
    Резко
    увеличится
    Существенно
    увеличится
    Заметно
    увеличится
    (больше чем вдвое)
    (более чем на
    50–100%)
    (на 20–50%)
    13%
    35%
    28%
    48%
    Исследование VMware The State of Kubernetes 2022

    View Slide

  6. Больше кластеров
    Kubernetes — это же хорошо?..

    View Slide

  7. Больше внедрений, больше проблем
    В организациях, где контейнеры
    используются практически для
    всех приложений, безопасность
    становится главным вызовом.
    Исследование CNCF Annual Survey 2022
    25%
    41%
    44%
    40%
    35%
    30%
    ОТСУТСТВИЕ ЭКСПЕРТИЗЫ БЕЗОПАСНОСТЬ
    Контейнеры
    используются для
    большинства или
    всех приложений
    Контейнеры
    используются для
    некоторых
    приложений
    Контейнеры
    находятся в стадии
    пилотного проекта
    или активно
    оцениваются
    Вызовы при использовании контейнеров

    View Slide

  8. Проблемы точно есть
    Исследование Red Hat State of Kubernetes security report 2022
    Только 7% опрошенных ответили,
    что не столкнулись с инцидентами
    связанными с безопасностью
    при эксплуатации контейнеров
    и/или Kubernetes.
    За последние 12 месяцев
    Проблемы с безопасностью
    53%
    38%
    30%
    22%
    7%
    Обнаружена некорректная конфигурация
    Крупная уязвимость, требующая устранения
    Инцидент безопасности в runtime
    Непройденный аудит
    Нет проблем

    View Slide

  9. Новые-старые вызовы, связанные с безопасностью
    Больше половины опрошенных
    откладывали или задерживали deploy
    приложений из-за опасений насчет
    безопасности в Kubernetes. 45%
    Нет
    55%
    Да
    Откладывали ли вы deploy приложений из-за
    опасений насчет безопасности в Kubernetes?
    Исследование Red Hat State of Kubernetes security report 2022

    View Slide

  10. Как перестать беспокоиться
    и начать получать удовольствие
    от Kubernetes?

    View Slide

  11. Center for Internet Security
    Корректность конфигурации проверяется
    для следующих компонентов:
    Есть множество реализаций, одна
    из самых популярных — kube-bench.
    Kubernetes CIS Benchmark
    ● Компоненты Control Plane
    ○ Конфигурационные файлы узлов
    Control Plane
    ○ API Server
    ○ Controller Manager
    ○ Scheduler
    ○ etcd
    ● Конфигурация Control Plane
    ○ Аутентификация и авторизация
    ○ Логирование и аудит
    ● Worker Nodes
    ○ Конфигурационные файлы worker-узлов
    ○ Конфигурация kubelet
    ● Policies (RBAC, Service Accounts,
    Pod Security Standards, Network Policies)

    View Slide

  12. Payment Card Industry Security Standards Council
    ● Аутентификация и авторизация
    ● Безопасность приложений
    ● Сетевая безопасность
    ● Управление секретами
    ● Мониторинг и аудит
    ● Безопасность среды выполнения
    ● Управление ресурсами
    ● Управление конфигурацией
    Guidance for Containers and Container Orchestration Tools
    Общий стандарт без инструкций
    для реализации
    Содержит разделы:

    View Slide

  13. Федеральная служба по техническому и экспортному контролю
    ● Изоляция контейнеров
    ● Выявление уязвимостей в образах
    контейнеров
    ● Контроль целостности контейнеров
    и их образов
    ● Регистрация событий безопасности
    ● Проверка корректности конфигурации
    контейнеров
    ● Управление доступом
    Требования по безопасности информации к средствам контейнеризации
    В документе говорится о следующих
    функциях безопасности:
    Приказ ФСТЭК России
    от 4 июля 2022 г.
    № 118

    View Slide

  14. И многие другие

    View Slide

  15. Модель 4С’s облачной безопасности
    Разделение безопасности на слои

    View Slide

  16. Модель 4С’s облачной безопасности
    ● Защита приложений
    и используемых библиотек
    ● Контроль над запускаемыми
    контейнерами и защита runtime
    ● Ограничение доступа к Kubernetes
    control plane и узлам кластера
    ● Безопасный доступ к API Cloud и
    инфраструктуре
    Cluster
    Master Node
    Node
    Container Runtime
    Pod
    Container
    Control Plane
    Components
    kube-apiserver
    kubelet
    APP APP

    View Slide

  17. 5 шагов к безопасности в Kubernetes
    Корректная конфигурация
    кластера Kubernetes
    Сканирование образов
    Сетевая безопасность
    Контроль над запускаемыми
    приложениями
    Аудит и регистрация событий
    1
    2
    3
    4
    5

    View Slide

  18. Корректная конфигурация кластера Kubernetes
    Проверить конфигурацию control-plane
    и узлов кластера, например с помощью kube-bench
    Ограничить сетевой доступ к Kubernetes API
    Каждый пользователь/компонент должен уникально
    идентифицироваться при доступе к Kubernetes API
    Кажется, что ничего сложного
    Настроить RBAC и выдавать только необходимые
    разрешения
    1
    2
    3
    4

    View Slide

  19. Корректная конфигурация кластера Kubernetes
    После создания кластера никто не должен
    аутентифицироваться в Kubernetes API как system:masters.
    Проверим одного из популярных облачных провайдеров managed Kubernetes.
    Если такой kubeconfig утечет,
    то придется перевыпускать CA и сертификаты.
    cat config | yq '.users[0].user.client-certificate-data' | base64 -d |
    openssl x509 -subject -noout
    subject=O = system:masters, CN = kube-admin

    View Slide

  20. Сканирование образов
    ● На этапе конвейера CI/CD
    ● Registry по расписанию
    ● В кластере Kubernetes
    ● Есть множество инструментов
    как self-hosted, так и SaaS

    View Slide

  21. Сканирование образов
    ● Необходимо разбирать уязвимости. Не каждый Critical несет
    угрозу, и его можно эксплуатировать
    ● Использование общих базовых образов упрощает процесс
    исправления CVE
    ● Используем образы с необходимым количеством зависимостей
    ● Собираем артефакт отдельно и копируем в итоговый контейнер,
    который будет использоваться в кластере
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    FROM $BASE_GOLANG_ALPINE as artifact
    WORKDIR /go/src/github.com/kubernetes-incubator/descheduler
    RUN apk add --update git make
    RUN git clone https://github.com/kubernetes-incubator/descheduler.git . \
    && git checkout v0.21.0
    RUN make
    FROM $BASE_ALPINE
    COPY --from=artifact
    /go/src/github.com/kubernetes-incubator/descheduler/_output/bin/descheduler
    /bin/descheduler
    CMD ["/bin/descheduler", "--help"]

    View Slide

  22. Сетевая безопасность
    ● CNI должен поддерживать сетевые политики
    ● Ingress- и egress-сетевые политики
    для всех компонентов кластера
    ● По умолчанию Deny all, все соединения
    должны быть явно разрешены
    Опционально:
    ● Глобальные политики на весь кластер
    ● Хостовые политики
    ● Визуализация сетевых соединений
    ● Редактор для сетевых политик

    View Slide

  23. kubectl exec
    Сетевая безопасность

    View Slide

  24. https://editor.cilium.io/
    Сетевая безопасность

    View Slide

  25. Сетевая безопасность
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    egress:
    - toEndpoints:
    - matchLabels:
    io.kubernetes.pod.namespace: kube-system
    k8s-app: kube-dns
    toPorts:
    - ports:
    - port: "53"
    protocol: UDP
    rules:
    dns:
    - matchPattern: "*"
    - toEndpoints:
    - {}

    View Slide

  26. Сетевая безопасность

    View Slide

  27. ● Внедрение политик необходимо
    как в «коммунальных кластерах», так и в случае,
    если у каждого сервиса отдельный кластер
    ● Очень важно понимать и контролировать,
    кто/что и куда обращается
    ● Policy as code
    ● Внедрять на живую гораздо сложнее, но возможно
    Сетевая безопасность

    View Slide

  28. Контроль над запускаемыми приложениями
    ● Validating Admission Controller

    View Slide

  29. В Kubernetes 1.23 есть Pod Security Admission из коробки.
    Если требуется кастомизация и недостаточно Pod Security Standards.
    Варианты:
    ● Kubewarden
    ● Kyverno
    ● OPA Gatekeeper
    Контроль над запускаемыми приложениями

    View Slide

  30. apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    apiVersion: deckhouse.io/v1alpha1
    kind: OperationPolicy
    metadata:
    name: common
    spec:
    policies:
    allowedRepos:
    - myregistry.example.com
    requiredResources:
    limits:
    - memory
    requests:
    - cpu
    - memory
    disallowedImageTags:
    - latest
    requiredProbes:
    - livenessProbe
    - readinessProbe
    maxRevisionHistoryLimit: 3
    imagePullPolicy: Always
    priorityClassNames:
    - production-high
    checkHostNetworkDNSPolicy: true
    checkContainerDuplicates: true
    match:
    namespaceSelector:
    labelSelector:
    matchLabels:
    operation-policy.deckhouse.io/enabled: "true"
    Типовые политики
    для запускаемых приложений

    View Slide

  31. Ограничить
    количество ревизий
    Обязательно
    прописывать ресурсы
    Указывать
    priorityClass
    Использовать
    пробы
    Разрешить только
    доверенные registry
    Запретить
    использовать тег latest
    Контроль над запускаемыми приложениями

    View Slide

  32. ● Runc and CVE-2019-5736
    ● Контейнер, запускаемый от
    root, мог получить доступ к хосту
    ● Высокий риск, если приложения запускаются
    из публичных репозиториев
    ● Больше контроля, меньше пространства
    для ошибки и возникновения уязвимости
    Контроль над запускаемыми приложениями

    View Slide

  33. Аудит и регистрация событий
    ● Самый простой аудит в Kubernetes
    из коробки — это аудит Kubernetes API
    ● Легко настроить
    Примеры: https://kubernetes.io/docs/tasks/debug/debug-cluster/audit/#audit-policy
    ● Логирование в файл или stdout
    ● Отправляем в систему сбора логов
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    apiVersion: audit.k8s.io/v1
    kind: Policy
    omitStages:
    - RequestReceived
    rules:
    - level: RequestResponse
    resources:
    - group: ""
    resources: ["pods"]

    View Slide

  34. Аудит и регистрация событий
    Пример лога
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    {
    "kind": "Event",
    "apiVersion": "audit.k8s.io/v1",
    "level": "RequestResponse",
    "auditID": "28eff2fc-2e81-41c1-980b-35d446480e77",
    "stage": "ResponseComplete",
    "requestURI": "/api/v1/namespaces/default/pods/nginx-6799fc88d8-5p7x5",
    "verb": "delete",
    "user": {
    "username":
    "system:serviceaccount:d8-service-accounts:gitlab-runner-deploy",
    "uid": "fd5a6209-c893-4b77-adf7-90500ecd2723",
    "groups": [
    "system:serviceaccounts",
    "system:serviceaccounts:d8-service-accounts",
    "system:authenticated"
    ]
    },

    View Slide

  35. Аудит и регистрация событий
    Необходимо анализировать события аудита Kubernetes API:
    ● Изменения политик безопасности
    ● Создание/изменение/удаление объектов пользователями
    Необходимо регистрировать события, которые происходят без участия API:
    ● События в хостовой ОС на узлах кластера
    ● События внутри контейнера
    Для решения этих вопросов есть приложения, которые реализуют runtime security.
    В Deckhouse используется Falco, который содержит следующие функции:
    ● Разбор системных вызовов на хосте
    ● Получение аудит-лога от Kubernetes API через Webhook backend
    ● Проверка потока событий с помощью сконфигурированных правил
    ● Отправка алертов в случае нарушения правил

    View Slide

  36. Аудит и регистрация событий
    Необходимо анализировать события аудита Kubernetes API:
    ● Изменения политик безопасности
    ● Создание/изменение/удаление объектов пользователями
    Необходимо регистрировать события, которые происходят без участия API:
    ● События в хостовой ОС на узлах кластера
    ● События внутри контейнера
    Для решения этих вопросов есть приложения, которые реализуют runtime security.
    В Deckhouse используется Falco, который содержит следующие функции:
    ● Разбор системных вызовов на хосте
    ● Получение аудит-лога от Kubernetes API через Webhook backend
    ● Проверка потока событий с помощью сконфигурированных правил
    ● Отправка алертов в случае нарушения правил

    View Slide

  37. Аудит и регистрация событий
    Необходимо анализировать события аудита Kubernetes API:
    ● Изменения политик безопасности
    ● Создание/изменение/удаление объектов пользователями
    Необходимо регистрировать события, которые происходят без участия API:
    ● События в хостовой ОС на узлах кластера
    ● События внутри контейнера
    Для решения этих вопросов есть приложения, которые реализуют runtime security.
    В Deckhouse используется Falco, который содержит следующие функции:
    ● Разбор системных вызовов на хосте
    ● Получение аудит-лога от Kubernetes API через Webhook backend
    ● Проверка потока событий с помощью сконфигурированных правил
    ● Отправка алертов в случае нарушения правил

    View Slide

  38. Аудит и регистрация событий

    View Slide

  39. Аудит и регистрация событий

    View Slide

  40. Аудит и регистрация событий

    View Slide

  41. Аудит и регистрация событий
    falco-driver-loader — init-контейнер, который собирает eBPF-программу и сохраняет
    ее в общую папку для дальнейшего использования системой Falco

    View Slide

  42. Аудит и регистрация событий
    falco — собирает события, обогащает их метаданными и отправляет в лог

    View Slide

  43. Аудит и регистрация событий
    rules-loader — собирает custom resourcе’ы (FalcoAuditRules) из Kubernetes и сохраняет их в общую папку

    View Slide

  44. Аудит и регистрация событий
    falcosidekick — экспортирует события как метрики, по которым потом можно настроить алерты

    View Slide

  45. Аудит и регистрация событий
    kube-rbac-proxy — защищает endpoint метрик falcosidekick (запрещает неавторизованный доступ)

    View Slide

  46. Аудит и регистрация событий
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    apiVersion: deckhouse.io/v1alpha1
    kind: FalcoAuditRules
    metadata:
    name: host-audit-custom
    spec:
    rules:
    - list:
    name: cli_proc_names
    items: [crictl, docker]
    - macro:
    name: spawned_process
    condition: (evt.type in (execve, execveat) and evt.dir=<)
    - rule:
    name: Crictl or docker cli are executed
    desc: Detect ctl or docker are executed in cluster
    condition: spawned_process and proc.name in (crictl, docker)
    output: Crictl or docker are executed (user=%user.name user_loginuid=%user.loginuid
    command=%proc.cmdline pid=%proc.pid parent_process=%proc.pname)
    priority: Warning
    tags: [host]
    Пример FalcoAuditRules

    View Slide

  47. Аудит и регистрация событий
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    - items:
    - crictl
    - docker
    list: cli_proc_names
    - condition: (evt.type in (execve, execveat) and evt.dir=<)
    macro: spawned_process
    - condition: spawned_process and proc.name in (cli_proc_names)
    desc: Detect crictl or docker are executed in cluster
    enabled: true
    output: Crictl or docker are executed (user=%user.name user_loginuid=%user.loginuid
    command=%proc.cmdline pid=%proc.pid parent_process=%proc.pname)
    priority: Warning
    rule: Crictl or docker cli are executed
    source: syscall
    tags:
    - host
    Сгенерированный Falco Rule

    View Slide

  48. Аудит и регистрация событий
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    {"hostname":"demo-master-0","output":"14:17:03.188306224: Warning Crictl or docker are
    executed (user= user_loginuid=1000 command=crictl ps pid=273049
    parent_process=bash) k8s.ns= k8s.pod=
    container=host","priority":"Warning","rule":"Crictl or docker cli are
    executed","source":"syscall","tags":["host"],"time":"2023-03-14T14:17:03.188306224Z",
    "output_fields":
    {"container.id":"host","evt.time":1678803423188306224,"k8s.ns.name":null,"k8s.pod.name
    ":null,"proc.cmdline":"crictl
    ps","proc.pid":273049,"proc.pname":"bash","user.loginuid":1000,"user.name":""}}
    {"hostname":"demo-master-0","output":"14:43:34.760338878: Warning Crictl or docker are
    executed (user= user_loginuid=1000 command=crictl stop 067bd732737af pid=307453
    parent_process=bash) k8s.ns= k8s.pod=
    container=host","priority":"Warning","rule":"Crictl or docker cli are
    executed","source":"syscall","tags":["host"],"time":"2023-03-14T14:43:34.760338878Z",
    "output_fields":
    {"container.id":"host","evt.time":1678805014760338878,"k8s.ns.name":null,"k8s.pod.name
    ":null,"proc.cmdline":"crictl stop
    067bd732737af","proc.pid":307453,"proc.pname":"bash","user.loginuid":1000,"user.name":
    ""}}
    Вывод Falco

    View Slide

  49. Аудит и регистрация событий
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    - required_plugin_versions:
    - name: k8saudit
    version: 0.1.0
    - macro: kevt_started
    condition: (jevt.value[/stage]=ResponseStarted)
    - macro: pod_subresource
    condition: ka.target.resource=pods and ka.target.subresource exists
    - macro: kcreate
    condition: ka.verb=create
    - rule: Attach/Exec Pod
    desc: >
    Detect any attempt to attach/exec to a pod
    condition: kevt_started and pod_subresource and kcreate and ka.target.subresource in
    (exec,attach)
    output: Attach/Exec to pod (user=%ka.user.name pod=%ka.target.name resource=%ka.target.resource
    ns=%ka.target.namespace action=%ka.target.subresource command=%ka.uri.param[command])
    priority: NOTICE
    source: k8s_audit
    tags: [k8s]
    Пример правил с аудитом Kubernetes API

    View Slide

  50. Аудит и регистрация событий
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    {"hostname":"demo-master-0","output":"18:27:29.160641000: Notice Attach/Exec to pod
    ([email protected] pod=deckhouse-77f868d554-8zpt4 resource=pods ns=d8-system action=exec
    command=mkdir)","priority":"Notice","rule":"Attach/Exec
    Pod","source":"k8s_audit","tags":["k8s"],"time":"2023-03-14T18:27:29.160641000Z",
    "output_fields":
    {"evt.time":1678818449160641000,"ka.target.name":"deckhouse-77f868d554-8zpt4","ka.target.names
    pace":"d8-system","ka.target.resource":"pods","ka.target.subresource":"exec","ka.uri.param[com
    mand]":"mkdir","ka.user.name":"[email protected]"}}
    Вывод Falco

    View Slide

  51. Аудит и регистрация событий
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
    name: mtls-on
    namespace: myns
    spec:
    host: *.myns.svc
    trafficPolicy:
    tls:
    mode: ISTIO-MUTUAL
    apiVersion: deckhouse.io/v1
    kind: CustomPrometheusRules
    metadata:
    name: runtime-audit-pod-exec
    spec:
    groups:
    - name: runtime-audit-pod-exec
    rules:
    - alert: RuntimeAuditPodExecAlerts
    annotations:
    description: |
    There are suspicious attach/exec operations.
    Check your events journal for more details.
    summary: Falco detected a security incident
    expr: |
    sum(rate(falco_events{rule="Attach/Exec Pod"}[5m])) > 0
    Пример правил для Prometheus

    View Slide

  52. Аудит и регистрация событий
    ● Правила Deckhouse для системных вызовов
    https://github.com/deckhouse/deckhouse/blob/main/ee/modules/650-runtime-audit-engine/rules/falco_rules.yaml
    ● Правила Deckhouse для Kubernetes аудита
    https://github.com/deckhouse/deckhouse/blob/main/ee/modules/650-runtime-audit-engine/rules/k8s_audit_rules.yaml
    ● Правила организации Falcosecurity
    https://github.com/falcosecurity/rules
    ● Пример правила для закрытия CVE от Sysdig
    https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/

    View Slide

  53. Аудит и регистрация событий
    ● Прохождения сертификаций и аттестаций
    ● Разбор случившихся инцидентов
    ● Реагирование на угрозы

    View Slide

  54. Идем дальше?
    Kubernetes — это прекрасный инструмент
    с большим количеством возможностей
    Естественно, есть другие важные аспекты безопасности:
    ● Аутентификация и авторизация
    ● Аудит RBAC
    ● Управление секретами
    ● Защита цепочки поставки
    ○ Запрет запуска образов с уязвимостями
    ○ Запуск только подписанных образов,
    использование cosign
    ● Режим обучения для генерации политик
    ● Автоматическое реагирование на события аудита

    View Slide

  55. Итоги
    Вопрос безопасности в Kubernetes не решен.
    Есть многофункциональный конструктор.
    Kubernetes DIY. Обязательно выделяйте
    время на организацию безопасности.
    Если нет времени, то стоит посмотреть
    в сторону готовых решений:
    ● Kubesec, NeuVector, Kubescape, Luntry и др.
    ● платформы OKD, Rancher, Deckhouse Kubernetes
    Platform и др.
    1
    2
    3

    View Slide

  56. Спасибо
    за внимание
    Константин Аксёнов,
    руководитель разработки
    Deckhouse Kubernetes Platform
    QR код
    t.me/konstantin_aksenov
    konstantin.aksenov@flant.com

    View Slide

  57. Сканирование образов
    Таблица сравнения от Aqua Security
    Сканер OS
    Работает в закрытых
    окружениях
    Сертифицирован ФСТЭК Количество звезд на Github
    Clair Да Да Нет 9,4 К
    Trivy Да Да Нет 16,5 К

    View Slide

  58. Корректная конфигурация кластера Kubernetes
    Проверка CIS Benchmark на worker-узле:
    Проверим одного из популярных облачных провайдеров managed Kubernetes.
    Следует анализировать каждый FAIL.
    Есть инструменты, например kubeletctl, которые
    позволяют найти и использовать уязвимые kubelet’ы.
    [FAIL] 4.2.1 Ensure that the --anonymous-auth argument is set to false
    (Automated)
    [FAIL] 4.2.2 Ensure that the --authorization-mode argument is not set to
    AlwaysAllow (Automated)
    [FAIL] 4.2.3 Ensure that the --client-ca-file argument is set as appropriate
    (Automated)
    [FAIL] 4.2.6 Ensure that the --protect-kernel-defaults argument is set to
    true (Automated)
    Хорошо, что это оказался просто баг в kube-bench

    View Slide

  59. Сканирование образов
    Исходник dashboard

    View Slide

  60. Проблема становится только острее
    Исследование Fairwinds Kubernetes Benchmark Report 2023
    По сравнению с 2022 годом
    в 2023 количество организаций,
    которые запускает более 90%
    приложений с небезопасными
    настройками, выросло до 33%.
    Процент организаций
    Небезопасные настройки
    2022 2023
    0–10% 11–20%
    Затронутые приложения
    21–30% 31–40% 41–50% 51–60% 61–70% 71–80% 81–90% 91–100%
    42%
    10%
    5%
    4%
    0%
    1% 1%
    2%
    3% 3% 3%
    10%
    9%
    11%
    6%
    8% 8%
    24%
    33%
    17%

    View Slide

  61. Контроль над запускаемыми приложениями
    Пример dashboard

    View Slide

  62. О чём будем говорить?
    Подзаголовок
    Текст
    Текст
    Текст с акцентом
    Текст с акцентом
    лого

    View Slide

  63. Заголовок
    лого

    View Slide

  64. Заголовок
    Подзаголовок
    Текст
    Текст
    Текст с акцентом
    Текст с акцентом
    лого

    View Slide

  65. Буллет
    Буллет
    Заголовок
    Подзаголовок
    Буллет
    Буллет
    лого

    View Slide

  66. Заголовок
    Описание
    Заголовок
    Описание
    Заголовок
    Описание
    Заголовок
    Описание
    Заголовок
    лого

    View Slide

  67. Текст Текст
    Текст
    Заголовок
    лого

    View Slide

  68. Текст Текст
    Текст
    Заголовок
    лого

    View Slide

  69. Текст
    Текст
    Текст
    Текст
    Текст
    Текст
    Заголовок
    лого

    View Slide

  70. Текст Текст Текст Текст
    Текст Текст
    Текст Текст
    Заголовок
    лого

    View Slide

  71. Текст Текст Текст
    Текст Текст Текст
    Текст Текст Текст
    Подзаголовок
    Заголовок
    лого

    View Slide

  72. Текст
    лого

    View Slide

  73. Спасибо
    за внимание
    Имя Фамилия,
    должность
    Фото
    QR код
    Имя Фамилия,
    должность
    Фото

    View Slide

  74. Спасибо
    за внимание
    Имя Фамилия,
    должность
    Фото Имя Фамилия,
    должность
    Фото Имя Фамилия,
    должность
    Фото
    QR код
    Имя Фамилия,
    должность
    Фото Имя Фамилия,
    должность
    Фото

    View Slide