DevSecOps Talks – Telegram
DevSecOps Talks
7.44K subscribers
85 photos
94 files
1.23K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
#мероприятие
Российский разработчик ПО, компания «Лаборатория Числитель» запускает серию практических вебинаров, посвященных работе с платформой управления контейнерами «Штурвал»

Вебинары пройдут в формате live-демо, во время которых будут показаны все этапы работы с платформой.

25 апреля в 11:00 откроет серию вебинар «Штурвал». Начало работы».

В программе:
🔹Планирование инсталляции
🔹Развертывание в открытом и закрытом контуре
🔹Настройка зеркала

Демонстрацию проведет Александр Краснов, технический директор «Лаборатории Числитель».

Вебинар будет интересен DevOps-инженерам и DevOps-администраторам

Регистрация
🔥5👍2😁21👎1🥰1👏1🐳1
PESD: автоматизация создания диаграмм последовательностей

Всем привет!

Бывает, что при анализе web-приложения требуется создать диаграмму последовательностей, иллюстрирующую взаимодействие между участниками процесса: запросы, ответы, типы данных, возвращаемые коды и т.д. Например, для добавления информации в отчет или для того, чтобы самому лучше представлять, что происходит.

Это можно делать «в ручную», но это может быть долго, неудобно, не лишено ошибок. Поэтому ребята из Doyensec сделали Proxy Enriched Sequence Diagram – PESD! Этот небольшой Burp Plugin позволяет автоматизировать процесс создания таких диаграмм.

Есть еще важное слово – «Enriched». Все так, диаграммы получаются с «дополнительными» сведениями. Например, можно посмотреть URL Query Params или иные параметры взаимодействия.

Результаты можно выгружать в различных форматах: SVG, Markdown (MermaidJS), JSON. Больше подробностей и сам PESD можно найти по ссылке на GitHub Repo.
1🦄1
KubeArmor: k8s runtime security

Всем привет!

KubeArmor – runtime security решение, которое позволяет контролировать что происходит с контейнером и/или хостом на котором он расположен. В качестве «основного движка» используется AppArmor, SELinux и BPF-LSM.

Решение позволяет:
🍭 Реализовать hardening
🍭 Управлять процессами, сетевыми соединениями и контролировать доступ к чувствительным данным
🍭 Генерировать k8s network policy
🍭 Профилировать контейнеры для создания поведенческих моделей

Проект активно развивается (можно посмотреть в Version Releases Blog), есть документация, описывающая ключевые возможности KubeArmor и примеры его использования.
1👍1
Sveltos: централизация управления кластерами k8s

Всем привет!

Целью проекта Sveltos является упрощение работы с большим количеством кластеров. Концептуально схему можно описать так: есть управляющий кластер, подчиненный кластера и профили кластеров, которые содержат требуемые данные. Обращаясь к кластеру управления можно вносить изменения в подчиненные кластеры.

Sveltos умеет:
🍭 Создать ресурсы
в кластерах
🍭 Следить за configuration drift, возвращая все в «исходное состояние» (указанное в кластере управления)
🍭 Создавать ресурсы в dry-run режиме
🍭 Направлять alert в случае идентификации проблем с состоянием кластера
🍭 Управлять кластерами на основании labels (например, применять что-то на production и не применять на test) и не только

Полное описание функционала и компонентов проекта (какие есть operators, какие CRD и что они делают) можно найти в документации. Отдельно рекомендуем заглянуть в раздел «Blogs and Videos». В нем можно найти много ссылок на материалы по теме.
🔥21
Как быстро обновляются Secrets и ConfigMaps в k8s?

Всем привет!

Все началось с простого опроса, в котором большинство ( ~ 41%) выбрало ответ «почти мгновенно», однако это не совсем так.

В статье Автор разбирает внутренние механизмы, отвечающие за процесс обновления Secrets и ConfigMaps в Pod.

У Kubelet есть параметр configMapAndSecretChangeDetectionStrategy, который может принимать 3 значения:
🍭 Get: получение объектов от API server
🍭 Cache: использованием TTL Cache
🍭 Watch (Default): наблюдение за интересующим объектом

Получается, что у Kubelet есть вся необходимая информация, однако обновления (мгновенного) не происходит. Оказалось, что у Kubernetes отсутствуют механизмы, запускающие реконсиляцию при обновлении ресурса (в нашем случае это Secret и ConfigMap).

На деле обновление происходит при вызове syncPod функции:
🍭 В случае изменения Pod (Pod event update, изменение параметров Pod) – что происходит не часто
🍭 Периодически: где-то раз в минуту

Именно по этой причине, по умолчанию, Secret и ConfigMap не синхронизируются мгновенно. Если хочется проверить, то есть repo с PoC. Если интересно как можно это ускорить – ответ есть в статье.
👍4
Open source threat modelling tools

Всем привет!

По ссылке доступен минималистичный обзор open source решений, которые могут быть использованы для автоматизации/упрощения/визуализации процесса моделирования угроз.

Рассматриваются такие инструменты, как:
🍭 Cairis
🍭 OWASP pytm
🍭 OWASP Threat Dragon
🍭 Threagile
🍭 ThreatSpec
🍭 Microsoft Threat Modeling Tool
🍭 Threats Manager Suite

Для каждого их них есть небольшой описание и ссылки на сайты/repo. В завершении статьи (раздел References) можно найти дополнительные материалы по теме.
Open-appsec: Web-protection и API Security

Всем привет!

Open-appsecopen source продукт, разрабатываемый командой Checkpoint. Представляет из себя add-on, который можно установить на Kubernetes Ingress Controller, Nginx и Kong API Gateway.

Обладает следующим функционалом:
🍭 API Security
🍭 Bot prevention
🍭 Intrusion Prevention
(IPS Engine с поддержкой Snort 3.0 Signatures, аналитика от Checkpoint)
🍭 Защита от OWASP Top-10 и не только

Если верить документации, то решение использует машинное обучение для создания «позитивных» моделей, позволяющих повышать качество работы.

Функционала и возможностей достаточно много, поэтому рекомендуем ознакомиться с документацией и роликами, которые демонстрируют работу open-appsec.
👍3
Service Mesh Comparison

Всем привет!

На сайте можно найти небольшое сравнение Service Mesh технологий. Рассматриваются все «основные» участники: Nginx, Istio, Kuma, Cilium, LinkerD и т.д.

В качестве критериев представлены:
🍭 Auto Proxy Injection
🍭 gRPC
🍭 Prometheus Integration
🍭 Tracing Integration
🍭 SPIFFE и не только

Кстати, на самом сайте можно найти интересную timeline-диаграмму, в которой отображены даты появления участников «на рынке».
👍2
DevSecOps в Chime

Всем привет!

По ссылке ребята из компании Chime делятся своим подходом к построению практик безопасной разработки и не только.

Соотношение разработчиков к ИБ было ~ 60/1, в результате чего надо было как-то оптимизировать затраты и выстроить рабочий процесс.

Если ничего не подходит – сделай свое! Так поступили ИБ-специалисты Chime и написали собственное приложение – Monocle.

При помощи него можно:
🍭 Получать сводную информацию о состоянии ИБ команды – что реализовано, степень соответствия требованиям
🍭 Оповещать команды в случае, если их «рейтинг» упал ниже порогового значения. При этом приложение позволяет указать, что именно надо поправить
🍭 «Сквозной рейтинг» всех команд – элемент геймификации
🍭 Получать сводную информацию о проекте команды и не только

Само приложение не является open source, однако в статье много скриншотов для того, чтобы можно было получить представление о нем. Возможно, Вам понравится такой подход и Вы повторите его у себя.
👍1
Анализ PR на соответствие ИБ-требованиям

Всем привет!

Продолжение истории Chime! В статье они делятся опытом анализа pull request’ов при помощи их разработки – Monocle!

Команда определила следующие требования:
🍭 PR должен иметь хотя бы 1 review
🍭 PR не должен содержать dependency confusion
🍭 Repo должны содержать только те базовые образы, что были одобрены ИБ
🍭 «Новый код» не должен содержать уязвимостей уровня Critical и High

Все это было реализовано в Monocle и удобно отображается в GitHub при слиянии веток. Для каждой проверки, что не была пройдена предоставляется описание «почему это плохо и так лучше не делать». В статье есть видео, в котором демонстрируется работа описанного выше подхода.

Если интересно, что внутри и как это работает (дада, там OPA) – в статье есть общая архитектура и описание ключевых принципов. Рекомендуем к прочтению!
Мини-лабораторные по анализу кода от GitHub

Всем привет!

По ссылке доступно 5 небольших лабораторных работ по анализу кода от команды GitHub.

Материал включает в себя:
🍭 Level-1: Black Friday
🍭 Level-2: Matrix
🍭 Level-3: Social Network
🍭 Level-4: Data Bank
🍭 Level-5: Locanda

Все лабораторные представляют из себя небольшие python-проекты. Чтобы «пройти» испытание, необходимо получить «passed» от hack.py (уязвимости больше нет) и test.py (при этом код все еще работает). Сложность возрастает от Level-1 до Level-5.

Можно попробовать как в Codespaces (при этом время использование будет тратиться) или установить локально.
👍6
Gartner_CNAPP.pdf
996.9 KB
Gartner Market Guide for Cloud Native Application Protection Platform

Всем привет!

В приложении можно скачать отчет Gartner, посвященный безопасности Cloud Native приложений. Пусть название Вас не смущает: помимо анализа рынка в отчете много полезной теоретической информации.

Например:
🍭 Общий взгляд на Risk Surface Area
🍭 «Дополнительные» задачи, которые появляются в Cloud Native для разработчиков
🍭 Описание функционала Cloud Native Application Protection Platform
🍭 Основные вызовы, с которыми можно столкнуться и не только

В целом получился неплохой материал, который может быть полезен, если вы погружаетесь в этот прекрасный мир.
👍2👾1
GitGuardian_Secrets.pdf
2 MB
State of Secrets in AppSec

Всем привет!

Команда GitGuardian опросила 507 представителей отрасли для того, чтобы собрать информацию о вопросах ИБ, связанных с управлением секретами. В результате получился прилагаемый отчет.

Внутри можно найти:
🍭 Статистику об управлении секретами (сколько % находили hardcode, кто озадачился вопросами управления секретами, используемые практики и т.д.)
🍭 Самооценка уровней зрелости Компаний по вопросам управления секретами
🍭 Подходы к идентификации секретов в репозиториях исходного кода и не только

Получился простой, наглядный и информативный отчет, рекомендуем!
1👍1
PhD: Development!!!

Всем привет!

Завтра из каждого электронного самоката, powerbank’a, умных часов, IoT-устройств и даже из утюгов будут писать про Positive Hack Days!
Что ж! Мы не будем исключением и еще раз напишем про программу track’a “Development” на 19 мая.

Итак, нас ожидает:
🍭 09:40–10:00 Владимир КочетковОткрытие трека. Вступительное слово организаторов
🍭 10:00–11:00 Дмитрий СкляровЯ реверсер, я так вижу!
🍭 11:00–12:00 Владимир Кочетков / Сергей ПодкорытовЯзык запросов к коду... не нужен?
🍭 12:00–13:00 Георгий АлександрияКак разработчики анализатора исходного кода с одной экспонентой боролись
🍭 13:00–14:00 Дмитрий Шмойлов Безопасность цепи поставок
🤩 14:00–15:00 Алина Новопольцева DAF: путь самурая в безопасной разработке
🍭 15:00–16:00 Виктор Бобыльков / Дмитрий ЕвдокимовSCAзка о SCAнерах
🍭 16:00–17:00 Ксения Змичеровская / Илья ШаровКазнить нельзя помиловать: уязвимости из-за ошибок в бизнес-логике
🍭 17:00–18:00 Алексей ХорошиловОпыт тестирования и верификации ядра Linux
🍭 18:00–19:00 Сергей ЗадорожныйРуководство бравого докер-секьюрити мастера

Отдельно приглашаем Вас на доклад нашей Алины, который пройдет с 14:00 до 15:00 в Конструкторском Бюро! Первое выступление на столь крупном мероприятии, да еще и сразу в Парке Горького! Ей будет приятна Ваша поддержка! 🥰🥰🥰

И приходите на наш стенд, очень-очень-очень будем рады пообщаться лично! Увидимся! 👋👋👋
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍1
Managed Kubernetes Auditing Toolkit

Всем привет!

Еще один отличный материал от DataDogManaged Kubernetes Auditing Toolkit (MKAT). Он позволяет идентифицировать ИБ-дефекты в облачных инсталляциях Kubernetes. На текущий момент поддерживается только AWS. Поддержка GCP GKE есть в roadmap.

При помощи него можно:
🍭 Идентифицировать взаимосвязь между k8s SA и AWS IAM Roles
🍭 Искать hardcoded учетные данные AWS в ресурсах k8s (Pods, CM, Secrets)
🍭 Идентифицировать возможность доступа pod’ов к AWS Instance Metadata Service

Кроме этого, MKAT позволяет визуализировать взаимосвязь сущностей через --output dot. В repo есть ссылки на другие решения по анализу конфигураций и описание их отличия от MKAT.
2
Копирование Secrets в Kubernetes

Всем привет!

Казалось бы, зачем «изобретать еще один велосипед» при управлении секретами в k8s? Есть же HashiCorp Vault с его sidecar/operator, SealedSecrets, External Secrets и не только. Однако, бывают такие случаи 😊

В статье описывается «путь» Lonto. Началось все с того, что командам нужен был сертификат не только для домена вида *.dev.example.com, но и для его sub-domains. Самым очевидным решением стало копирование секретов. Очевидным, но трудно поддерживаемым на большом объеме, особенно в условиях динамического предоставления сервисов (namespace’ов k8s) разработчикам. Второй задачей стала синхронизация секретов во всех кластерха и namespace’ах.

Посмотрев то, что было на рынке было принято решение делать свое. Причины того, почему не подошли существующие решения можно найти в статье.

В соответствии с потребностями определили следующие требования:
🍭 Поддержка регулярных выражений для указания namespaces, куда должны быть скопированы секреты
🍭 Наблюдение за создаваемыми namespaces для добавления в них секреты (если такое требуется)
🍭 При удалении CR все порожденные им Secrets должны так же удаляться
🍭 Controller должен быть расширяемым.
Например, для интеграции с HashiCorp Vault

Результатом работы стал SecretMirror, который доступен на GitHub. И если у вас аналогичные задачи, то может быть именно он сможет вам помочь. Описание архитектуры, логики работы и примеры использования (в том числе работа с HashiCorp Vault) можно найти в статье.
1
Вебинар «Первичная настройка платформы "Штурвал". Конфигурация провайдеров»

24 мая компании «Лаборатория Числитель» и «Инфосистемы Джет» приглашают вас присоединиться к второму практическому вебинару, посвященному работе с платформой управления контейнерами «Штурвал».

В программе:
▪️Конфигурация провайдера oVirt
▪️Конфигурация провайдера vSphere
▪️Подготовка шаблонов узлов

Демонстрацию решения проведут:
▪️Александр Краснов, технический директор «Лаборатории Числитель»
▪️Дмитрий Горохов, директор департамента виртуализации и контейнеризации «Инфосистемы Джет»

Вебинар будет интересен DevOps-инженерам и DevOps-администраторам.

Регистрация
🔥8🦄2❤‍🔥1👎1
Вредоносные расширения VSCode

Всем привет!

По ссылке можно ознакомиться с результатами исследования Checkpoint, посвященного анализу расширений (extensions) для VSCode.

Даже с учетом того, что Microsoft старается гарантировать защищенность того, что доступно на marketplace, все равно нашлись вредоносные расширения.

В статье приводятся примеры таких extensions:
🍭 Prettiest Java // попытка кражи чувствительных данных
🍭 Theme Darcula dark // передача данных об окружении на внешний ресурс
🍭 Python-vscode // установка shell injector

Некоторые из них скачивались более 45 000 раз. Из названий видно, что многие расширения «мимикрировали» под существующие безвредные аналоги. Получился такой вот аналог typo squatting.

А контролируете ли Вы устанавливаемые расширения в VSCode? И если да, то как?
👍4
Run containers as non-root: работает ли?

Всем привет!

Одна из самых базовых рекомендаций, что можно встретить при знакомстве с безопасностью контейнеров и Kubernetes – «не запускайте контейнеры из-под root».

Логично. Но много ли кто реализовал это на самом деле? Именно таким вопросом задаются Greg Castle и Vinayak Goyal в своем докладе. Согласно статистике – нет. Но как быть? Да, можно понять как работает образ, сделать необходимые chown, chmod, настроить права, вписать USER и т.д. Но это затратно по ресурсам, особенно на большом объеме контейнеров.

Как быть в такой ситуации? Команда определила следующий подход:
🍭 Все попытки запуска новых root контейнеров блокируются
🍭 У существующих контейнеров «отнимали» права root
🍭 Те, что остались работатьне требовали вмешательства
🍭 Если контейнер «сломался» - команда обращалась к владельцу для решения проблем

С точки зрения контроля было принято решение анализировать как Dockerfile (при наличии), так и модифицировать манифесты (добавлять runAsUser, runAsGroup, privileged: false и т.д.).

Особенно интересно, что в своем докладе ребята рассказали про сложности, с которыми им пришлось столкнуться. Например, особенности работы fsMount и hostPath, интересное использование supplementalGroups или нюансы, связанные с управлением capabilities.

Завершает рассказ упоминание Linux User Namespaces, которые недавно появились в Kubernetes (1.25, но пока Alpha) и как их (потенциально) можно будет использовать для решения задачи с root. Получился отличный, простой и очень полезный доклад, рекомендуем к просмотру!
👍8
Kubernetes Scheduler «на пальцах»

Всем привет!

Статья от learnk8s, посвященная принципам работы Kubernetes Scheduler. Как и все материалы от этих ребят – просто, понятно и крайне информативно.

Допустим мы сделали kubectl apply -f smth, будущий ресурс сохранился в etcd и теперь надо его создать. Кто это делает? Нет, не Scheduler, ControllerManager 😊 То самое состояние pending.

Далее уже Scheduler берется за дело. Определяет на каком узле кластера надо разместить ресурс и записывает эту информацию в etcd.

Самое интересное
в том, что происходит при выборе узла:
🍭 Фильтрация узлов. Есть целых 13 predicates, которые использует Kubernetes (например, CheckNodeCondition, PodMatchNodeSelector, CheckNodeDiskPressure и т.д.)
🍭 Scoring. Расстановка приоритетов размещения ресурса среди узлов, прошедших фильтрацию. И тут есть собственные predicates (например, NodeAffinityPriority, TaintTolerationPriority, LeastRequestedPriority)

Помимо этого, в статье приводятся способы влияния на решение Scheduler - те самые Affinity, Taints & Tolerations, NodeSelectors и другие! Весь материал подается с примерами и иллюстрациями для лучшего понимания ☺️ Самое «то» для пятницы!
🔥3
Определение Request и Limits с Kube-Reqsizer

Всем привет!

Установка параметров Requests и Limits является не только хорошей практикой, но и содержится практически во всех рекомендациях по ИБ. Однако, не всегда может быть понятно какие значения поставить.

Может помочь герой сегодняшнего поста – Kube-Reqsizer. С его помощью можно автоматически управлять параметрами Requests и Limits для нагрузок кластера. Не путать с VPA (Vertical Pod Autoscaler), т.к. есть различия в работе 😊

Kube-Reqsizer представляет из себя controller, обладающий функционалом:
🍭 Определяет количество CPU/RAM, потребляемых pod. Для этого используется metrics-server и API-группа apis/metrics.k8s.io/v1beta1
🍭 Анализирует pod, идентифицирует его «прародителей»
🍭
После этого изменяет параметры Requests и Limits в «прародителе»

Kube-Reqsizer можно минималистично настраивать. Например, (не) разрешить ему увеличивать или уменьшать показатели, ограничивать CPU и RAM, которые он может поставить для pod и не только.

Ранее мы уже писали про управление Requests и Limits и возможные способы автоматизации тут и тут. Все они построены «поверх» VPA 😊
👍1