Kubernetes Controllers: For, Owns, Watches
Всем привет!
В сети не всегда просто найти хорошую статью про написание собственных Kubernetes Operators/Controllers. Особенно, если интересует не «общая картинка», а какие-то частности.
В статье Автор разбирает разницу между конструкциями
Для этого рассматривается пример:
🍭 Создается Custom Resource
🍭 Controller узнает об этом и создает pod (
Далее расписывается логика реконсиляции controller’a. Наглядно описывается как можно это реализовать не делая еще один Controller, который бы смотрел за каждым pod и его labels – как раз тот самый
В завершении – описание функции
P.S. Про awesome подборку написания Kubernetes Operators мы писали тут.
Всем привет!
В сети не всегда просто найти хорошую статью про написание собственных Kubernetes Operators/Controllers. Особенно, если интересует не «общая картинка», а какие-то частности.
В статье Автор разбирает разницу между конструкциями
for()
, owns()
и get()
при регистрации controller через SetupWithManager
.Для этого рассматривается пример:
🍭 Создается Custom Resource
🍭 Controller узнает об этом и создает pod (
nginx:latest
), присваивает ему label
– foo:bar
🍭 Controller должен гарантировать наличие указанных label
. Т.е. add/update/delete
не должны «срабатывать»Далее расписывается логика реконсиляции controller’a. Наглядно описывается как можно это реализовать не делая еще один Controller, который бы смотрел за каждым pod и его labels – как раз тот самый
owns()
.В завершении – описание функции
watches()
, которая лежит в основе for()
и owns()
. В статье много примеров и кода для собственного воспроизведения примера. P.S. Про awesome подборку написания Kubernetes Operators мы писали тут.
Medium
Develop on Kubernetes Series — Demystifying the For vs Owns vs Watches controller-builders in…
Hi everyone, it’s been a while. Last year was hectic and my blog writing reduced quite substantially. But since the past few days I was…
DevOps Conf 2023, 13 марта
Всем привет!
Сегодня и завтра будет проходить конференция «DevOps Conf 2023», приходите пообщаться с нами вживую, поболтать про DevSecOps ☺️ Или о рыбалке 🤔
Кроме поболтать можно:
🍭Послушать небольшие доклады, посвященные Trivy и SRIOV/DPDK в k8s
🍭 Попробоватьмикросервисные молекулярные коктейли в баре «Контейнер»
Ещё Саша Краснов из команды нашего Партнера - "Лаборатории Числитель" расскажет про "Декларативное управление конфигурацией узлов Kubernetes в масштабе" в зале №4
Всем привет!
Сегодня и завтра будет проходить конференция «DevOps Conf 2023», приходите пообщаться с нами вживую, поболтать про DevSecOps ☺️ Или о рыбалке 🤔
Кроме поболтать можно:
🍭Послушать небольшие доклады, посвященные Trivy и SRIOV/DPDK в k8s
// 13:30 и 15:40 соответственно
🍭 Пройти тест Тьюринга – вопросы от людей и нейросети!🍭 Попробовать
Ещё Саша Краснов из команды нашего Партнера - "Лаборатории Числитель" расскажет про "Декларативное управление конфигурацией узлов Kubernetes в масштабе" в зале №4
// 15:50 – 16:40
Ждем Вас! ☺️☺️☺️devopsconf.io
Александр Краснов на DevOpsConf 2023
Изменять конфигурацию узла Kubernetes нужно не только в момент создания кластера, но и при изменениях в инфраструктуре, и при обновлениях кластера. Хорошо, если узлы можно автоматизированно пересоздать или изменения не требуют перезагрузки узла. А что, если…
DevOps Conf 2023, 14 марта
Первый день конференции благополучно завершился! Бар «Контейнер» продолжает свою работу согласно расписанию!
Приходите к нам, как и вчера можно:
🍭 Послушать небольшие доклады, посвященные SRIOV/DPDK в k8s и Trivy
🍭 Попробовать микросервисные молекулярные коктейли в баре «Контейнер»
Если Вы уже были на нашем стенде, то предлагаем присоединиться к круглому столу «DevOps в Enterprise. Вендорские решения vs Open Source vs Outsource», который проведет Юрий Семенюков в Митапошной
Первый день конференции благополучно завершился! Бар «Контейнер» продолжает свою работу согласно расписанию!
Приходите к нам, как и вчера можно:
🍭 Послушать небольшие доклады, посвященные SRIOV/DPDK в k8s и Trivy
// 13:30 и 15:40 соответственно
🍭 Пройти тест Тьюринга – вопросы от людей и нейросети!🍭 Попробовать
Если Вы уже были на нашем стенде, то предлагаем присоединиться к круглому столу «DevOps в Enterprise. Вендорские решения vs Open Source vs Outsource», который проведет Юрий Семенюков в Митапошной
// 11:10 – 12:40
Завершает конференцию Павел Яньков и его доклад «Гид автостопщика по HashiCorp Vault»! // 17:00 - 17:50, Зал 2
Приходите, задавайте вопросы, пишите понравилось ли Вам в комментариях! До встречи! ☺️☺️☺️devopsconf.io
Павел Яньков на DevOpsConf 2023
В докладе рассматриваются вопросы, с которыми сталкиваются компании при первом подходе к внедрению управления секретами через Vault:* Сколько ресурсов ему нужно? * Как быстро он работает? * Какое хранилище выбрать и почему? * Как подключать приложения? *…
Nosey Parker: поиск секретов
Всем привет!
Nosey Parker – небольшая утилита, которая позволяет искать секреты. По факту – open source версия утилиты, используемой Praetorian. «Старшая версия» обладает ML-аналитикой для более точной идентификации секретов.
Open source версия:
🍭 Позволяет анализировать файлы, директории, git-историю
🍭 Группирует все findings для сокращения «шума» и дедупликации
🍭 Работает достаточно быстро
Под капотом – набор из регулярных выражений в количестве 95 patterns. Как вариант – можно посмотреть, что есть «внутри» и использовать логику для расширения используемых Вами решений или попробовать Nosey Parker.
Всем привет!
Nosey Parker – небольшая утилита, которая позволяет искать секреты. По факту – open source версия утилиты, используемой Praetorian. «Старшая версия» обладает ML-аналитикой для более точной идентификации секретов.
Open source версия:
🍭 Позволяет анализировать файлы, директории, git-историю
🍭 Группирует все findings для сокращения «шума» и дедупликации
🍭 Работает достаточно быстро
Под капотом – набор из регулярных выражений в количестве 95 patterns. Как вариант – можно посмотреть, что есть «внутри» и использовать логику для расширения используемых Вами решений или попробовать Nosey Parker.
GitHub
GitHub - praetorian-inc/noseyparker: Nosey Parker is a command-line tool that finds secrets and sensitive information in textual…
Nosey Parker is a command-line tool that finds secrets and sensitive information in textual data and Git history. - praetorian-inc/noseyparker
Packj: анализ open-source пакетов
Всем привет!
Материал для «кандидатской» и open source продукт… Казалось, что между ними общего? Ответ – Pakcj, история которого как раз началась как работа над диссертацией.
В итоге получился интересный проект, задача которого анализировать open source пакеты не только на CVE, но и на многое другое.
С его помощью можно найти:
🍭 Сведения об Авторах пакета
🍭 Временной промежуток между release
🍭 Пакет требует много полномочий // например, codegen, envvars, decode, process, file и т.д.)
🍭 Сведения о количестве уязвимостей // да, куда без них
🍭 Является ли repo fork’ом или нет
🍭 Typo squatting, Dependency Confusion, Install-time hooks // coming soon
По умолчанию работает в режиме Audit. Но, при использовании флага
Всем привет!
Материал для «кандидатской» и open source продукт… Казалось, что между ними общего? Ответ – Pakcj, история которого как раз началась как работа над диссертацией.
В итоге получился интересный проект, задача которого анализировать open source пакеты не только на CVE, но и на многое другое.
С его помощью можно найти:
🍭 Сведения об Авторах пакета
🍭 Временной промежуток между release
🍭 Пакет требует много полномочий // например, codegen, envvars, decode, process, file и т.д.)
🍭 Сведения о количестве уязвимостей // да, куда без них
🍭 Является ли repo fork’ом или нет
🍭 Typo squatting, Dependency Confusion, Install-time hooks // coming soon
По умолчанию работает в режиме Audit. Но, при использовании флага
-t
осуществляется установка пакета и его «динамический» анализ с использованием strace
(рекомендуется использовать в контейнере или в VM). Больше информации, как обычно, можно найти в repo проекта.GitHub
GitHub - ossillate-inc/packj: Packj stops Solarwinds-, ESLint-, and PyTorch-like attacks by flagging malicious/vulnerable open…
Packj stops :zap: Solarwinds-, ESLint-, and PyTorch-like attacks by flagging malicious/vulnerable open-source dependencies ("weak links") in your software supply-chain - GitHub - ...
Kyverno: PolicyException
Всем привет!
В недавнем релизе (1.9.0) Kyverno был добавлен механизм
В статье Автор не только описывает подробности, но и реализует пример:
🍭 Создание
🍭 Kyverno создает
🍭 Проверка ☺️
В статье описываются все необходимые настройки, предоставлены yaml. Важно(!): пока что функционал
Всем привет!
В недавнем релизе (1.9.0) Kyverno был добавлен механизм
PolicyException
, при помощи которого можно явно разрешить некоторое действие, запрещенное политиками Kyverno. Механизм обладает достаточно гибкими возможностями по управлению scope, на который применяется «исключение».В статье Автор не только описывает подробности, но и реализует пример:
🍭 Создание
PolicyException
в namespace с именем falcon-dev🍭 Kyverno создает
ClusterCleanupPolicy
, которая удалит созданный exception по прошествии заданного времени🍭 Проверка ☺️
В статье описываются все необходимые настройки, предоставлены yaml. Важно(!): пока что функционал
PolicyException
находится в alpha.CNCF
Temporary policy exceptions in Kubernetes with Kyverno
Guest post originally published on the Nirmata blog by Chip Zoller One of the great new features in the recently-released Kyverno 1.9 is something we introduced called Policy Exceptions which…
Kubernetes * Probes
Всем привет!
Практически во всех рекомендациях (в том числе по ИБ) можно увидеть нечто вроде “Ensure that * Probes are set”. Они бывают разные – Startup, Liveness, Readiness. И каждая отвечает за свой «участок» - проверка того, что приложение «стартовало», приложение функционирует и может принимать трафик, приложение доступно. Но как настроить их корректно и всегда ли они нужны?
В статье более детально разбирается что каждый из видов probes, как их можно настроить и когда их целесообразно использовать.
Отдельно хочется упомянуть схему, доступную в статье. На ней наглядно отображено, когда какая probe «работает» и какие могут быть последствия в случае, если она не срабатывает.
В завершении стать рассматриваются handlers:
Всем привет!
Практически во всех рекомендациях (в том числе по ИБ) можно увидеть нечто вроде “Ensure that * Probes are set”. Они бывают разные – Startup, Liveness, Readiness. И каждая отвечает за свой «участок» - проверка того, что приложение «стартовало», приложение функционирует и может принимать трафик, приложение доступно. Но как настроить их корректно и всегда ли они нужны?
В статье более детально разбирается что каждый из видов probes, как их можно настроить и когда их целесообразно использовать.
Отдельно хочется упомянуть схему, доступную в статье. На ней наглядно отображено, когда какая probe «работает» и какие могут быть последствия в случае, если она не срабатывает.
В завершении стать рассматриваются handlers:
ExecAction
, TCPSocketAction
, HTTPGetAction
, gRPC
и как их можно использовать.DEV Community
Liveness Probes: Feel the Pulse of the App
This article will provide some helpful examples as the author examines probes in Kubernetes. A...
Анализ безопасности JWT, часть 1
Всем привет!
JSON Web Token (JWT) – популярный механизм, который позволяет сохранять некоторую информацию о пользователе (например,
Однако, некорректная работа с JWT может привести к проблемам информационной безопасности. Для знакомства с темой предлагаем Вам обратить внимание на статью JWT [JSON WEB TOKENS] [EXPLANATION & EXPLOITATION] (0x01).
В первой приводится общее описание JWT, его структуры и далее рассматривается самое интересное:
🍭 Flawed signature Verification in Backend
🍭 Brute forcing the Secret Keys If HMAC algorithm is used
Каждый вектор атаки рассматривается на примерах, есть пояснения и screenshots. Но и это еще не все ☺️ Продолжение в следующем посте! В нем Автор рассмотрит JWT header injections.
Всем привет!
JSON Web Token (JWT) – популярный механизм, который позволяет сохранять некоторую информацию о пользователе (например,
id
, name
, creation time
и т.д.) и использовать ее в дальнейшем.Однако, некорректная работа с JWT может привести к проблемам информационной безопасности. Для знакомства с темой предлагаем Вам обратить внимание на статью JWT [JSON WEB TOKENS] [EXPLANATION & EXPLOITATION] (0x01).
В первой приводится общее описание JWT, его структуры и далее рассматривается самое интересное:
🍭 Flawed signature Verification in Backend
🍭 Brute forcing the Secret Keys If HMAC algorithm is used
Каждый вектор атаки рассматривается на примерах, есть пояснения и screenshots. Но и это еще не все ☺️ Продолжение в следующем посте! В нем Автор рассмотрит JWT header injections.
Medium
JWT [JSON WEB TOKENS] [EXPLANATION & EXPLOITATION] (0x01)
Hi! My name is Hashar Mujahid. Iam a security researcher and a penetration tester. In this blog, we are going to learn about what are JWT’s…
Анализ безопасности JWT, часть 2
Всем привет!
Продолжение предыдущей статьи. Автор рассматривает блок, посвященный JWT header injections.
В статье можно найти информацию о:
🍭 Self-signed JWT with JKU header injection
🍭 Self-signed JWT with JWK parameter
Примеры рассматриваются с использованием Portswigger Labs. Для каждого из них приводится описание Автора и минимум необходимой теории. Кстати, на самом Portswigger тоже очень много интересной информации про безопасность JWT в сочетании с лабораторным работами.
Всем привет!
Продолжение предыдущей статьи. Автор рассматривает блок, посвященный JWT header injections.
В статье можно найти информацию о:
🍭 Self-signed JWT with JKU header injection
🍭 Self-signed JWT with JWK parameter
Примеры рассматриваются с использованием Portswigger Labs. Для каждого из них приводится описание Автора и минимум необходимой теории. Кстати, на самом Portswigger тоже очень много интересной информации про безопасность JWT в сочетании с лабораторным работами.
Medium
JWT [JSON WEB TOKENS] [EXPLANATION & EXPLOITATION] (0x02)
Hi! My name is Hashar Mujahid. I am a security researcher and a penetration tester. This blog is part 2 of the comprehensive exploitation…
FalcoSecurityAudit.pdf
1 MB
Аудит безопасности Falco
Всем привет!
В приложении доступны результаты независимого аудита проекта Falco (~ 63 страницы), проведенного компанией Quarkslab.
Материал содержит разделы:
🍭 Границы работ (fuzzers, моделирование угроз, SAST-практики и т.д.)
🍭 Модель угроз
Статический анализ (
🍭 «Ручной» анализ
🍭 Динамический анализ и многое другое
В целом все достаточно неплохо: 1
А как Вы думаете – является ли open source менее защищенным by default? Или наоборот – open source ничем не хуже «внутренней разработки» с точки зрения ИБ? Пишите Ваше мнение в комментариях ☺️
Всем привет!
В приложении доступны результаты независимого аудита проекта Falco (~ 63 страницы), проведенного компанией Quarkslab.
Материал содержит разделы:
🍭 Границы работ (fuzzers, моделирование угроз, SAST-практики и т.д.)
🍭 Модель угроз
Статический анализ (
Cppcheck
, CodeQL
, Infer
)🍭 «Ручной» анализ
🍭 Динамический анализ и многое другое
В целом все достаточно неплохо: 1
Medium
уязвимость (potential buffer overflow), несколько Low
и Info
.А как Вы думаете – является ли open source менее защищенным by default? Или наоборот – open source ничем не хуже «внутренней разработки» с точки зрения ИБ? Пишите Ваше мнение в комментариях ☺️
Разбор Kubernetes Security Context
Всем привет!
По ссылке доступен long read, в котором Автор на примерах разбирает различные Security Context и пользу от их использования. Для демонстрации заготовлено минималистичное flask-приложение и его различные модификации.
Рассматривается:
🍭
🍭
🍭
🍭(Сработало! Почему? Ответ есть в статье) и последующей настройкой исключений
🍭
Автор максимально детально описывает все действия, которые он реализует, а также описывает «зачем» он это делает. Примеры из статьи можно реализовать самостоятельно – все исходные коды, ссылки на используемые материалы и дополнительные ресурсы присутствуют.
P.S. Для некоторых Security Context Автор приводит дополнительные комментарии, которые не всегда просто найти / есть в официальной документации.
Всем привет!
По ссылке доступен long read, в котором Автор на примерах разбирает различные Security Context и пользу от их использования. Для демонстрации заготовлено минималистичное flask-приложение и его различные модификации.
Рассматривается:
🍭
runAsUser
/ runAsGroup
// пример с SSRF🍭
privileged
и allowPrivelegeEscalation
// пример с SUID и возможным повышением привилегий🍭
readOnlyRootFilesystem
// пример с созданием файла внутри контейнера🍭
drop capabilities
// пример с drop: ALL и bind на 80-ый порт 🍭
apparmor
// пример с попыткой чтения /etc/passwdАвтор максимально детально описывает все действия, которые он реализует, а также описывает «зачем» он это делает. Примеры из статьи можно реализовать самостоятельно – все исходные коды, ссылки на используемые материалы и дополнительные ресурсы присутствуют.
P.S. Для некоторых Security Context Автор приводит дополнительные комментарии, которые не всегда просто найти / есть в официальной документации.
Shishir's Blog
Kubernetes Security Part 1 - Security Contexts
Проблематика и автоматизация создания Network Policy
Всем привет!
Зачастую рассказывают про положительные стороны чего-либо. Однако, знать про отрицательные тоже важно, чтобы получить полную и общую картину.
В статье Автор рассуждает о том, почему Network Policy не самый удобный инструмент / уровень абстракции для сегментирования сети k8s, особенно с точки зрения разработчика.
Критикуешь – предлагай! Да, есть и такое! В завершение статьи описывается как можно проще/лучше управлять трафиком с использованием Intents (определение есть в статье). И не только описание – не найдя ничего подходящего, ребята создали свой собственный operator - Otterize Intents Operator.
Он «повышает» уровень абстракции и позволяет контролировать создание/наличие сетевых политик. Грубо говоря, все, что надо указать – с кем «общается» целевой сервис и как. Все. Operator создаст необходимую политику (только Ingress) и проставит требуемые labels на участников взаимодействия.
Подробнее про Otterize Intents Operator можно прочесть в документации. Важно (!): есть как коммерческая, так и open source версия продукта.
Всем привет!
Зачастую рассказывают про положительные стороны чего-либо. Однако, знать про отрицательные тоже важно, чтобы получить полную и общую картину.
В статье Автор рассуждает о том, почему Network Policy не самый удобный инструмент / уровень абстракции для сегментирования сети k8s, особенно с точки зрения разработчика.
Критикуешь – предлагай! Да, есть и такое! В завершение статьи описывается как можно проще/лучше управлять трафиком с использованием Intents (определение есть в статье). И не только описание – не найдя ничего подходящего, ребята создали свой собственный operator - Otterize Intents Operator.
Он «повышает» уровень абстракции и позволяет контролировать создание/наличие сетевых политик. Грубо говоря, все, что надо указать – с кем «общается» целевой сервис и как. Все. Operator создаст необходимую политику (только Ingress) и проставит требуемые labels на участников взаимодействия.
Подробнее про Otterize Intents Operator можно прочесть в документации. Важно (!): есть как коммерческая, так и open source версия продукта.
Otterize
Network policies are not the right abstraction (for developers)
We explore the limitations of relying solely on Kubernetes network policies as a solution for achieving zero-trust between pods, identifying multiple flaws that hinder their effectiveness in meeting the demands of real-world use cases, particularly when prioritizing…
Vulnhub: Vulnerable Docker Environments
Всем привет!
Иногда нужно/хочется провести тестирование возможности эксплуатации уязвимостей. Например, для того, чтобы понять – «отработает» ли средство защиты или просто в исследовательских целях.
Проект Vulnhub может в этом помочь. В нем собрано большое количество «заранее уязвимых» окружений для различных технологий (
Для каждого окружения в repo можно найти CVE, которые в них «заложены» и readme.md, описывающий как можно ее проэксплуатировать. Есть небольшой нюанс – английский язык доступен не везде, много информации на китайском ☺️
Важно(!): указанные окружения не рекомендуется использовать в production, а лишь для целей тестирования и изучения.
Всем привет!
Иногда нужно/хочется провести тестирование возможности эксплуатации уязвимостей. Например, для того, чтобы понять – «отработает» ли средство защиты или просто в исследовательских целях.
Проект Vulnhub может в этом помочь. В нем собрано большое количество «заранее уязвимых» окружений для различных технологий (
python
, wordpress
, elasticsearch
, flask
, java
и многое другое).Для каждого окружения в repo можно найти CVE, которые в них «заложены» и readme.md, описывающий как можно ее проэксплуатировать. Есть небольшой нюанс – английский язык доступен не везде, много информации на китайском ☺️
Важно(!): указанные окружения не рекомендуется использовать в production, а лишь для целей тестирования и изучения.
vulhub.org
Vulhub - Open-Source Vulnerable Docker Environments
Vulhub is an open-source collection of pre-built vulnerable docker environments for security researchers and educators.
Ресторан «Kubernetes»
Привет!
Легкий пятничный пост 😊 Наверное, когда-нибудь вас просили объяснить – «Что такое Kubernetes? Но только просто, чтобы было понятно и сразу!»
Было уже много разных аналогий и вот еще одна. Автор сравнивает k8s с рестораном! Как раз для пятницы!
Получается следующее:
🍭 Master Node: главный повар, управляет всем
🍭 Kube-apiserver: система обработки заказов посетителей ресторана
🍭 Kube-controller-manager: управляющий по кухне
🍭 Kube-scheduler: временное табло, помогающее кухне справляться с заказами и т.д.
В целом все неплохо «ложится» на Kubernetes 😊 А как Вы «просто и понятно» объясняете, что такое Kubernetes интересующимся?
Привет!
Легкий пятничный пост 😊 Наверное, когда-нибудь вас просили объяснить – «Что такое Kubernetes? Но только просто, чтобы было понятно и сразу!»
Было уже много разных аналогий и вот еще одна. Автор сравнивает k8s с рестораном!
🍭 Master Node: главный повар, управляет всем
🍭 Kube-apiserver: система обработки заказов посетителей ресторана
🍭 Kube-controller-manager: управляющий по кухне
🍭 Kube-scheduler: временное табло, помогающее кухне справляться с заказами и т.д.
В целом все неплохо «ложится» на Kubernetes 😊 А как Вы «просто и понятно» объясняете, что такое Kubernetes интересующимся?
Medium
Kubernetes: Understanding Kubernetes Architecture through a Restaurant Chef’s Analogy
In the analogy of Kubernetes to a restaurant chef, the master node is like the head chef who manages the ordering system (kube-apiserver)…
Безопасность build pipeline: все ли так плохо?
Всем привет!
По ссылке доступна статья, в которой Автор пытается посмотреть на проблему безопасности build-pipelines максимально критично. Ее задача понять – все ли на самом деле так плохо? Или проэксплуатировать уязвимость сложнее, чем написано во многих статьях?
В качестве возможных сценариев рассматриваются:
🍭 Модификация исходного кода
🍭 «Добавление» зависимостей
🍭 Воздействие на runner
Для каждого сценария описаны «сложности», с которыми скорее всего придется столкнуться атакующими. С точки зрения Автора все не так уж и плохо, особенно если соблюдать «гигиену» - защищать ветки (branch protection), проверять подпись «внешних» компонентов и т.д. А что Вы думаете по этому поводу?
Всем привет!
По ссылке доступна статья, в которой Автор пытается посмотреть на проблему безопасности build-pipelines максимально критично. Ее задача понять – все ли на самом деле так плохо? Или проэксплуатировать уязвимость сложнее, чем написано во многих статьях?
В качестве возможных сценариев рассматриваются:
🍭 Модификация исходного кода
🍭 «Добавление» зависимостей
🍭 Воздействие на runner
Для каждого сценария описаны «сложности», с которыми скорее всего придется столкнуться атакующими. С точки зрения Автора все не так уж и плохо, особенно если соблюдать «гигиену» - защищать ветки (branch protection), проверять подпись «внешних» компонентов и т.д. А что Вы думаете по этому поводу?
Sensemaking by Shortridge
Attackers have better things to do than corrupt your builds
This posts clarifies the clucking and clamoring over attackers exploiting vulns or corrupting build pipelines (spoiler alert: it isn’t worth their time and effort to).
Kube-apiserver в роли port scanner
Всем привет!
Еще одна потрясающая статья от Rory McCune, посвященная «своеобразному» использованию возможностей Kubernetes. Нет, это не уязвимость, это не bug, это не ошибка.
Kubernetes устроен таким образом, что он может осуществлять сетевые запросы на внешние адреса в некоторых ситуациях. Например, в случае с Validating Webhooks. Таким образом можно реализовать некий аналог SSRF и превратить Kubernetes в «сканер портов».
Rory проделал следующее:
🍭 Создается namespace
🍭 Регистрируется webhook. Никакой сервер, обрабатывающий запрос не регистрируется. Вместо этого указывается потенциальная «жертва»
🍭 Создается pod в указанном namespace. Готово! В сообщении об ошибки получаем всю необходимую информацию
PoC того, что описано выше можно найти в repo. Если интересно посмотреть небольшую демонстрацию, ее можно найти в блоге Rory.
P.S. Лучше не проверять этот, пусть и крайне базовый PoC на каких-либо настоящих сервисах и/или в production-окружениях.
Всем привет!
Еще одна потрясающая статья от Rory McCune, посвященная «своеобразному» использованию возможностей Kubernetes. Нет, это не уязвимость, это не bug, это не ошибка.
Kubernetes устроен таким образом, что он может осуществлять сетевые запросы на внешние адреса в некоторых ситуациях. Например, в случае с Validating Webhooks. Таким образом можно реализовать некий аналог SSRF и превратить Kubernetes в «сканер портов».
Rory проделал следующее:
🍭 Создается namespace
🍭 Регистрируется webhook. Никакой сервер, обрабатывающий запрос не регистрируется. Вместо этого указывается потенциальная «жертва»
🍭 Создается pod в указанном namespace. Готово! В сообщении об ошибки получаем всю необходимую информацию
PoC того, что описано выше можно найти в repo. Если интересно посмотреть небольшую демонстрацию, ее можно найти в блоге Rory.
P.S. Лучше не проверять этот, пусть и крайне базовый PoC на каких-либо настоящих сервисах и/или в production-окружениях.
raesene.github.io
Fun with SSRF - Turning the Kubernetes API Server into a port scanner
Network isolation для 1,500 сервисов
Всем привет!
В статье описан опыт Monzo по управлению сетевым трафиком в средах контейнерной оркестрации. На очень больших масштабах.
Ребята проделали колоссальную работу, которую можно разделить на несколько основных этапов:
🍭 Выбор сервиса для «пилотирования». Им стал
🍭 Понимание того, с кем
🍭 Подготовка Native Network Policy, определение подходов к labeling. Политика хранилась вместе с конфигурацией
🍭 Трудности, порождаемые таким подходом. Отсутствие тестирование, нюансы с roll back и т.д. Поиск нового решения, которым стал Calico
🍭 Создание сетевых политик Calico, обладающих большим
🍭 Очередное переосмысление labeling с учетом опыта, полученного на предыдущих шагах
И многое-многое-многое! Читается на одном дыхании, рекомендуем! 😊
Всем привет!
В статье описан опыт Monzo по управлению сетевым трафиком в средах контейнерной оркестрации. На очень больших масштабах.
Ребята проделали колоссальную работу, которую можно разделить на несколько основных этапов:
🍭 Выбор сервиса для «пилотирования». Им стал
service.ledger
, который взаимодействует с множеством других🍭 Понимание того, с кем
service.ledger
общается. Для этого команда написала собственный инструмент – rpcmap
, который анализирует Go-код и пытается найти возможные точки взаимодействия. Работало не очень, но в качестве «первых шагов» - вполне🍭 Подготовка Native Network Policy, определение подходов к labeling. Политика хранилась вместе с конфигурацией
ledger
и, если необходимо добавить новый «приемник», то делался соответствующий MR🍭 Трудности, порождаемые таким подходом. Отсутствие тестирование, нюансы с roll back и т.д. Поиск нового решения, которым стал Calico
🍭 Создание сетевых политик Calico, обладающих большим
order
для журналирования действий Network Policy для поиска ошибок. Дада, Вам не показалось 😊 Анализ Network Policy при помощи другой Network Policy🍭 Очередное переосмысление labeling с учетом опыта, полученного на предыдущих шагах
И многое-многое-многое! Читается на одном дыхании, рекомендуем! 😊
Monzo
We built network isolation for 1,500 services to make Monzo more secure
We've been working on isolating the 1,500 services that power Monzo. The sheer size and complexity of our platform made this difficult. But by protecting us against compromised services, it makes Monzo more secure.
Выбор компонентов платформы контейнерной оркестрации.
Всем привет!
Ни для кого не секрет что любая платформа контейнерной оркестрации состоит из множества компонентов, таких как:
🍉 Подсистема мониторинга
🍉 Подсистема журналирования
🍉 Подсистема аутентификации/авторизации
🍉 и множество других компонентов
В связи с этим при проектировании таких платформ каждый архитектор сталкивается с проблемами выбора оптимального решения. Разработчики MetalK8s провели разбор некоторых наиболее часто используемых компонентов платформы оркестрации контейнеров, а также подходов, которые могут использоваться при разработке самой платформы. В документации к платформе разобраны варианты решений для многих важных компонентов. Помимо перечисленных выше там также затрагиваются и другие моменты, которые важны при разработке платформы и выборе того или иного решения:
🍉 Выбор подсистемы оповещений и алертов
🍉 Особенности проектирования cli-утилиты для управления кластером
🍉 Подходы к тестированию платформы
🍉 Разбор разных методов хранения конфигураций
🍉 и многое другое
Всем привет!
Ни для кого не секрет что любая платформа контейнерной оркестрации состоит из множества компонентов, таких как:
🍉 Подсистема мониторинга
🍉 Подсистема журналирования
🍉 Подсистема аутентификации/авторизации
🍉 и множество других компонентов
В связи с этим при проектировании таких платформ каждый архитектор сталкивается с проблемами выбора оптимального решения. Разработчики MetalK8s провели разбор некоторых наиболее часто используемых компонентов платформы оркестрации контейнеров, а также подходов, которые могут использоваться при разработке самой платформы. В документации к платформе разобраны варианты решений для многих важных компонентов. Помимо перечисленных выше там также затрагиваются и другие моменты, которые важны при разработке платформы и выборе того или иного решения:
🍉 Выбор подсистемы оповещений и алертов
🍉 Особенности проектирования cli-утилиты для управления кластером
🍉 Подходы к тестированию платформы
🍉 Разбор разных методов хранения конфигураций
🍉 и многое другое
Network Mapper: кто с кем общается в k8s
Всем привет!
Продолжаем тему анализа сетевого трафика k8s и упрощения создания сетевых политик для его контроля.
Не всегда понятно какой сервис с каким общается, что затрудняет создание (и автоматизацию этого процесса) сетевых политик. Для решения этой задачи можно обратить внимание на Otterize Network Mapper.
Решение работает по следующей схеме: записывает DNS-трафик, анализирует активные соединения, получает IP-адреса и идентифицирует «источник».
Чтобы попробовать Network Mapper в действии достаточно:
🍭 Установить сам Network Mapper (есть Helm Chart)
🍭 Установить cli-утилиту для общения с «основной системой»
🍭 Готово! Можно получить информацию о том какие сервисы общаются между собой как в
Пример того, как это выглядит можно найти в repo проекта, а небольшая инструкция доступна в документации проекта.
Всем привет!
Продолжаем тему анализа сетевого трафика k8s и упрощения создания сетевых политик для его контроля.
Не всегда понятно какой сервис с каким общается, что затрудняет создание (и автоматизацию этого процесса) сетевых политик. Для решения этой задачи можно обратить внимание на Otterize Network Mapper.
Решение работает по следующей схеме: записывает DNS-трафик, анализирует активные соединения, получает IP-адреса и идентифицирует «источник».
Чтобы попробовать Network Mapper в действии достаточно:
🍭 Установить сам Network Mapper (есть Helm Chart)
🍭 Установить cli-утилиту для общения с «основной системой»
🍭 Готово! Можно получить информацию о том какие сервисы общаются между собой как в
stdout
, так и в JSON
для дальнейшей работыПример того, как это выглядит можно найти в repo проекта, а небольшая инструкция доступна в документации проекта.
GitHub
GitHub - otterize/network-mapper: Map Kubernetes traffic: in-cluster, to the Internet, and to AWS IAM and export as text, intents…
Map Kubernetes traffic: in-cluster, to the Internet, and to AWS IAM and export as text, intents, or an image - otterize/network-mapper
Авторизация Kubelet в Kube-apiserver
Всем привет!
Kubelet крайне важная часть Kubernetes. Он взаимодействует с runtime для создания контейнеров и не только, общается с kube-apiserver. Логично предположить, что он, как и все остальные сущности, обращающиеся к kube-apiserver должен проходить процедуру авторизации.
И это так, однако не все так просто, как может показаться. Например, если сделать
Если присмотреться, то в ответе вышеуказанной команды есть интересная строчка:
Именно этой «особенности» посвящена очередная прекрасная статья от Rory McCune. Почему так происходит и как работает авторизация Kubelet «под капотом», ссылки на исходный код Kubernetes - все есть в статье. Рекомендуем!
Всем привет!
Kubelet крайне важная часть Kubernetes. Он взаимодействует с runtime для создания контейнеров и не только, общается с kube-apiserver. Логично предположить, что он, как и все остальные сущности, обращающиеся к kube-apiserver должен проходить процедуру авторизации.
И это так, однако не все так просто, как может показаться. Например, если сделать
kubectl --kubeconfig=%yourkubelet.conf% auth can-i –list
, то описания его прав на, например, pod вы не увидите. Хотя с этим же самым kubeconfig можно запросить перечень pods в каком-нибудь namespace и получить результат. Если присмотреться, то в ответе вышеуказанной команды есть интересная строчка:
the list may be incomplete: node authorizer does not support user rule resolution Resources
.Именно этой «особенности» посвящена очередная прекрасная статья от Rory McCune. Почему так происходит и как работает авторизация Kubelet «под капотом», ссылки на исходный код Kubernetes - все есть в статье. Рекомендуем!
raesene.github.io
Let's talk about Kubelet authorization