DevSecOps Talks – Telegram
DevSecOps Talks
7.44K subscribers
85 photos
94 files
1.23K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
Всем привет!

Еще один Admission Webhook, который вместе с политиками, написанными на OPA, позволяет анализировать запускаемые сущности на предмет соответствия политикам ИБ (в том числе преднастроенным) для принятия решения о возможности ее (сущности) создания.

Это MagTape! Перечень доступных политик «из коробки» (отдельно – описание политик):
🍭 Liveness Probe (Check ID: MT1001)
🍭 Readiness Probe (Check ID: MT1002)
🍭 Resource Limits (Check ID: MT1003)
🍭 Resource Requests (Check ID: MT1004)
🍭 Pod Disruption Budget (Check ID: MT1005)
🍭 Istio Port Name/Number Mismatch (Check ID: MT1006)
🍭 Singleton Pods (Check ID: MT1007)
🍭 Host Port (Check ID: MT1008)
🍭 emptyDir Volume (Check ID: MT1009)
🍭 Host Path (Check ID: MT1010)
🍭 Privileged Pod Security Context (Check ID: MT2001)
🍭 Node Port Range (Check ID: MT2002)

Из интересного – позволяет генерировать K8S Events (через MAGTAPE_K8S_EVENTS_ENABLED = TRUE) и отправлять уведомления в Slack (native интеграция).

Из важного (!) ⚡️требует прав Cluster Admin.

До конца непонятно, чем это отличается от связки OPA/GateKeeper с большим количеством политик, которые можно найти в различных repo. Возможно, что именно native интеграцией со Slack 😊
Привет!

Хорошая статья на тему Namespaces и Cgroups в *nix-based системах для начинающих.

В начале приводится краткое определение терминов:
🍭 Namespaces – возможность «разделения» ресурсов таким образом, что один набор процессов видит одну группу ресурсов, а второй набор – иную группу. Еще проще – при помощи Namespace можно изолировать процессы друг от друга
🍭 Cgroups – возможность управления CPU, памятью, I/O, сетевыми возможностями и т.д.

Дальше приводится краткое описание различных «видов» namespace (User, PID, Network и т.д.) и возможностей Cgroups (Limits, Prioritization, Accounting и т.д.)

Есть наглядные диаграммы, демонстрирующие принципы работы и небольшие примеры создания сущностей ☺️
Всем привет!

ArgoCD – достаточно популярный инструмент для автоматизации Continuous Deployment, CD. В статье приводится пример того, как некорректная конфигурация приводит к проблемам с безопасностью.

Все достаточно просто – злоумышленник воспользовался доступным извне Argo Dashboard для того, чтобы создать собственный Workflow: YAML, описывающий что и с чем необходимо сделать. Пример – создание контейнера с сryptominer.

Означает ли это, что ArgoCD лучше не использовать? Скорее это означает что все надо корректно настраивать и обращать внимание на практики по информационной безопасности, разрабатываемые, в том числе и maintener’ами проекта
Всем привет!

Недавно команда Falco выпустила ряд интерактивных лабораторных работ, которые позволят познакомиться с решением поближе.

В настоящее время доступны следующие лабораторные работы:
🍭 Lab 1 - Introduction to Falco
🍭 Lab 2 - Falco forensics in K8s
🍭 Lab 3 - Falcosidekick: Threat Response Engine
🍭 Lab 4 - Falco Custom Rules (пока находится в работе)

Все лабораторные бесплатны и занимают немного времени (15-20 минут). Пример содержания первой лабораторной работы:
"В этой лабораторной работе вы изучите основы Falco и как его использовать для идентификации аномалий в контейнере. Вы будете в ролях как атакующего, так и ИБ-специалиста, что позволит убедиться в том, что Falco идентифицировал попытки проникновения"

Надеемся, что проект получит развитие и количество лабораторных работ будет увеличиваться!
Всем привет!

Вышел новый release Trivy, v0.20.0! Главным новшеством, на наш взгляд, является миграция на новую JSON-схему. Подробнее об изменениях схемы можно почитать тут. Возможно, потребуется адаптация/изменение существующего parser.

Кроме этого обновление содержит большое количество изменений и нововведений. Добавлено/улучшено/изменено (детали описаны в changelog):

🍭 Egg/Wheel/requirements.txt для Python. Для requirements пока что поддерживается только «==»
🍭 Gemspec для Ruby
🍭 Package.json для Node.js
🍭 packages.config для NuGet
🍭 В генерируемый отчет добавлено предоставление информации об используемых лицензиях (Alpine и RHEL-based образов, а также для Python, Ruby и Node.js)

И многое другое, включая bugfixes. Подробнее можно почитать в changelog по приведённой ссылке.
Всех с пятницей!

Устали от всех этих деплоев, контейнеров, бесконечных обновлений гитлаба и, прости господи, кубернетиса? Тогда сегодня, специально для вас мы представляем вашему вниманию настоящее возвращение к истокам!

А какие "истоки" могут быть более приятные, чем сборка собственного компьютера из комплектующих, закручивание винтиков со всей любовью и подключение многочисленных шлейфиков? Уж если не это, то что тогда?

Встречайте сегодняшнего гостя: Симулятор сборки ПК!
Забудьте на вечер про девопс, ведь тут есть:
🍬 топовые процессоры
🍬 быстрая память
🍬 жирнейшие диски
🍬 водяное охлаждение
🍬 дорогущая графика
🍬 и огромное количество винтиков

Брось девопс, открой бизнес, собирай компьютеры!
Всем привет!

Все мы понемногу становимся YAML-разработчиками. Отчасти – шутка, отчасти – правда!

Для того, чтобы разобраться что к чему и оптимизировать деятельность по созданию YAML-файлов можно воспользоваться рекомендациями, приведенными в статье:
🍭 В начале пути пишите YAML-файлы «в ручную», без использования «генераторов». Это поможет разобраться в структуре, а также соответствует принципам декларативного подхода описания сущностей
🍭 Используйте «квази-генераторы», с использование kubectl, --dry-run=client и -o yaml > %filename%. Будет некоторая избыточность, но вы уже знаете как и что поправить
🍭 Используйте… средства автоматизации для обработки YAML-файлов! Например, yq (идеологический аналог jq, но только для YAML). Инструмент позволит оптимизировать рутинные действия. Но, как и при работе с любым инструментом сперва необходимо освоить его
🍭 Что делать, если раньше использовали compose и есть потребность «переезда» на K8S manifest? Тут может помочь kompose. Да, скорее всего потребуется доработка результатов, но проблема «чистого листа» будет решена, а время – сэкономлено
🍭 И самый hardcore-вариант! Если вы владеете языками программирования, то можно писать конфигурационные файлы K8S прямо на «родном диалекте» с использованием CDK8S!

Вариантов много, главное – найти максимально удобный для себя. А поиск этого лишнего или, наоборот, недостающего пробела в большом manifest – бесценно ☺️
Привет!

Просто и крайне удобный инструмент для идентификации default passwordsChangeme!

В настоящее время поддерживается:
🍭 http/https
🍭 mssql
🍭 mysql
🍭 postgres
🍭 ssh, ssh w/key
🍭 snmp
🍭 mongodb
🍭 ftp

Файлы с идентифицируемыми credentials хранятся отдельно от кода, что упрощает процесс добавления «своих». Пример для MySQL и Postgres (все описано в виде yaml).

Есть небольшая Wiki, где описаны и продемонстрированы примеры использования утилиты с указанием определенных ключей (Basic Scan, Target Specification, Overriding Ports, Proxy, Multiple Ports)
Всем привет!

У HashiCorp есть множество крутых обучающих и методических материалов, посвященных их продуктам. Теперь получить к ним доступ стало еще проще, ведь Hashi сделали свой аналог «awesome» и собрали всю информацию о HashiCorp Learning Resources Reference Guide в одной статье!

В перечне материалов есть такие ресурсы, как:
🍭 Официальная документация (Boundary, Consul, Cloud Platform, Nomad, Packer, Sentinel, Terraform, Vagrant, Vault)
🍭 HashiCrop Learn (теория + лабораторные работы)
🍭 YouTube (очень много вебинаров по тому, как использовать решения компании, с примерами)
🍭 Blogs (официальный блог Hashi, блог ребят на Medium)
🍭 HashiConf Hands-on Labs (наборы лабораторных работ)
🍭 Technical Examples (общедоступные наработки команды) и не только!

На наш взгляд сохранить эту закладку – просто must, если вас интересует HashiCorp и их продукция!
Привет!

Syft – полезная утилита, которая позволяет сгенерировать Software Bill of Materials (SBOM) для образов контейнеров - перечень компонентов, из которых "состоит" ПО и образ.

Реализована поддержка пакетов и библиотек для APK, DEB, RPM, Ruby Bundles, Python Wheel/Egg/requirements.txt, JavaScript NPM/Yarn, Java JAR/EAR/WAR, Jenkins plugins JPI/HPI, Go modules.

Присутствует нативная интеграция с другим продуктом Anchore – Grype (сканер уязвимостей для образов контейнеров).

И, как обычно, поддержка большого количества output форматов: json, text, cyclonedx, spdx, spdx-json, table.

Кстати, недавно (11 октября) прошла конференция, посвященная безопасности Supply Chain – Supply Chain Security Con. Записей докладов пока нет, но можно скачать keynotes для того, чтобы быстро ознакомиться с ключевыми тезисами.
Привет!

Aqua Enterprise получила большое обновление.
Главное в версии 6.5 — фича под названием Advanced malware protection. Она добавляет новые функции встроенному антивирусу, такие как:
🍏 Защита в реальном времени для хостов и контейнеров.
🍏 Обнаружение вредоносов в файлах, буфере обмена и реестре Windows.
🍏 Обнаружение и предотвращение file-less атак.
🍏 Новые виджеты для главного дэшборда :)

Помимо этого, обновление содержит:
🍏 Новые фильтры для журналов аудита.
🍏 Поддержку установки в среде k3s.
🍏 Возможность настройки отдельных Enforcers (ранее настраивать можно было только Enforcer groups).
🍏 Поддержку интеграции с GitHub Container Registry.
🍏 Jenkins плагин теперь поддерживает сканирование с использованием Podman.
🍏 Aqua Starboard теперь по умолчанию деплоится вместе с KubeEnforcer-ами.
🍏 Появились новые команды для API и ряд других нововведений.

Апгрейд на версию 6.5 поддерживается для версий 6.2, 6.0 и 5.3.
Привет!

Отрицательный опыт – тоже опыт! Есть интересные подборки с anti-pattern, в которых описано как делать НЕ стоит и почему это так.

В статье приведены 10 anti-pattern для Kubernetes deployment:
🍭 Размещать конфигурацию внутри образа контейнера
🍭 НЕ использовать Helm или иные templating-решения
🍭 Deploy в определенном порядке (приложения не должны «падать», если их зависимости еще «не готовы»)
🍭 Deploy без указания Lim/Req для CPU и RAM
🍭 Использование образов с тэгом «latest» в продуктивных средах
🍭 Deploy обновлений через «убийство» pod (что влечет image pull, более корректный путь – через модификацию конфигурации, что приведет к обновлению с сохранением управления версионности)
🍭 Использование продуктивных и тестовых сущностей в одном кластере
🍭 НЕ использовать blue/green и/или canary deployment
для обновления критичных приложений (rolling updates не всегда достаточны)
🍭 Отсутствие метрик для анализа успешности deployment
🍭 Cloud vendor lock-in: «привязка» к облачным услугам (корректный путь – создание сущностей таким образом, чтобы их можно было легко «переносить» между различными средами)

Почему тот или иной anti-pattern попал в перечень неплохо расписано в самой статье и с примерами (оценка Medium на время чтения статьи ~ 22 минуты)

P.S. Всех с пятницей! Отличных выходных!
Всем привет!

Veracode сделал общедоступными часть своих интерактивных курсов по обучению безопасной разработке!

Доступно несколько базовых направлений:
🍭 Base Terminal
🍭 Juice Shop
🍭 Python AppSec
🍭 React

Если Вас интересует интерактивное обучение, то можно обратить внимание на проекты Kontra (о котором мы писали тут) и Codebashing от Checkmarx (если платная и бесплатная версия).

Также ребята сделали удобное сравнение между платной и бесплатной версией своего продукта (доступно по ссылке). Согласно сравнительной табличке Community Edition является Forever Free 😊
Всем привет!

Еще один cheatsheet на тему Docker security, на этот раз от GitGuardian!

Об этом есть множество аналогичных материалов, подборка от GitGuardian не стала исключением и состоит из знакомого перечня рекомендаций:
🍭 Корректное использование tags
🍭 Назначение default user
🍭 Исключение plain text секретов из ENV
🍭 Контроль доступа к docker daemon
🍭 Управление linux capabilities
🍭 Контроль файловой системы, возможностей на чтение/запись в определенные директории и другое

Что отличает рекомендации GitGuardian и почему стоит на них взглянуть? Крайне удобная схема, где все рекомендации собраны воедино. Можно использовать в качестве шпаргалки, когда надо посмотреть "а не забыл ли я что?" ☺️
Всем привет!

Рано или поздно вам придется столкнуться с CrashLoopBackOff… Иногда понять в чем причина не всегда просто и можно воспользоваться рекомендациями из статьи.

Ребята выделили наиболее частые причины, которые приводят к указанному состоянию:
🍭 Insufficient resource – недостаток ресурсов, из-за которого контейнер не может запуститься
🍭 Locked file – файл был заблокирован другим контейнером
🍭 Locked database – база данных используется (заблокирована) другим контейнером
🍭 Failed reference – что-то внутри контейнера ссылается на скрипты/исполняемые файлы, которые отсутствуют в контейнере
🍭 Setup error – некорректная настройка init-container
🍭 Config loading error – невозможно загрузить требуемую конфигурацию
🍭 Misconfigurations – некорректные настройки системы
🍭 Connection issues – DNS или kube-DNS не может «связаться» со сторонним сервисом
🍭 Deploying failed services – попытка deploy сервиса/приложения, которое уже находится в статусе «failed» (например, из-за невозможности доступа к иным сервисам)

Помимо самих причин в статье представлены debug-рекомендации, разборы «не типовых» сценариев, которые могут привести к указанной ошибке
Привет!

Статья, посвященная Autoscaling (динамической адаптации вычислительных ресурсов, таких как CPU и RAM в зависимости от потребностей и эффективности работы приложения). Autoscaling может работать как для увеличения ресурсов, так и для их сокращения, чтобы оптимизировать работу кластера.

Рассматривается несколько видов, доступных в Kubernetes:
🍭 Horizontal Pod Autoscaler (HPA): управление количеством pods, например, в replicas, scale out
🍭 Vertical Pod Autoscaler (VPA): управление мощностями существующих сущностей, scale up
🍭 Cluster Autoscaler: управление вычислительными мощностями кластера, если их недостаточно для корректного функционирования нагрузок

Принцип работы Autoscaler достаточно прост: создается Kubernetes API Resource и Controller. Controller взаимодействует с Metrics API Server и принимает решение о необходимости масштабирования, если оно требуется

В завершении статьи приводится небольшая инструкция, в которой показано, как это можно настроить на примере HPA.

Написано очень доступно, с диаграммами и объяснением каждого концепта «на пальцах». Для Ops-специалистов, скорее всего, не будет ничего нового, а для Sec, которым интересно погрузиться – вполне. Тем более, что ранее мы уже писали об интересном способе использования VPA для формирования Req/Lim для CPU и RAM с использованием Goldilocks.
Всем привет!

Пока мы морально готовимся к «рабочим выходным», миримся с ушедшим бабьим летом и промокаем под постоянными дождями, наступила пятница!
И в этот день судьба решила порадовать нас и подарить чудесный солнечный день!
А мы порадуем вас интересной фичей - от команды хорошо знакомого нам GitHub. GitHub Actions!

Фича, по сути, не совсем новая, но для GitHub это эдакий свой взгляд на реализацию CI/CD. Как бы ни напрашивалось сравнение с GitLab CI, подход к реализации у GitHub получился иной.

🍩 Фича представляет из себя отдельный каталог в репозитории с набором YML манифестов, каждый из которых описывает какое то действие этапа сборки. Например action для test или merge коммита в мастер ветку.
🍩 Для начала работы не требуется никаких настроек или интеграций. Достаточно создать каталог .github/workflows, в котором будут размещены job манифесты
🍩 Actions могут быть особенно полезны в облачных инфраструктурах, так как описание абсолютно всех этапов и триггеров сборок могут быть размещены в одном репозитории, который клонируется, например в CodeCommit
🍩 В целом комплекс очень напоминает большие плейбуки Ansible с кросс ссылками друг на друга. Возможность создания подобных конструкций поможет создавать большие workflow с множеством различных trigger и специфичных jobs для разных event.

Отдельного упоминания заслуживает marketplace вендора, в котором собран набор манифестов часто используемых Actions, а так же возможность писать собственные action’ы и шарить их с комьюнити.

Ссылка как всегда ниже, приятного ознакомления! 👇

https://github.com/features/actions
Kubernetes cloud native operations report 06.21.pdf
3.6 MB
Всем привет!

В приложении отчет от Canonical«Kubernetes and cloud native operations report 2021». Он содержит много интересной статистической информации на основе ответов 1200 респондентов.

Например:
🍭 Использование cloud (public, hybrid, private)
🍭 Информация о количестве кластеров
🍭 Использование виртуализации и/или bare metal
🍭 Helm-chart, насколько часто их используют
🍭 Основные опасения при работе с оркестраторами и многое другое!

Много цифр, мало «воды», рекомендуем к ознакомлению! ☺️
Привет!

Отличная статья про написание Custom Scheduler для Kubernetes! В начале статьи описаны концепты Scheduling:
🍭 После запроса о создании pod попадает в Scheduling Queue
🍭 Далее pod надо назначить на node, это делается в 2 этапа: Scheduling и Binding
🍭 Scheduling происходит в несколько этапов. Сперва «отсекаются» nodes, которые не подходят для запуска pod (например, из-за taints). Далее оставшиеся (подходящие) nodes ранжируются (фильтруются) с целью выбор единственной
🍭 Bindingвзаимодействие с Kubelet выбранной node, постановка задачи на создание pod

Изменение приоритетов scheduling может быть осуществлено при помощи plugins, которые могут видоизменять процесс на разных этапах (см. картинку в статье). Общий набор plugins, которые используются в процессе scheduling описывается в profile (грубо говоря, описываем, как и что надо делать, на каком этапе).

Вторая часть статьи посвящена созданию собственного plugin’a – “NetworkTraffic”, его настройке и последующему использованию в качестве «основного» механизма scheduling. Принцип простой - выбираем node на основе анализа сетевого трафика!

Много кода, конфигураций и примеров!
Очень наглядно и понятно объясняет концепт принятия решения о том, где именно следует запустить pod
Всем привет!

SNYK подготовили собственный набор обучающих курсов по тематике безопасности приложений. На данный момент можно попробовать:

🍭 Java: SQLi, Directory Traversal, XSS
🍭 JavaScript: SQLi, Directory Traversal, XSS, Prototype Pollution
🍭 Kubernetes: Container does not drop all default capabilities

Помимо интерактивных demo приводится много интересной теории, а также объясняет, что именно плохо, почему это так, к чему это может привести и как это можно поправить.

Очень наглядно – схемы, примеры кода и ссылки на полезные ресурсы с информацией! Надеемся, что проект будет развиваться, а количество курсов - увеличиваться 😊
Привет!

Интересный проект, представляющий из себя средство защиты web-трафика, services и API - Curiefence. Поддерживается интеграция с Envoy и Nginx.

Согласно документации, включает в себя такие функции как:
🍭 WAF (включая позитивные и негативные модели)
🍭 Защита от DDoS на прикладном уровне
🍭 Защита API
(включая schema enforcement) и не только

"Из коробки" доступны преднастроенные dashboards с использованием Kibana, так же можно анализировать метрики при помощи Grafana.

Общий концепт решения представлен в коротком видео. На Katacoda доступно несколько уроков для ознакомления: Getting Started и API Basics.

P.S. Проект является частью CNCF (CNCF Sandbox project). С документацией можно ознакомиться вот тут.