k8s (in)security
12.1K subscribers
1.01K photos
38 files
1.56K links
Канал о (не)безопасности Kubernetes + микросервисных, контейнеризированных приложений.

Ведет команда www.luntry.ru

Вопросы, идеи, предложения => @Qu3b3c

https://knd.gov.ru/license?id=673ddbc21039886b1d03b7ce&registryType=bloggersPermission
Download Telegram
Эту неделю начинаем со статьи – Enhancing Kubernetes Security with Kyverno, RuntimeClass, and Kata Containers. В ней автор показывает как с помощью связки Kyverno[1], Kata containers[2] и RuntimeClass[3] можно повысить безопасность кластера Kubernetes.

Ещё по отдельности эти технологии обладают довольно мощным функционалом для security, но объединив их всех вместе можно получить ещё больше профита:

– Enhanced Security
– Greater Flexibility
– Developer and User Productivity


В конце статьи, в качестве примера приводятся две политики для Kyverno. Первая – mutate политика, принудительно проставляет kata RuntimeClass всем Pods запущенным в namespace test. Вторая – проверяет что все Pods с privileged или runAsRoot securityContext, используемые в namespace kube-system деплоятся через kata RuntimeClass.
🔥6🤔2
Продолжаем тему сравнения Cilium Service Mesh и Istio Ambient Mesh.

Если обратить внимание на функциональные возможности, то они практически идентичные. Уверен, есть какие-нибудь нюансы, но и по структуре того где на каком уровне (L7,L4) что реализуется даже сходится. При этом оба на L7 используют Envoy как мы с вами знаем. Скорее отличия будут на L4.

Если вы уже эту тему копали вглубь, то делитесь в комментариях!
👍9🦄3🔥1
Kubernetes Network Policies Viewer – небольшой онлайн-инструмент, который может пригодиться во время ручного написания Network Policy для Kubernetes.

Да, инструмент сильно похож на Cilium Editor (о котором мы уже рассказывали), но и свои отличительные особенности у него есть. Тулза выдаёт наглядное представление о том, как будет работать описанная Network Policy. Бывает очень полезной, когда нужно проверить правильность работы множества сетевых политик.

Из минусов – поддержа только Native Network Policy и отсутствие возможности генерировать сетевые политики простым накликиванием (как это сделано в Cilium Editor).
👍8🦄2🔥1
В эту пятницу 31 марта выступлю на конференции True Tech Day (offlinе + online) от компании МТС в секции Cybersecurity с докладом "Безопасность контейнеров и Kubernetes".

Всегда очень приятно когда такие большие компании приглашают нашу команду Luntry выступить и поделиться нашей уникальной экспертизой в области безопасности контейнеров и Kubernetes.

Преза будет небольшой, но я там наконец визуализировал одну важную вещь по безопасности образов контейнеров, которой прям не терпится поделиться!
🎉20👍1
В рамках изучения Cilium Service Mesh и Istio Ambient Mesh (прошлые посты 1,2) я наткнулся на занимательную статью "Exploring Cilium Layer 7 Capabilities Compared to Istio". Там сравниваются не Service Mesh реализации, а L7 возможности стандартного CNI Cilium (v1.12) и sidecar реализации Istio. И из этой статьи можно узнать много всего интересного о деталях реализации CNI Cilium и Istio, а именно:
- L7 фильтрация в ресурсе CiliumNetworkPolicy реализована как расширение/фильтр (Cilium.L7Policy) для Envoy proxy
- Как выглядит/хранится L7 правило внутри CNI Cilium
- CNI Cilium использует для этого Envoy filter, а Istio использует RBAC filters из апстрима Envoy
- чем является identity в Cilium, как он вычисляется (база это IP, labels) и хранится (это никакой не криптографический приметив, а просто целое число). А в Istio для этого служит service account token - там вообще все сроиться вокруг сертификатов, что как вы понимаете надежнее

Также там поднимается вопрос/проблема, что при модели Envoy per Node ресурсов потребляется меньше, но в случае его отказа страдают сразу все микросервисы на Node. Есть и еще одна интересная проблема с Network cache-based identity, что как я написал выше используется в Cilium, но это заслуживает отдельной заметки ;)
👍9🔥2🐳1
На канале мы уже затрагивали [1,2] тему Kubernetes Validating Admission Policies, но сегодня появился еще один повод. В официальном блоге Kubernetes вышла статья – Kubernetes Validating Admission Policies: A Practical Example.

Несомненным плюсом данного механизма является то, что для валидации данные не отправляются на admissions webhook (как например это реализовано в OPA или Kyverno, или в любом другом Policy Engine), а сразу обрабатываются, под капотом Kubernetes. Ну и конечно же CEL, в качестве языка описания выражений для проверки будет сильно проще в понимании и освоении, чем Rego (тот, что используется в OPA Gatekeeper).

Для более детального погружения в тему советую ознакомиться с видео – Kubernetes Validating Admission Policy Changes The Game. В нём автор показывает практические примеры использования данной технологии, а также рассматривает её недостатки и преимущества.
👍9🔥2🦄1
В статьей "Could network cache-based identity be mistaken?" авторы демонстрируют проблему network cache-based идентификаторов, на примере, идентификатора который используется CNI Cilium и применяется для контроля NetworkPolicy. По итогу у них получается сделать так что NetworkPolicy применяется к микросервису не правильно и обходится!

Весь исходный код данной демонстрации доступен и можно повторить самостоятельно. Или посмотреть видео.

Все это может быть из-за не актуального состояния кэша, которое может быть связано с сетевыми проблемами:
- Network outage
- Cilium pod was down, during an upgrade
- Resource constraints that cause the agent to be slow
- Resource constraints that cause API server to be slow in sending pod events to Cilium pod
- Programming bug that cause the agent to crash
- и т.д.

P.S. Я думаю это открывает достаточно интересный простор для исследования =)
👍7🤔1
Те, кто использует Vault знают, что есть два способа интеграции с Kubernetes:

1) Agent Injector (через sidecar-контейнер)
2) Vault CSI Provider


С недавнего времени появился третий, самый что ни на есть Kubernetes-native подход – с помощью Vault Secrets Operator и его CRD. Vault Secrets Operator работает, отслеживая изменения в CRD. Каждый CRD предоставляет спецификацию, необходимую для того, чтобы Operator мог синхронизировать секреты хранилища с секретом Kubernetes. Затем Operator записывает данные из хранилища непосредственно в целевой Kubernetes Secrets. В целом, плюсы со сравнению со старыми способами следующие:

- Workloads can mount Kubernetes secrets without adding any Vault-specific configuration.
-
Secrets are synced per CRD instead of per consuming pod.
-
Kubernetes secrets act as a durable cluster-local cache of Vault secrets.

Vault Secrets Operator находится в public beta и доступен только в последней версии Vault.
👍18🔥73🥰1👌1
"Container and image vocabulary" - классная визуализация и простое объяснение основных терминов в области контейнеризации.

Самое то, если вы делаете первые шаги в данной области.
👍215🔥2
Недавно я наткнулся на довольно интересный инструмент, который позволяет автоматически исправлять уязвимости в образах контейнерах – copacetic.

Принцип его работы довольно прост:

1) на вход принимает отчет от trivy
2) скачивает необходимые патчи
3) применяет изменения к образу в новом слое с помощью buildkit

Несмотря на всю must-have’ность тулзы, всё же у неё есть ряд недостатков:

- по сути подменяет уязвимую версию библиотеки на последнюю исправленную, что в теории может привести к неработоспособности приложения
- новый образ становится тяжелее (из за добавления нового слоя – см. второй скрин)
- принимает результаты сканирования только от trivy
- может фиксить баги только в тех версиях, для которых есть фиксы (очевидно, но всё же)
- для работы buildkit небходим runc или crun, containerd
- ограниченная поддержка пакетных менеджеров (apk, apt)
👍131
- Спокойно запускаете DEV и PROD окружения в одном кластере?
- Уверены что ваши namespaces хорошо изолированы друг от друга?
- Собственными руками организовали multitenancy уровня Namespaces as a Service?

Специально для проверки качества таких реализаций и был создан Multi-Tenancy Benchmarks. А к нему в придачу для автоматизации проверки плагин для kubectl под названием kubectl-mtb.

Так все проверки разбиты на 2 класса:
- Configuration Checks (CC)
- Behavioral Checks (BC)

К сожалению, 7 проверок из 23 так и не автоматизировали. НО их можно подсмотреть в документации проекта Capsule и дописать или сделать ручками ;)
🔥18👍3🦄2
Мы уже не раз рассказывали [1,2] про сторонние сервисы, которые могут помочь при написании Network Policy для Kubernetes. Но сегодня я хочу поделиться личным опытом – недавно я воспользовался помощью Github Copilot для создания сетевых политик и был приятно удивлён результатом!

Если вы создаете сетевые политики в директории с другими Kubernetes Resources, то Copilot понимает контекст и сразу начинает предлагать вам правильную политику (причём без указания prompt, просто нажимая TAB) с нужными лейблами и портами, что очень удобно. Причем неважно какая политика – Native, Calico или Cilium.

Безусловно, AI очень крутой помощник, но перепроверять его работу всё-таки стоит =)
🔥13👍2🦄2
Мы очень рады анонсировать нашу конференцию!

БЕКОН - техническая конференция по БЕзопасности КОНтейнеров и контейнерных сред

Дата и место: 7 июня 2023 года в Москве

Целевая аудитория: Архитекторы, Инфраструктурные и платформенные команды, DevOps/DevSecOps, ИБ департаменты.

В программе 10 докладов, покрывающих практически все области безопасности контейнеров. Все доклады отбирал лично - так что за качество ручаюсь ;)
Постепенно опубликуем весь список + также могут появиться дополнительные активности.

Если вам понравится БЕКОН, то продолжим его готовить дальше вместе и с аппетитом применять полученные знания в работе!

P.S. Обратите внимание, что зал небольшой - билетов совсем немного!

P.S.S. С
автором названия связались и все подарки будут переданы лично =)
❤‍🔥19😁5🍾3🔥2👍1👏1🦄1
В след за Kubernetes threat matrix компания Microsoft выпустила DevOps threat matrix.

Похожую матрицу делали исследователи в работе "Attacking and Securing CI/CD Pipeline", так что если вам тема интересна - рекомендуем освежить в голове и эту работу 2021 года.
🔥13🦄21🐳1
Проект wrongsecrets от организации OWASP на примере 28 challenges покажет как НЕ НУЖНО хранить свои секреты.

Задания можно поднимать как локально (docker, minikube), на ванильном Kubernetes, так и в облаке (AWS, GCP, Azure). Отдельно отмечу, что в тасках фигурирует использование Vault, а также хранение секретов в соответствии с облачной спецификой.
🔥19🥰1🐳1
На этой неделе мы опубликовали детали 6 докладов что будут представлены у нас на конференции БЕКОН:
- "OPA с shared Docker executor", Павел Сорокин (OZON)
- "Не такой очевидный RBAC Kubernetes", Дмитрий Евдокимов (Luntry)
- "Distroless своими руками", Антон Мокин (Тинькофф)
- "Как правильно готовить Kyverno и работать с его алертами", Алексей Миртов (Yandex Cloud)
- "Kubernetes, ответь мне, кто я для тебя?", Константин Аксенов(Флант)
- "K8s в PCI DSS", Александр Маркелов (Райффайзен Банк)

Все доклады на абсолютно разные темы и отлично дополняют друг друга, составляя полноценную картину о безопасности контейнеров. Остальные доклады объявим на следующей неделе!


Билеты можно приобрести тут.
🔥15
Недавно наткнулся на заметку "Let's talk about Kubelet authorization", посвященную Kubelet authorization. Основной сценарий тут крутится вокруг того, что атакующий может тем или иным способом попасть на Node и завладеть кредами kubelet, которые он использует для общения с Kubernetes API Server, для поднятия привилегий и распространения атаки.

Из интересных/важных моментов:
- Команда kubectl auth can-i --list покажет только права выданные RBAC, а другими authorization modes отображены не будут (а нам тут интересен режим Node authorizer), но их можно индивидуально проверить с помощью kubectl auth can-i
- Проверьте на своих кластерах что данная настройка для kube-apiserver выставлена именно так --authorization-mode=Node,RBAC, что работал и RBAC и Node authorizer
- Отказ в режиме авторизации Node, означает что запрос передается на режим RBAC и он уже там может быть разрешен. На пример, путем накидывания прав на группу system:node
- Обязательно Node authorizer должен работать в связке с NodeRestriction Admission Controller
- Все эти права могут меняться от дистрибутива к дистрибутиву, от инсталляции к инсталляции, так что всегда стоит проверять этот момент.

Но для полноты картины в данной теме я бы порекомендовал ознакомиться с исследованием "Kubernetes Control Plane Vulnerability Assessment", о котором мы писали ранее - там раскрыто намного больше деталей.
6🔥2👍1🍌1
В эту пятницу мы с нашей командой вместе с этим замечательным стендом будем представлены на CISO Forum.

Если вы или ваши коллеги будут на данном мероприятии - подходите, мы с удовольствием пообщаемся на тему безопасности контейнеров, Kubernetes и расскажем про наш Luntry!
🔥20🥰3🦄2💩1🤨1