Аутентификация в Kubernetes: основы
Всем привет!
Во многих стандартах, требованиях, рекомендациях и т.д. можно встретить вполне понятное требование по контролю аутентификации. Первое что приходит на ум – пароль, ключевая фраза, токен или еще что-либо, что пользователь вводит для подтверждения своей «личности».
В Kubernetes все несколько иначе и выполнение требования «в лоб» может породить больше вопросов, чем ответов.
Чтобы со всем разобраться и понять, что же происходит «под капотом» рекомендуем ознакомиться со статьей, в которой на базовом примере
🍭 Кто может делать запросы к api-server
🍭 Какие способы аутентификации доступны и что реализовано «из коробки»
🍭 Можно ли изменять «стратегии» аутентификации
🍭 Разрешено ли одновременно использовать несколько способов аутентификации в одном кластере
Каждый из этих вопросов детально описывается в статье, приводятся примеры для лучшего понимания. А в завершении статьи приводятся рекомендации относительно того, какой из механизмов аутентификации лучше использовать, почему и какими недостатками он обладает.
Всем привет!
Во многих стандартах, требованиях, рекомендациях и т.д. можно встретить вполне понятное требование по контролю аутентификации. Первое что приходит на ум – пароль, ключевая фраза, токен или еще что-либо, что пользователь вводит для подтверждения своей «личности».
В Kubernetes все несколько иначе и выполнение требования «в лоб» может породить больше вопросов, чем ответов.
Чтобы со всем разобраться и понять, что же происходит «под капотом» рекомендуем ознакомиться со статьей, в которой на базовом примере
curl https://api-server-address:6443/api/v1/namespaces объясняется что к чему:🍭 Кто может делать запросы к api-server
🍭 Какие способы аутентификации доступны и что реализовано «из коробки»
🍭 Можно ли изменять «стратегии» аутентификации
🍭 Разрешено ли одновременно использовать несколько способов аутентификации в одном кластере
Каждый из этих вопросов детально описывается в статье, приводятся примеры для лучшего понимания. А в завершении статьи приводятся рекомендации относительно того, какой из механизмов аутентификации лучше использовать, почему и какими недостатками он обладает.
Learnk8s
User and workload identities in Kubernetes
In this article you will explore how users and workloads are authenticated with the Kubernes API server
👍6
Dependency Confusion
Всем привет!
Dependency Confusion – одна из «популярных» уязвимостей 2021 года. Суть ее достаточно проста. Допустим есть локальная библиотека
Для проведения PoC реализации Dependency Confusion ребята из Doyensec создали Confuser – утилиту, которая автоматизирует часть этапов (на примере
Работает она по следующему сценарию:
🍭 Поиск пакетов, которых нет в публичных репозиториях
🍭 Создание payload используя особенности
С подробностями, включая сложности поиска и особенности эксплуатации Dependency Confusion, можно ознакомиться в статье (рекомендуем к прочтению), а сам Confuser доступен вот тут.
Если до сих пор не верится, что такое встречается в «реальном мире» - можно прочесть статью «Researcher hacks over 35 tech firms in novel supply chain attack». В ней описано, как Alex Birsan заработал $130,000 на bug-bounty программах, эксплуатируя эту самую уязвимость.
P.S. Напоминаем про то, что это лучше не повторять. Статья исключительно для образовательных целей и лучшего понимания того, как и что может произойти
Всем привет!
Dependency Confusion – одна из «популярных» уязвимостей 2021 года. Суть ее достаточно проста. Допустим есть локальная библиотека
«libone» версии 1, которая разработана в Компании N. Злоумышленник может сделать свою версию библиотеки с таким же наименованием и разместить ее в публичном репозитории. А версию указать выше, чем у той библиотеки, что есть в локальном репозитории Компании N. Возможны сценарии, когда сборщик будет использовать более старшую версию, а значит ту, что создал злоумышленник.Для проведения PoC реализации Dependency Confusion ребята из Doyensec создали Confuser – утилиту, которая автоматизирует часть этапов (на примере
npm).Работает она по следующему сценарию:
🍭 Поиск пакетов, которых нет в публичных репозиториях
🍭 Создание payload используя особенности
npm и install hooks
🍭 Передача информации обратно в сторону злоумышленника - callbacksС подробностями, включая сложности поиска и особенности эксплуатации Dependency Confusion, можно ознакомиться в статье (рекомендуем к прочтению), а сам Confuser доступен вот тут.
Если до сих пор не верится, что такое встречается в «реальном мире» - можно прочесть статью «Researcher hacks over 35 tech firms in novel supply chain attack». В ней описано, как Alex Birsan заработал $130,000 на bug-bounty программах, эксплуатируя эту самую уязвимость.
P.S. Напоминаем про то, что это лучше не повторять. Статья исключительно для образовательных целей и лучшего понимания того, как и что может произойти
Doyensec
Dependency Confusion
On Feb 9th, 2022 PortSwigger announced Alex Birsan’s Dependency Confusion as the winner of the Top 10 web hacking techniques of 2021. Over the past year this technique has gained a lot of attention. Despite that, in-depth information about hunting for and…
👍1
Kubectl-Ice
Всем привет!
Kubectl-ice – plugin для kubectl, которые может быть полезен для получения информации о контейнерах и поиска ошибок.
Он может:
🍭 Показывает все контейнеры в namespace («обычные», init, ephemeral)
🍭 Может показать перечень всех образов контейнеров, которые используются в namespace
🍭 Отобразить информацию по всем SecurityContext и POSIX cabapilities
🍭 Информацию об используемых ресурсах контейнерами
🍭 Сведения о mount, которые используются контейнерами и не только
Доступна фильтрация данных и отображение в различных форматах. В repo можно найти небольшой demo-ролик, в котором наглядно показано, как можно использовать kubectl-ice.
Всем привет!
Kubectl-ice – plugin для kubectl, которые может быть полезен для получения информации о контейнерах и поиска ошибок.
Он может:
🍭 Показывает все контейнеры в namespace («обычные», init, ephemeral)
🍭 Может показать перечень всех образов контейнеров, которые используются в namespace
🍭 Отобразить информацию по всем SecurityContext и POSIX cabapilities
🍭 Информацию об используемых ресурсах контейнерами
🍭 Сведения о mount, которые используются контейнерами и не только
Доступна фильтрация данных и отображение в различных форматах. В repo можно найти небольшой demo-ролик, в котором наглядно показано, как можно использовать kubectl-ice.
GitHub
GitHub - NimbleArchitect/kubectl-ice: Kubectl-ice is an open-source tool for Kubernetes users to monitor and optimize container…
Kubectl-ice is an open-source tool for Kubernetes users to monitor and optimize container resource usage. Features include usage breakdowns for pods and containers, making scaling and optimization ...
🔥1
Trivy vs Trivy-Operator
Всем привет!
На первый взгляд может показаться, что Trivy и Trivy-Operator это одно и тоже. Разница лишь в том, что Trivy-Operator запускается в качестве operator’a в кластере, а Trivy работает локально. Но это не совсем так.
В статье приводится основная разница между этими решениями. Если кратко, то Trivy-Operator использует Trivy в качестве сканера. При большом желании можно «подключить» свой сканер, для этого надо реализовать несколько интерфейсов.
Так в чем же разница?
🍭 Trivy передает результат в терминал, можно делать выгрузку в различных форматах, в т.ч. json. Результаты работы Trivy-Operator представляют из себя Custom Resources Kubernetes
🍭 Разный объем результатов, что отчасти связано с ограничением по умолчанию на запись в etcd в размере 1,5 MB.
🍭 Trivy запускается локально (на рабочей станции, в CI/CD). Trivy-Operator «устанавливается» на кластер и анализирует сущности по мере их создания и на периодической основе.
Таким образом, можно сказать, что Trivy более удобный инструмент для анализа в моменте разработки, а Trivy-Operator – на момент эксплуатации.
Всем привет!
На первый взгляд может показаться, что Trivy и Trivy-Operator это одно и тоже. Разница лишь в том, что Trivy-Operator запускается в качестве operator’a в кластере, а Trivy работает локально. Но это не совсем так.
В статье приводится основная разница между этими решениями. Если кратко, то Trivy-Operator использует Trivy в качестве сканера. При большом желании можно «подключить» свой сканер, для этого надо реализовать несколько интерфейсов.
Так в чем же разница?
🍭 Trivy передает результат в терминал, можно делать выгрузку в различных форматах, в т.ч. json. Результаты работы Trivy-Operator представляют из себя Custom Resources Kubernetes
🍭 Разный объем результатов, что отчасти связано с ограничением по умолчанию на запись в etcd в размере 1,5 MB.
🍭 Trivy запускается локально (на рабочей станции, в CI/CD). Trivy-Operator «устанавливается» на кластер и анализирует сущности по мере их создания и на периодической основе.
Таким образом, можно сказать, что Trivy более удобный инструмент для анализа в моменте разработки, а Trivy-Operator – на момент эксплуатации.
Aquasec
Vulnerability Scanning: Trivy vs the Trivy Operator
Comparison of open source Trivy vs integrable Trivy Operator for vulnerability scanning of images, repositories, K8s cluster, IaC, secrets, and more
👍5
Arbitrary command execution через… Snyk CLI
Всем привет!
Интересная статья от Imperva, в которой рассказано о том, как команда нашла CVE-2022-40764, эксплуатация которой позволяет реализовать «arbitrary command execution» при использовании Snyk CLI.
Статья читается как небольшой детектив и на одном дыхании! Получился примерно такой путь:
🍭 Monkey patch для Snyk CLI с целью журналирования значимых NodeJS действий (например, доступ к файлам, запуск shell)
🍭 Да, все так, оказалось, что shell запускается! Дальнейшее исследование привело к идентификации причины: файл
Реализацию подобной атаки выполнить сложно. Однако, у Snyk есть VS Code plugin, который использует CLI для автоматического сканирования кода при открытии IDE. Остается только сделать так, чтобы пользователь открыл «интересующий» код в VS Code. PoC-ролик, примеры monkey patch, payload’ов и код обработки поля
Команда Snyk, в свою очередь, достаточно оперативно устранила дефект и выпустила соответствующий патч 😊
Всем привет!
Интересная статья от Imperva, в которой рассказано о том, как команда нашла CVE-2022-40764, эксплуатация которой позволяет реализовать «arbitrary command execution» при использовании Snyk CLI.
Статья читается как небольшой детектив и на одном дыхании! Получился примерно такой путь:
🍭 Monkey patch для Snyk CLI с целью журналирования значимых NodeJS действий (например, доступ к файлам, запуск shell)
🍭 Да, все так, оказалось, что shell запускается! Дальнейшее исследование привело к идентификации причины: файл
vendor.json и поле ignore
🍭 Первый payload, подготовленной командой не сработал из-за особенностей «обработки» значения, указанного в поле ignore
🍭 А вот второй… уже позволил запустить калькулятор на рабочей станции пользователя!Реализацию подобной атаки выполнить сложно. Однако, у Snyk есть VS Code plugin, который использует CLI для автоматического сканирования кода при открытии IDE. Остается только сделать так, чтобы пользователь открыл «интересующий» код в VS Code. PoC-ролик, примеры monkey patch, payload’ов и код обработки поля
ignore можно увидеть в статье.Команда Snyk, в свою очередь, достаточно оперативно устранила дефект и выпустила соответствующий патч 😊
Blog
How Scanning Your Projects for Security Issues Can Lead to Remote Code Execution | Imperva
UPDATE: Snyk has recently addressed 2 additional vulnerabilities we have reported to them, CVE-2022-24441 and CVE-2022-22984, affecting versions of Snyk CLI before XXX, which leads to arbitrary code execution when scanning untrusted Maven or Gradle projects.…
👍2🔥1
Kubernetes Security Profiles Operator
Привет!
Основная задача Security Profile Operator – сделать использование и управление SELinux, AppArmor и Seccomp профилями более простыми и удобными для пользователей. Предысторию его появления можно узнать в этом RFC.
Он представляет из себя Operator, который управляет Custom Resources, с которыми можно ознакомиться тут.
Обладает следующими возможностями:
🍭 Создание профилей через CRD
🍭 Применение профилей для Pod
🍭 Автоматическая генерация профилей (частично, пока только для Seccomp)
Для лучшего ознакомления с Security Profile Operator, вариантами запуска, возможностями и принципами работы рекомендуем ознакомиться со статьей. Roadmap дальнейшего развития проекта представлен в repo в виде диаграммы ☺️
P.S. А В этом repo можно найти очень-очень-очень много AppArmor профилей
Привет!
Основная задача Security Profile Operator – сделать использование и управление SELinux, AppArmor и Seccomp профилями более простыми и удобными для пользователей. Предысторию его появления можно узнать в этом RFC.
Он представляет из себя Operator, который управляет Custom Resources, с которыми можно ознакомиться тут.
Обладает следующими возможностями:
🍭 Создание профилей через CRD
🍭 Применение профилей для Pod
🍭 Автоматическая генерация профилей (частично, пока только для Seccomp)
Для лучшего ознакомления с Security Profile Operator, вариантами запуска, возможностями и принципами работы рекомендуем ознакомиться со статьей. Roadmap дальнейшего развития проекта представлен в repo в виде диаграммы ☺️
P.S. А В этом repo можно найти очень-очень-очень много AppArmor профилей
GitHub
GitHub - kubernetes-sigs/security-profiles-operator: The Kubernetes Security Profiles Operator
The Kubernetes Security Profiles Operator. Contribute to kubernetes-sigs/security-profiles-operator development by creating an account on GitHub.
👍3
Совместное использование Snyk и ArgoCD
Всем привет!
В статье приводится tutorial, который позволит анализировать приложения, контролируемые ArgoCD при помощи Snyk.
Последовательность действий:
🍭 Создание приложения в ArgoCD
🍭 Настройка PreSync Hook в ArgoCD, который будет запускать анализ запускаемых сущностей при помощи Snyk
🍭 Просмотр результатов: в ArgoCD и в консоли Snyk
В целом такой подход можно использовать не только со Snyk а с любым другим инструментом анализа, который Вы используете.
Всем привет!
В статье приводится tutorial, который позволит анализировать приложения, контролируемые ArgoCD при помощи Snyk.
Последовательность действий:
🍭 Создание приложения в ArgoCD
🍭 Настройка PreSync Hook в ArgoCD, который будет запускать анализ запускаемых сущностей при помощи Snyk
🍭 Просмотр результатов: в ArgoCD и в консоли Snyk
В целом такой подход можно использовать не только со Snyk а с любым другим инструментом анализа, который Вы используете.
Snyk
Secure your application from Argo CD to Kubernetes | Snyk
How to use Snyk for application security in GitOps, focusing on the popular Kubernetes-native Argo CD tool.
👍4
Seccomp в Kubernetes: 7 базовых вещей
Всем привет!
Использование Secure Compute Mode (Seccomp) позволит сократить поверхность атаки за счет возможности ограничения/разрешения syscalls, которые могут быть «запущены». Базовый профиль содержит несколько основных блоков:
Частично ответ на это есть в подробной статье от Paulo Gomes, в которой он раскрывает важные аспекты, про которые не стоит забывать, например:
🍭 Устанавливайте
🍭 Назначайте Seccomp профиль на уровне Container, а не Pod (статья 2019 года, возможно причина уже не актуальна)
🍭 Используйте default профили только в экстренных случаях. Лучше напишите свои
🍭 Запускайте Seccomp в режиме аудита для «тонкой настройки». Да, так можно
🍭 Whitelisting лучше, чем Blacklisting
Для каждого рассмотренного совета Paolo приводит аргументацию, почему предложенный вариант является оптимальным и несколько примеров. Отличная статья, чтобы начать изучение Seccomp.
P.S. В документации Docker можно ознакомиться с обоснованием того, почему тот или иной syscall «заблокировали» и он не попал в Seccomp профиль.
Всем привет!
Использование Secure Compute Mode (Seccomp) позволит сократить поверхность атаки за счет возможности ограничения/разрешения syscalls, которые могут быть «запущены». Базовый профиль содержит несколько основных блоков:
defaultAction – действие, которое будет применено «по умолчанию», architectures (syscalls могут обладать разными id в зависимости от архитектуры), syscalls – перечень системных вызовов. Но как его правильно «приготовить»?Частично ответ на это есть в подробной статье от Paulo Gomes, в которой он раскрывает важные аспекты, про которые не стоит забывать, например:
🍭 Устанавливайте
allowPrivilegeEscalation в значение false. Да, это влияет на Seccomp. Как именно – описано в статье🍭 Назначайте Seccomp профиль на уровне Container, а не Pod (статья 2019 года, возможно причина уже не актуальна)
🍭 Используйте default профили только в экстренных случаях. Лучше напишите свои
🍭 Запускайте Seccomp в режиме аудита для «тонкой настройки». Да, так можно
🍭 Whitelisting лучше, чем Blacklisting
Для каждого рассмотренного совета Paolo приводит аргументацию, почему предложенный вариант является оптимальным и несколько примеров. Отличная статья, чтобы начать изучение Seccomp.
P.S. В документации Docker можно ознакомиться с обоснованием того, почему тот или иной syscall «заблокировали» и он не попал в Seccomp профиль.
Medium
Seccomp in Kubernetes — Part I: 7 things you should know before you even start!
The first of a series on how to land great seccomp profiles in a SecDevOpsy way without resorting to magic or sorcery. First the internals!
Seccomp в Kubernetes: создание профиля
Привет!
Вторая часть статьи от Paolo Gomes, посвященная Seccomp! В ней Paolo рассуждает на тему того, как можно создать whitelist-профили и как решить самую значимую задачу – определить, какие именно syscalls используются приложением.
С точки зрения Paolo есть несколько способов получить желаемый перечень. Каждый из них обладает своими недостатками, но вместе все может сработать.
Например:
🍭 Использование strace для получения syscalls, используемых командой
🍭 Анализ приложения для сбора всех syscalls. Paolo сделал PoC для программного обеспечения, разрабатываемого на golang
🍭 Запуск Seccomp в режиме «аудита» (
🍭 Brute force! Да, тот самый «подход в лоб»: разрешаем все и удаляем, пока не найдем нужное состояние. Или наоборот – отбираем все и разрешаем по одному, наблюдая изменения в ошибках
В завершении статьи приводится описание подхода, который использует рассмотренные способы вместе для создания наиболее полного и точного профиля. Подход реализуется на конкретном примере, с применением средств автоматизации, все расписано по шагам.
P.S. Кстати, Paolo один из разработчиков Kubernetes Profile Operator, про который мы писали тут.
P.P.S. Еще один популярный инструмент, который позволяет генерировать Seccomp-профили (и не только) – Docker Slim.
Привет!
Вторая часть статьи от Paolo Gomes, посвященная Seccomp! В ней Paolo рассуждает на тему того, как можно создать whitelist-профили и как решить самую значимую задачу – определить, какие именно syscalls используются приложением.
С точки зрения Paolo есть несколько способов получить желаемый перечень. Каждый из них обладает своими недостатками, но вместе все может сработать.
Например:
🍭 Использование strace для получения syscalls, используемых командой
🍭 Анализ приложения для сбора всех syscalls. Paolo сделал PoC для программного обеспечения, разрабатываемого на golang
🍭 Запуск Seccomp в режиме «аудита» (
"defaultAction": "SCMP_ACT_LOG")🍭 Brute force! Да, тот самый «подход в лоб»: разрешаем все и удаляем, пока не найдем нужное состояние. Или наоборот – отбираем все и разрешаем по одному, наблюдая изменения в ошибках
В завершении статьи приводится описание подхода, который использует рассмотренные способы вместе для создания наиболее полного и точного профиля. Подход реализуется на конкретном примере, с применением средств автоматизации, все расписано по шагам.
P.S. Кстати, Paolo один из разработчиков Kubernetes Profile Operator, про который мы писали тут.
P.P.S. Еще один популярный инструмент, который позволяет генерировать Seccomp-профили (и не только) – Docker Slim.
Medium
Seccomp in Kubernetes — Part 2: Crafting custom seccomp profiles for your applications
The second of a series on how to land great seccomp profiles for your workloads without resorting to magic or sorcery.
👍2
Kubernetes Storage: Basics
Всем привет!!!
Хорошая обзорная статья про то, что такое Storage в Kubernetes, зачем они нужны, какие они бывают и в чем между ними разница.
В статье разбираются следующие моменты:
🍭 hostPath и почему лучше не использовать его, а обратить внимание на NFS
🍭 ConfigMap/Secret as Volume и как с их использованием можно передать данные в Pod
🍭 PersistentVolume (PV) и PersistentVolumeClaim (PVC) – что это, какие VolumeTypes, AccessModes и RetainPolicy бывают
🍭 Dynamic Provisioning, зачем нужен StorageClass и как все это связано с PV и PVC
Примеры, код манифестов, диаграммы для упрощения восприятия, ссылки на полезные материалы – все на месте и хорошо структурировано.
Статья очень базового уровня, и поясняет основные понятия и механизмы проброса persistent storage в кластер Kubenetes.
Из статьи понятно, что хорошо и просто живется лишь тем, кто в облаках ☺️ Для тех, кто "на земле" - рекомендуется посмотреть в сторону NFS. Мы со своей стороны при этом рекомендуем не забывать, что в NFS нет никакого встроенного механизма квотирования ресурсов, и может случиться так, что один контейнер занимает всю шару.
Поэтому соблюдайте осмотрительность, и посмотрите в сторону специализированных CSI от производителей внешних СХД, если вдруг такая задача у вас возникнет.
Всем привет!!!
Хорошая обзорная статья про то, что такое Storage в Kubernetes, зачем они нужны, какие они бывают и в чем между ними разница.
В статье разбираются следующие моменты:
🍭 hostPath и почему лучше не использовать его, а обратить внимание на NFS
🍭 ConfigMap/Secret as Volume и как с их использованием можно передать данные в Pod
🍭 PersistentVolume (PV) и PersistentVolumeClaim (PVC) – что это, какие VolumeTypes, AccessModes и RetainPolicy бывают
🍭 Dynamic Provisioning, зачем нужен StorageClass и как все это связано с PV и PVC
Примеры, код манифестов, диаграммы для упрощения восприятия, ссылки на полезные материалы – все на месте и хорошо структурировано.
Статья очень базового уровня, и поясняет основные понятия и механизмы проброса persistent storage в кластер Kubenetes.
Из статьи понятно, что хорошо и просто живется лишь тем, кто в облаках ☺️ Для тех, кто "на земле" - рекомендуется посмотреть в сторону NFS. Мы со своей стороны при этом рекомендуем не забывать, что в NFS нет никакого встроенного механизма квотирования ресурсов, и может случиться так, что один контейнер занимает всю шару.
Поэтому соблюдайте осмотрительность, и посмотрите в сторону специализированных CSI от производителей внешних СХД, если вдруг такая задача у вас возникнет.
Medium
Storage | Kubernetes
A Deep Dive into Kubernetes Storage
👍4🔥1
Chain-bench: GitLab
Всем привет!
Сегодня будет короткая, но весьма приятная новость. На предыдущей неделе в Chain-bench от Aqua Security была добавлена поддержка GitLab (v 0.1.5). Судя по всему, добавлены не все проверки, но движение в этом направлении есть и это уже хорошо.
Chain-bench – open source решение, которое позволяет анализировать настройки окружения (например, систем управления исходным кодом) на соответствие требованиям ИБ.
В качестве «источника данных» используется CIS Software Supply Chain Security Guide. Про Chain-bench и CIS мы писали тут и тут соответственно.
Всем привет!
Сегодня будет короткая, но весьма приятная новость. На предыдущей неделе в Chain-bench от Aqua Security была добавлена поддержка GitLab (v 0.1.5). Судя по всему, добавлены не все проверки, но движение в этом направлении есть и это уже хорошо.
Chain-bench – open source решение, которое позволяет анализировать настройки окружения (например, систем управления исходным кодом) на соответствие требованиям ИБ.
В качестве «источника данных» используется CIS Software Supply Chain Security Guide. Про Chain-bench и CIS мы писали тут и тут соответственно.
GitHub
Release v0.1.5 · aquasecurity/chain-bench
Changelog
9fc6767 Add Support for Gitlab (#97)
f575a7a fix doc (#98)
9fc6767 Add Support for Gitlab (#97)
f575a7a fix doc (#98)
👍6
Fine grained personal access token в GitHub
Привет!
До недавнего времени personal access tokens (PAT) GitHub’a предоставляли достаточно широкие полномочия. Например, предоставлялся доступ ко всем repo, к которым был доступ у пользователя, генерирующего PAT. Это не всегда было удобно разработчикам и точно не соответствовало практикам ИБ. Например, такой подход не соответствует need-to-know и least privilege принципам.
18 октября GitHub открыл доступ к fine grained personal access tokens, которые находятся в стадии beta. Их задача – сделать предоставление доступа к repo максимально гибким и удобным.
Например:
🍭 Можно давать доступ ко всем repo или только к тем, которые выберет разработчик
🍭 Доступ только к Issues определенного repo
🍭 Возможность просмотра pull requests и многое другое
Всего добавлено более 50 granular permissions, которые можно устанавливать в значения «no access», «read», «read and write». Еще один приятный бонус – возможность просмотра использования токенов и их отзыв владельцами в случае необходимости.
Привет!
До недавнего времени personal access tokens (PAT) GitHub’a предоставляли достаточно широкие полномочия. Например, предоставлялся доступ ко всем repo, к которым был доступ у пользователя, генерирующего PAT. Это не всегда было удобно разработчикам и точно не соответствовало практикам ИБ. Например, такой подход не соответствует need-to-know и least privilege принципам.
18 октября GitHub открыл доступ к fine grained personal access tokens, которые находятся в стадии beta. Их задача – сделать предоставление доступа к repo максимально гибким и удобным.
Например:
🍭 Можно давать доступ ко всем repo или только к тем, которые выберет разработчик
🍭 Доступ только к Issues определенного repo
🍭 Возможность просмотра pull requests и многое другое
Всего добавлено более 50 granular permissions, которые можно устанавливать в значения «no access», «read», «read and write». Еще один приятный бонус – возможность просмотра использования токенов и их отзыв владельцами в случае необходимости.
The GitHub Blog
Introducing fine-grained personal access tokens for GitHub
Fine-grained personal access tokens offer enhanced security to developers and organization owners, to reduce the risk to your data of compromised tokens.
👍5
Подписи и аттестации
Всем привет!
Когда говорят про контроль supply chain зачастую вспоминают про подпись чего-бы-то-ни-было. Все как обычно – есть пара private/public key, используя которые можно гарантировать, что мы получили артефакт именно от его Автора.
Но есть небольшой нюанс. Может случиться так, что Автор подписывает сам артефакт без анализа того, что находится внутри. Например, анализа кода, который помещается в контейнер, анализа open source зависимостей, анализа образа контейнера и т.д.
Как быть в такой ситуации? Ответ отлично разобран в статье "Policy and Attestations", в которой рассматривается термин «Аттестация». Грубо говоря – набор некоторых утверждений, которые характерны для того или иного артефакта, подписанные электронной подписью. Например, те же результаты сканирования образа.
Именно так (анализируя аттестации) Kyverno может проверять когда последний раз образ был просканирован и принять решение – стоит ли его запускать. Об этом use case мы писали тут, там тоже есть немного про аттестацию и то, как она реализуется в Cosign.
Всем привет!
Когда говорят про контроль supply chain зачастую вспоминают про подпись чего-бы-то-ни-было. Все как обычно – есть пара private/public key, используя которые можно гарантировать, что мы получили артефакт именно от его Автора.
Но есть небольшой нюанс. Может случиться так, что Автор подписывает сам артефакт без анализа того, что находится внутри. Например, анализа кода, который помещается в контейнер, анализа open source зависимостей, анализа образа контейнера и т.д.
Как быть в такой ситуации? Ответ отлично разобран в статье "Policy and Attestations", в которой рассматривается термин «Аттестация». Грубо говоря – набор некоторых утверждений, которые характерны для того или иного артефакта, подписанные электронной подписью. Например, те же результаты сканирования образа.
Именно так (анализируя аттестации) Kyverno может проверять когда последний раз образ был просканирован и принять решение – стоит ли его запускать. Об этом use case мы писали тут, там тоже есть немного про аттестацию и то, как она реализуется в Cosign.
Medium
Policy and Attestations
Best Practices for Supply Chain Security
👍3
Проверка конфигурации GitHub
Всем привет!
Еще одно решение, похожее на Chain-bench – Legitify. Проверяет настройку параметров безопасности GitHub.
В отличие от Chain-bench, Legitify не использует CIS Software Supply Chain Security Guide, а руководствуется тем, что написано в OSSF Scorecards и в Policies.
Например, есть проверки того, что:
🍭 Включена защита веток (branch protection)
🍭 Применяется SAST и Fuzzing
🍭 (Не) допустимо использование force push
🍭 У repo большое количество администраторов и другие
Подробнее про проверки, реализованные при помощи Policies, а также про способы приведения в соответствие можно прочитать тут.
Всем привет!
Еще одно решение, похожее на Chain-bench – Legitify. Проверяет настройку параметров безопасности GitHub.
В отличие от Chain-bench, Legitify не использует CIS Software Supply Chain Security Guide, а руководствуется тем, что написано в OSSF Scorecards и в Policies.
Например, есть проверки того, что:
🍭 Включена защита веток (branch protection)
🍭 Применяется SAST и Fuzzing
🍭 (Не) допустимо использование force push
🍭 У repo большое количество администраторов и другие
Подробнее про проверки, реализованные при помощи Policies, а также про способы приведения в соответствие можно прочитать тут.
GitHub
GitHub - Legit-Labs/legitify: Detect and remediate misconfigurations and security risks across all your GitHub and GitLab assets
Detect and remediate misconfigurations and security risks across all your GitHub and GitLab assets - Legit-Labs/legitify
👍5
Ingress в Kubernetes
Всем привет!
Еще одна неплохая статья из темы «основы». Может быть полезна тем, кто только приступил к изучению k8s.
Одной из первых задач, с которой столкнется пользователя кластера – "как организовать доступ к моим ресурсам со стороны «внешних» ресурсов?". Есть несколько вариантов, но сегодня рассмотрим один – Ingress.
В статье рассматриваются такие вопросы как:
🍭 Что такое Ingress и зачем он нужен?
🍭 Как устроен Ingress, как он работает?
🍭 Что такое Nginx Ingress Controller и какими возможностями он обладает?
Минималистично-понятная статья, в которой нет ничего лишнего. А если Вас в большей степени интересует информационная безопасность, то можно ознакомиться с разделом Security и Hardening Guide из официальной документации на решение.
Всем привет!
Еще одна неплохая статья из темы «основы». Может быть полезна тем, кто только приступил к изучению k8s.
Одной из первых задач, с которой столкнется пользователя кластера – "как организовать доступ к моим ресурсам со стороны «внешних» ресурсов?". Есть несколько вариантов, но сегодня рассмотрим один – Ingress.
В статье рассматриваются такие вопросы как:
🍭 Что такое Ingress и зачем он нужен?
🍭 Как устроен Ingress, как он работает?
🍭 Что такое Nginx Ingress Controller и какими возможностями он обладает?
Минималистично-понятная статья, в которой нет ничего лишнего. А если Вас в большей степени интересует информационная безопасность, то можно ознакомиться с разделом Security и Hardening Guide из официальной документации на решение.
www.weave.works
NGINX Ingress Controller 101 - Load Balancing for Kubernetes
Learn how to use nginx ingress controllers: production-grade controllers that run alongside NGINX open source in a Kubernetes environment.
👍1
DevSecOps Playbook
Всем привет!
Еще один взгляд на систематизацию DevSecOps подходов и практик, которые можно реализовывать для повышения защищенности разрабатываемого ПО.
Материал включает в себя рекомендации по блокам:
🍭 Development environment
🍭 Source code management
🍭 CI/CD pipelines and automation
🍭 Deployment
🍭 Organizational techniques
Всего предложено порядка 60 активностей. Для каждой из них, помимо описания, приводится ее приоритет, сложность реализации и ссылки на стандарты для получения дополнительных сведений.
Всем привет!
Еще один взгляд на систематизацию DevSecOps подходов и практик, которые можно реализовывать для повышения защищенности разрабатываемого ПО.
Материал включает в себя рекомендации по блокам:
🍭 Development environment
🍭 Source code management
🍭 CI/CD pipelines and automation
🍭 Deployment
🍭 Organizational techniques
Всего предложено порядка 60 активностей. Для каждой из них, помимо описания, приводится ее приоритет, сложность реализации и ссылки на стандарты для получения дополнительных сведений.
GitHub
GitHub - 6mile/DevSecOps-Playbook: This is a step-by-step guide to implementing a DevSecOps program for any size organization
This is a step-by-step guide to implementing a DevSecOps program for any size organization - 6mile/DevSecOps-Playbook
🔥9❤1👍1
Управление GitOps Repos
Всем привет!
GitOps – подход, который позволяет управлять конфигурацией ИТ-инфраструктуры, используя подходы и практики разработки ПО. Например, есть централизованный repo, в котором хранятся интересующие нас конфигурации и инструмент, который применяет эти конфигурации. У такого подхода много преимуществ – начиная от «прозрачности» и заканчивая минимизацией вероятности возникновения configuration drift.
Но как правильно организовать тот самый repo с конфигурациями? Должен ли это быть 1 repo, в котором содержится все-все-все или это должно быть несколько repo? Например, отдельные для production и development-окружений?
Размышления на эту тему можно найти в статье. Автор рассматривает 4 варианта:
🍭 Один repo для приложения и поддерживающей его ИТ-инфраструктуры
🍭 Отдельный repo для ИТ-инфраструктуры с несколькими «долгоиграющими» ветками (main и development, например)
🍭 Несколько repo – по одному на каждое окружение
Для каждого варианта приведены его плюсы и минусы. Например, наличие (отсутствие) управления доступом на изменения, вероятность «расхождения» конфигураций различных окружений и т.д.
В конце статьи Автор дает ссылки на инструменты Harness (CI, CD, GitOps), в разработке которых участвует. По ссылкам можно больше узнать про решения и их open source версии.
Всем привет!
GitOps – подход, который позволяет управлять конфигурацией ИТ-инфраструктуры, используя подходы и практики разработки ПО. Например, есть централизованный repo, в котором хранятся интересующие нас конфигурации и инструмент, который применяет эти конфигурации. У такого подхода много преимуществ – начиная от «прозрачности» и заканчивая минимизацией вероятности возникновения configuration drift.
Но как правильно организовать тот самый repo с конфигурациями? Должен ли это быть 1 repo, в котором содержится все-все-все или это должно быть несколько repo? Например, отдельные для production и development-окружений?
Размышления на эту тему можно найти в статье. Автор рассматривает 4 варианта:
🍭 Один repo для приложения и поддерживающей его ИТ-инфраструктуры
🍭 Отдельный repo для ИТ-инфраструктуры с несколькими «долгоиграющими» ветками (main и development, например)
🍭 Несколько repo – по одному на каждое окружение
Для каждого варианта приведены его плюсы и минусы. Например, наличие (отсутствие) управления доступом на изменения, вероятность «расхождения» конфигураций различных окружений и т.д.
В конце статьи Автор дает ссылки на инструменты Harness (CI, CD, GitOps), в разработке которых участвует. По ссылкам можно больше узнать про решения и их open source версии.
DEV Community
Managing the ‘Git’ in ‘GitOps’: 4 Ways to Structure Code in Your GitOps Repos
Implementing GitOps practices will take your software delivery pipelines to the next level....
Обход eBPF
Всем привет!
Последнее время все чаще и чаще можно слышать про eBPF, которая привносит много нового и удобного не только для ИТ, но и для ИБ-специалистов.
Появляются средства защиты, которые могут анализировать kernel calls что может быть крайне полезно для идентификации подозрительных событий и инцидентов ИБ. Однако, как и у любой технологии у eBPF есть «ограничения», про которые важно помнить.
В статье Автор на примерах разбирает способы обхода средств защиты, использующих eBPF:
🍭 В качестве подопытного используется Tetragon от Cilium (будет работать и с другими аналогичными решениями)
🍭 Создается «подопытный» Ubuntu-контейнер, в котором запускается
🍭 Автор немного модифицирует
В статье много пояснений, примеров кода и рассуждений о возможных способах обхода. Это вовсе не означает, что eBPF – «плохой» инструмент, скорее наоборот. Главное помнить, что абсолютов не существует и не стоит «слепо» полагаться на автоматизацию.
Всем привет!
Последнее время все чаще и чаще можно слышать про eBPF, которая привносит много нового и удобного не только для ИТ, но и для ИБ-специалистов.
Появляются средства защиты, которые могут анализировать kernel calls что может быть крайне полезно для идентификации подозрительных событий и инцидентов ИБ. Однако, как и у любой технологии у eBPF есть «ограничения», про которые важно помнить.
В статье Автор на примерах разбирает способы обхода средств защиты, использующих eBPF:
🍭 В качестве подопытного используется Tetragon от Cilium (будет работать и с другими аналогичными решениями)
🍭 Создается «подопытный» Ubuntu-контейнер, в котором запускается
cat /etc/host. cat использует write system call, что видно при помощи Tetragon🍭 Автор немного модифицирует
write для того, чтобы Tetragon не смог увидеть произошедшее событиеВ статье много пояснений, примеров кода и рассуждений о возможных способах обхода. Это вовсе не означает, что eBPF – «плохой» инструмент, скорее наоборот. Главное помнить, что абсолютов не существует и не стоит «слепо» полагаться на автоматизацию.
www.form3.tech
Bypassing eBPF-based Security Enforcement Tools
During penetration tests and red team engagements, eBPF-based security observability and runtime enforcement tools can make it difficult to use public offensive security tools and techniques, as they are more often detected and blocked. However, eBPF-based…
👍5
Practical Guide to Secure Software Supply Chain with Sigstore
Всем привет!
По ссылке доступно очень-очень-очень-очень-очень много текста, посвященного защите supply chain с использованием механизма подписи и аттестации.
Материал включает в себя следующие разделы:
🍭 Sigstore: введение
🍭 Cosign: средство подписи и верификации
🍭 Fulcio: certification authority, выступающий в роли «доверенного» посредника
🍭 Rekor: хранение информации об мета-данных артефактов
🍭 Sigstore: как использовать рассмотренные выше материалы
Кстати, рассмотренный инструментарий поддерживают и другие проекты. Например, Trivy может генерировать отчет в формате Cosign Vulnerability Scan, а Kyverno может «читать» подписи и аттестации Cosign (функционал пока что в beta). И это не единственные примеры 😊
Всем привет!
По ссылке доступно очень-очень-очень-очень-очень много текста, посвященного защите supply chain с использованием механизма подписи и аттестации.
Материал включает в себя следующие разделы:
🍭 Sigstore: введение
🍭 Cosign: средство подписи и верификации
🍭 Fulcio: certification authority, выступающий в роли «доверенного» посредника
🍭 Rekor: хранение информации об мета-данных артефактов
🍭 Sigstore: как использовать рассмотренные выше материалы
Кстати, рассмотренный инструментарий поддерживают и другие проекты. Например, Trivy может генерировать отчет в формате Cosign Vulnerability Scan, а Kyverno может «читать» подписи и аттестации Cosign (функционал пока что в beta). И это не единственные примеры 😊
PUPUWEB
Practical Guide to Secure Software Supply Chain with Sigstore - PUPUWEB
Learn how to digitally sign software artifacts to ensure a safer chain of custody that can be traced back to the source. The article is for anyone new to
👍4
Snyk Learn: обновление учебных курсов
Snyk продолжает радовать отличными материалами и обучающими курсами в частности. На сайте Snyk Learn можно найти несколько интерактивных курсов, посвященных DevSecOps:
🍭 Insecure Design
🍭 Directory Traversal
🍭 SQL Injection
🍭 Container does not drop all capabilities
Мы уже писали про этот ресурс в 2021 году. На тот момент курсов было гораздо меньше. Приятно, что ребята не останавливаются и продолжают развивать данное направление.
Snyk продолжает радовать отличными материалами и обучающими курсами в частности. На сайте Snyk Learn можно найти несколько интерактивных курсов, посвященных DevSecOps:
Java, JS, Python, Golang, PHP, C#, Kubernetes.
Например:🍭 Insecure Design
🍭 Directory Traversal
🍭 SQL Injection
🍭 Container does not drop all capabilities
Мы уже писали про этот ресурс в 2021 году. На тот момент курсов было гораздо меньше. Приятно, что ребята не останавливаются и продолжают развивать данное направление.
Snyk Learn
Free Developer Security Education & Snyk Product Training | Snyk Learn
Free security education and Snyk product training designed for developers in .
🔥4
Удаление «старых» образов/контейнеров в Kubernetes
Всем привет!
Не всегда получается поддерживать актуальность используемых образов/контейнеров в кластерах Kubernetes. Альтернативный сценарий – unused images, которые могут храниться на узлах.
Хорошо, что у Kubernetes есть собственный механизм garbage collection, которому посвящена статья. Если просто – то многое зависит от размера образа и времени его последнего использования. Например, большой образ, который использовался неделю назад будет с большей вероятностью удален, чем небольшой и используемый «вчера».
Однако, это можно настроить через манифесты Kubelet:
🍭 Указать необходимый disk threshold
🍭 Задавать определенное количество dead containers (по умолчанию отсутствует)
🍭 Количество минут, через которое контейнер будет считаться «старым» и станет кандидатом на устранение (по умолчанию отсутствует) и не только
Статья 2021 года, но механизмы актуальны. Есть направления по переходу на механизм eviction, который может заменить garbage collection в будущем.
Всем привет!
Не всегда получается поддерживать актуальность используемых образов/контейнеров в кластерах Kubernetes. Альтернативный сценарий – unused images, которые могут храниться на узлах.
Хорошо, что у Kubernetes есть собственный механизм garbage collection, которому посвящена статья. Если просто – то многое зависит от размера образа и времени его последнего использования. Например, большой образ, который использовался неделю назад будет с большей вероятностью удален, чем небольшой и используемый «вчера».
Однако, это можно настроить через манифесты Kubelet:
🍭 Указать необходимый disk threshold
🍭 Задавать определенное количество dead containers (по умолчанию отсутствует)
🍭 Количество минут, через которое контейнер будет считаться «старым» и станет кандидатом на устранение (по умолчанию отсутствует) и не только
Статья 2021 года, но механизмы актуальны. Есть направления по переходу на механизм eviction, который может заменить garbage collection в будущем.
How-To Geek
How to Clean Up Old Containers and Images in Your Kubernetes Cluster
An active Kubernetes cluster can accumulate old containers and images. Ensuring discarded resources are removed when redundant helps to free up resources on your cluster’s nodes. Here’s how to approach garbage collection in Kubernetes.
👍2