Как сделать аутентификацию в приложении в GKE?
В обычном варианте обычно это происходит так — средствами ingress controller добавляется аутентификация через
Недостатки данного метода:
- в случае с
- в случае с
Google позволяет нам забыть про всё это и использовать уже известный нам
Identity-Aware-Proxy (IAP) — инструмент реализующий централизованную авторизацию для приложений в
Принцип работы прост:
-
-
- если проверка прошла, запрос проксируется на
Нюанс №1 — необходимо проверять заголовки от
Если вы используете
В качестве
Также,
Велика вероятность, что вы уже используете
Про второй неочевидный нюанс в следующем посте.
В обычном варианте обычно это происходит так — средствами ingress controller добавляется аутентификация через
Basic Auth/OAuth.Недостатки данного метода:
- в случае с
Basic Auth, где-то надо хранить хеши паролей и уметь их обновлять- в случае с
OAuth, надо полагаться на внешний OAuth provider, либо держать свой (самые популярные Dex, Keycloak, ORY Hydra)Google позволяет нам забыть про всё это и использовать уже известный нам
IAM.Identity-Aware-Proxy (IAP) — инструмент реализующий централизованную авторизацию для приложений в
GCP.Принцип работы прост:
-
Google Sign-In аутентифицирует клиента (живого человека или ServiceAccount)-
IAM проверяет доступ и проводит aвторизацию клиента- если проверка прошла, запрос проксируется на
backend c JWT токеном, подписанным IAP'омНюанс №1 — необходимо проверять заголовки от
IAP.Если вы используете
GKE, то за вас это сделает Ingress Controller, необходимо лишь создать нужные ресурсы в Kubernetes. Если нет, то заголовки придется проверять самому.В качестве
backend IAP поддерживает Compute, GKE, Cloud Run, App Engine, и даже on-premises через Interconnect.Также,
IAP поддерживает Google Workspaces, что позволяет организовать доступ сотрудников к ресурсам компании.Велика вероятность, что вы уже используете
IAM, тогда IAP — еще один удобный сервис, который обеспечивает безопасность ваших приложений.Про второй неочевидный нюанс в следующем посте.
Классная заметка/инструкция "How to protect your ~/.kube/ configuration".
По итогу, с помощью
Поверьте, порой в кластер попасть на много проще через машину ваших сотрудников, чем через уязвимое приложение на базе устаревшего образа. Так что не забываем и о безопасности данных на пользовательских машинах ;)
По итогу, с помощью
encfs - вы сможете шифровать данную директорию, делать ее доступной только на определенное время и только по паролю. Поверьте, порой в кластер попасть на много проще через машину ваших сотрудников, чем через уязвимое приложение на базе устаревшего образа. Так что не забываем и о безопасности данных на пользовательских машинах ;)
Gist
How to protect your ~/.kube/ configuration
How to protect your ~/.kube/ configuration. GitHub Gist: instantly share code, notes, and snippets.
Недавно я стал гостем замечательно подкаста по информационной безопасности под названием "Мимокрокодил". Выпуск называется "Qu3b3c: Немного про K8s и Cloud Native" и там мы поговорили о
Подкаст можно послушать на:
Яндекс.Музыка
Apple.Podcasts
Google Podcast
Anchor
Castbox
Spotify (за пределами РФ)
P.S. Рекомендую послушать и другие выпуски - там в гостях уже побывало много моих хороших друзей и знакомых!
Kubernetes, DevSecOps, Shift Left Security, Observability и многом другом что связано с Cloud Native.Подкаст можно послушать на:
Яндекс.Музыка
Apple.Podcasts
Google Podcast
Anchor
Castbox
Spotify (за пределами РФ)
P.S. Рекомендую послушать и другие выпуски - там в гостях уже побывало много моих хороших друзей и знакомых!
Замечательный документ "Cloud Incident Response Framework" от
Авторы все разбили на четыре фазы:
1)
Отдельно выделю еще
- Mean time to detect (
- Mean time to acknowledge (
- Mean time to recovery (
- Mean time to containment (
И мое любимое: "A lack of visibility in the cloud means that incidents that could have been remediated quickly are not addressed immediately and are at risk of further escalation."
Cloud Security Alliance про реагирование на инциденты в облачных окружениях.Авторы все разбили на четыре фазы:
1)
Preparation
2) Detection and Analysis
3) Containment, Eradication and Recovery
4) Postmortem
Если вы уже живете в облаках есть ли у вас это в ваших процессах?) Отдельно выделю еще
Incident Evaluation Metrics, где описываются, рассматриваемые нами ранее:- Mean time to detect (
MTTD)- Mean time to acknowledge (
MTTA)- Mean time to recovery (
MTTR)- Mean time to containment (
MTTC)И мое любимое: "A lack of visibility in the cloud means that incidents that could have been remediated quickly are not addressed immediately and are at risk of further escalation."
cloudsecurityalliance.org
Cloud Incident Response Framework | CSA
This framework provides cloud customers with a cloud incident response strategy that helps them manage cloud security incidents.
В преддверии моего выступления на Kuber Conf поучаствовал в легендарном подкасте
Список тем из выпуска:
- Город поребриков и контекст
- Безопасность и регуляторы
- Ностальгия и мотивация
- Очный DevOpsConf и Security champions
- SRE, Observability, Root Cause Analysis
- Наш путь и международный ландшафт
- Безопасность и open source
- Важное и полезное
Слушайте нас в 254 подкаста!
Telegram
VK
Twitter
FB
«The Art Of Programming» (выходит с 2008 года). Мы записали небольшой выпуск на злободневную тему: «Безопасные безопасности». Список тем из выпуска:
- Город поребриков и контекст
- Безопасность и регуляторы
- Ностальгия и мотивация
- Очный DevOpsConf и Security champions
- SRE, Observability, Root Cause Analysis
- Наш путь и международный ландшафт
- Безопасность и open source
- Важное и полезное
Слушайте нас в 254 подкаста!
Telegram
VK
FB
Telegram
k8s (in)security
24 июня в Москве offline пройдет конференция Kuber Conf от Yandex.Cloud - как не сложно догадаться про Kubernetes ;)
И мне посчастливилось быть одним из докладчиков на этой конференции. Там я выступлю с докладом "Kubernetes: Observability важная часть Security".…
И мне посчастливилось быть одним из докладчиков на этой конференции. Там я выступлю с докладом "Kubernetes: Observability важная часть Security".…
Почти спустя месяц после релиза "ATT&CK® for Containers" мои руки дошли до него. Теперь это уже официальная часть ATT&CK версии 9.0.
Матрица от
Рассматривать контейнер в отрыве от окружения по мне неправильно - много важных моментов теряется. Мне кажется, это поняли и авторы, так как в части пунктов упоминается "orchestration", а если зайти в каждую из техник, то там часто встречается либо пример, либо метод детектирования связанный с
Но тем не менее можно эту матрицу сочетать с матрицей
Матрица от
Microsoft для Kubernetes мне нравится больше. Почему?Рассматривать контейнер в отрыве от окружения по мне неправильно - много важных моментов теряется. Мне кажется, это поняли и авторы, так как в части пунктов упоминается "orchestration", а если зайти в каждую из техник, то там часто встречается либо пример, либо метод детектирования связанный с
Kubernetes. А еще не очень приятный момент что часть техник они просто пересекли с техниками из Enetrprise матрицы и в итоге читаете описание и примеры, вообще никак не связанные с контейнерами ...Но тем не менее можно эту матрицу сочетать с матрицей
Microsoft.Medium
ATT&CK® for Containers now available!
Written by Jen Burns, Chris Ante, and Matt Bajzek
Достаточно неплохая статья "PCI DSS compliance in Kubernetes-based platforms" для тех, у кого голова об этом болит ;) Базовые пункты и рекомендации покрыты не плохо с примерами
OpenSource проектов. Но назвать это полноценным и лучшим выбором нельзя. Но для тех, кто только начинает - хороший старт.elastisys
PCI DSS compliance in Kubernetes-based platforms - elastisys
Kubernetes alone does not help achieve PCI DSS compliance. We cover the 12 requirements of how fintech businesses can make it more compliant.
Скоро начнётся мой доклад на Kuber Conf https://youtu.be/VLcMAS_lIQw
YouTube
Kuber Conf
Хотите внедрять крутые фичи раньше конкурентов, быстро проверять гипотезы в этом изменчивом мире и не тратить годы на разработку? Тогда смотрите в записи Kuber Conf — первую конференцию Yandex.Cloud о работе с экосистемой Kubernetes®. В одной трансляции собрались…
Знаю, что многие очень негативно или скептически относятся к
Но злоумышленники уже прощупывают эту почву. И даже
Далее уже вредоносное ПО на
Kubernetes c Node на Windows ...Но злоумышленники уже прощупывают эту почву. И даже
container escape делают через технику Thread Impersonation, используя недокументированный вызов Windows под названием NtImpersonateThread, а далее уже NtSetInformationSymbolicLink для самого побега. По сути это продолжение вот этой истории. Ну и тут все как положено с Microsoft)))Далее уже вредоносное ПО на
Node ищет kubectl.exe и config файл по RegExp для продолжения атаки.Unit 42
Siloscape: First Known Malware Targeting Windows Containers to Compromise Cloud Environments
The main purpose of Siloscape is to open a backdoor into poorly configured Kubernetes clusters in order to run malicious containers.
Продолжение статьи про Identity Aware Proxy
Для аутентификации с помощью ServiceAccount, необходимо иметь permission
Нюанс №2
ServiceAccount с permission
Соответственно, обладая ServiceAccount'ом с таким permission, можно имперсонировать другой аккаунт и обойти IAP.
К сожалению ограничить действие permission на определенные ServiceAccount через Conditions не представляется возможным.
Используя этот нюанс можно было решить мою таску на Hack and Learn Initiative про мисконфиги в GCP. В ней также был реализован нюанс из прошлой статьи — кривая проверка хедеров от IAP
Подробный write-up можно почитать тут
Как бы удобны не казались облачные сервисы, нужно вдумчиво читать всю документацию, чтобы по пути не сделать несколько ошибок, в попытке сделать своё приложение безопаснее.
Для аутентификации с помощью ServiceAccount, необходимо иметь permission
iam.serviceAccounts.getOpenIdToken и получить OIDC токен Нюанс №2
ServiceAccount с permission
iam.serviceAccounts.getOpenIdToken может выписывать OIDC токен для любого другого ServiceAccountСоответственно, обладая ServiceAccount'ом с таким permission, можно имперсонировать другой аккаунт и обойти IAP.
К сожалению ограничить действие permission на определенные ServiceAccount через Conditions не представляется возможным.
Используя этот нюанс можно было решить мою таску на Hack and Learn Initiative про мисконфиги в GCP. В ней также был реализован нюанс из прошлой статьи — кривая проверка хедеров от IAP
Подробный write-up можно почитать тут
Как бы удобны не казались облачные сервисы, нужно вдумчиво читать всю документацию, чтобы по пути не сделать несколько ошибок, в попытке сделать своё приложение безопаснее.
Telegram
k8s (in)security
Как сделать аутентификацию в приложении в GKE?
В обычном варианте обычно это происходит так — средствами ingress controller добавляется аутентификация через Basic Auth/OAuth.
Недостатки данного метода:
- в случае с Basic Auth, где-то надо хранить хеши паролей…
В обычном варианте обычно это происходит так — средствами ingress controller добавляется аутентификация через Basic Auth/OAuth.
Недостатки данного метода:
- в случае с Basic Auth, где-то надо хранить хеши паролей…
Сегодняшняя новость будет актуальна пользователям
Буквально несколько дней назад было объявлено о CVE-2021-34824 (или по внутренней нумерации ISTIO-SECURITY-2021-007), которая звучит как: "Istio contains a remotely exploitable vulnerability where credentials specified in the Gateway and DestinationRule credentialName field can be accessed from different namespaces." с
А вообще у
Istio в своих Kubernetes владениях или тем, кто проводит аудиты безопасности и понятное дело время от времени нуждается в уязвимостях во встречаемых, сторонних решениях.Буквально несколько дней назад было объявлено о CVE-2021-34824 (или по внутренней нумерации ISTIO-SECURITY-2021-007), которая звучит как: "Istio contains a remotely exploitable vulnerability where credentials specified in the Gateway and DestinationRule credentialName field can be accessed from different namespaces." с
CVSS Impact Score равным 9.1. Так что патчимся ;)А вообще у
Istio есть хорошая официальная страничка о найденных в нем уязвимостях (как раз та внутренняя нумерация) и там можно отметить, что за 2021 год было уже закрыто 7 уязвимостей и их CVSS не ниже 7.5! Так что обратите внимание на этот момент.Istio
ISTIO-SECURITY-2021-007
Istio contains a remotely exploitable vulnerability where credentials specified in the Gateway and DestinationRule credentialName field can be accessed from different namespaces.
Есть легендарный пост на
Некоторое время назад на канале мы публиковали похожий материал "What happens when ... Kubernetes edition!", где описывается что происходит при создании
- "How It Works — kubectl exec" (Docker shim)
- "How does 'kubectl exec' work?" (CRI-O)
Если вы как и наша команда хотите не просто использовать
GitHub: "What happens when you type google.com into your browser's address box and press enter?" (и подобные), объясняющий что же там за магия творится .Некоторое время назад на канале мы публиковали похожий материал "What happens when ... Kubernetes edition!", где описывается что происходит при создании
Pods, через команду:kubectl run nginx --image=nginx --replicas=3
В продолжении данной темы мы рекомендуем обратить свое внимание на статьи про то, что происходит, когда используется kubectl exec (не малозначимая команда для ИБ):- "How It Works — kubectl exec" (Docker shim)
- "How does 'kubectl exec' work?" (CRI-O)
Если вы как и наша команда хотите не просто использовать
k8s, но и понимать его, понимать как он работает, то это определенно MUST READ!GitHub
GitHub - alex/what-happens-when: An attempt to answer the age old interview question "What happens when you type google.com into…
An attempt to answer the age old interview question "What happens when you type google.com into your browser and press enter?" - alex/what-happens-when
А сегодня, в продолжении прошлого поста, давайте посмотрим на
И тут для начала нужно вспомнить, что некоторые Kubernetes ресурсы имеют так называемые subresource, к которым как раз и относится
Помните о "
kubectl exec или на POST запрос /api/v1/namespaces/{namespace}/pods/{name}/exec кому как удобнее и приятнее - с точки зрения RBAC.И тут для начала нужно вспомнить, что некоторые Kubernetes ресурсы имеют так называемые subresource, к которым как раз и относится
exec, как и те же logs, attach, portforward и т.д. По итогу, чтобы пользователь мог делать exec ему необходимо иметь pods/exec:- apiGroups: [""]Ну или "
resources: ["pods/exec"]
verbs: ["create"]
*" в графе resources ;)Помните о "
subresource" и управляйте правами в соответствии с принципом наименьших привилегий (Principle of least privilege).Telegram
k8s (in)security
Есть легендарный пост на GitHub: "What happens when you type google.com into your browser's address box and press enter?" (и подобные), объясняющий что же там за магия творится .
Некоторое время назад на канале мы публиковали похожий материал "What happens…
Некоторое время назад на канале мы публиковали похожий материал "What happens…
Малоизвестный факт о
Kubernetes RBAC: каждому действию (verb) в RBAC есть четкое сопоставление HTTP команды. Так что даже по HTTP логам можно определить какие действия совершались над тем или иным ресурсом. Или даже можно попытаться по HTTP логу за какой-то промежуток времени сгенерировать Role типа как тут.Сегодня пятничный пост, который в первую очередь нацелен на вашу активность ;)
Поделитесь в комментариях интересными, полезными
Лично для меня таким является проект Kubernetes Janitor (хоть
Поделитесь в комментариях интересными, полезными
operator'ами для Kubernetes, которые как могут связаны с ИБ, так и нет. А может быть просто инструмент завязан на Mutating и/или validating admission webhook. При этом они могут быть очень маленькими, малоизвестными или даже уже не поддерживаемыми, но у них очень классная идея, которая вам очень нравится. В общем то, что так или иначе нельзя найти на OperatorHub.io и не просто найти на GitHub, Bitbucket и т.д.Лично для меня таким является проект Kubernetes Janitor (хоть
Custom Resources он не использует), о котором я писал ранее, и Kubernetes Security Profiles Operator - писал тут. В общем, давайте поделимся малоизвестными operator'ами =)Codeberg.org
kube-janitor
Clean up (delete) Kubernetes resources after a configured TTL (time to live)
В рамках
- ClusterPolicyReport
- PolicyReport
Основную часть которых занимают
Какую они проблемы решают и вообще, для чего это надо?
Сейчас уже существует множество разных инструментов для
Так на работу прототипа можно посмотреть на примере проекта
А еще подробнее можно узнать из документа "Kubernetes Policy Management Whitepaper Proposal" (находится еще в работе).
P.S. Далее мы рассмотрим какое сильное влияние это должно оказать на весь процесс работы с
CNCF сейчас активно работает Policy Working Group. Как можно догадаться из названия она работает над тем, как будет в Kubernetes выглядеть сущность Policy. А именно ресурсы из wgpolicyk8s.io/v1alpha2:- ClusterPolicyReport
- PolicyReport
Основную часть которых занимают
PolicyReportSummary и PolicyReportResult.Какую они проблемы решают и вообще, для чего это надо?
Сейчас уже существует множество разных инструментов для
Kubernetes, которые проводят те или иные анализы, проверки и создают свой отчет. И вот каждый из них последнее делает как хочет. А ClusterPolicyReport и PolicyReport призваны унифицировать это в виде конкретных типов ресурсов и еще на один шаг приблизить работу со всеми инструментами к концепции Policy-as-Code!Так на работу прототипа можно посмотреть на примере проекта
kube-bench (CIS benchmark) в этом репе.А еще подробнее можно узнать из документа "Kubernetes Policy Management Whitepaper Proposal" (находится еще в работе).
P.S. Далее мы рассмотрим какое сильное влияние это должно оказать на весь процесс работы с
Kubernetes ;)GitHub
community/wg-policy at master · kubernetes/community
Kubernetes community content. Contribute to kubernetes/community development by creating an account on GitHub.
В продолжении темы о необходимости регулярного аудита конфигурации
Другими словами, представим что
запрещает любое взаимодействия для этой группы, но данный запрет не распространяется на конкретных пользователей/роли. Данная ошибка конфигурации может повлечь существование
В этом примере политика должна запрещать любое действие
AWS IAM, рассмотрим еще один инструмент - Red-Shadow. Данная утилита позволяет проверить конфигурацию политик IAM на предмет несоответствия привилегий относительно групп и конкретных users/roles, с целью поиска Shadow Admins. Другими словами, представим что
IAM политиками группы строго запрещено взаимодействие, например директива "Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::13371337:group/k8s-admins"запрещает любое взаимодействия для этой группы, но данный запрет не распространяется на конкретных пользователей/роли. Данная ошибка конфигурации может повлечь существование
Shadow Admins, по аналогии с мисконфигами Active Directory, это позволяет атакующему без особого труда повысить привилегии.В этом примере политика должна запрещать любое действие
IAM, выполняемое пользователями, группами или ролями, к которым эта политика привязана, с помощью, например condition policy iam:ResourceTag.Копаясь в заметках встреч Policy Working Group, можно найти упоминание документа от
Еще выжимка оттуда: "Policy Engine & Automation (SOAR): These terms are used to define technologies that handle threat management, incident response, policy enforcement and security policy automation. A Zero Trust Architecture will require dynamic policy enforcement and automation. SOAR will work in concert with analytics and policy engines to develop confidence levels and automate the delivery of policy to enforcement points."
В общем, автоматизация на любые ИБ моменты ;)
Department of Defense (DOD) про "Zero Trust Reference Architecture" с пометкой "has similar concepts for policy" и картинкой из него (в превью данного поста). Поэтому можно судить к чему стремится данная группа при разработке Policy - SOAR (Security Orchestration, Automation and Response)!!!Еще выжимка оттуда: "Policy Engine & Automation (SOAR): These terms are used to define technologies that handle threat management, incident response, policy enforcement and security policy automation. A Zero Trust Architecture will require dynamic policy enforcement and automation. SOAR will work in concert with analytics and policy engines to develop confidence levels and automate the delivery of policy to enforcement points."
В общем, автоматизация на любые ИБ моменты ;)
Давайте рассмотрим проект, которым уже многие компании у себя закрыли ряд моментов с ИБ. Речь пойдет про Starboard. Он автоматически создает/обновляет
- Vulnerability Scanners: Trivy
- Сonfiguration checkers: Polaris или Conftest
- CIS Kubernetes Benchmark: kube-bench
- Kubernetes cluster pentest: kube-hunter
Речь о нем сегодня не случайно - он как раз является ярким представителем, когда инструменты завернуты в
-
security отчеты для того или иного компонента (ReplicaSet, Node и т.д.) при его появлении/изменении. Под капотом у него:- Vulnerability Scanners: Trivy
- Сonfiguration checkers: Polaris или Conftest
- CIS Kubernetes Benchmark: kube-bench
- Kubernetes cluster pentest: kube-hunter
Речь о нем сегодня не случайно - он как раз является ярким представителем, когда инструменты завернуты в
Kubernetes operators (хотя есть и реализация CLI), а результаты работы в виде Custom Resources (на смену которым и должны прийти ClusterPolicyReport и PolicyReport):-
VulnerabilityReport
- ConfigAuditReport
- CISKubeBenchReport
- KubeHunterReport
А далее эти отчеты вы уже можете обрабатывать (сами автоматически считать риски, критичность и создавать тикеты, автоматически реагировать т.д.) и выводить как вашей душе угодно (Grafana и т.д.).Давайте подытожим сегодня мое виденье о правильном и/или будущем подходе к ИБ в
1) Наши любимые инструменты проверок обернуты в
2) Результат анализа записывается в отдельный унифицированный отчет в виде
3) Специальный
Тем самым мы получим быструю, автоматическую реакцию на тот или и ной инцидент или нежелательное изменение. При этом можно сказать, что мы приблизим скорость работы отдела ИБ к скорости выкатки новых фич разработки - их скорости должны соответствовать друг другу, а не тормозить процесс.
Также определенные рутинные задачи по ИБ уйдут в прошлое (автоматизация
Kubernetes, которое я связываю с OODA loop:1) Наши любимые инструменты проверок обернуты в
Kubernetes operator и автоматически запускаются при появлении/изменении того или иного Kubernetes ресурса, за анализ которого они отвечают.2) Результат анализа записывается в отдельный унифицированный отчет в виде
Kubernetes resource.3) Специальный
Kubernetes operator выполняет роль SOAR (Security Orchestration, Automation and Response) и автоматически реагирует на появлении/изменение отчета анализа на шаге 2.Тем самым мы получим быструю, автоматическую реакцию на тот или и ной инцидент или нежелательное изменение. При этом можно сказать, что мы приблизим скорость работы отдела ИБ к скорости выкатки новых фич разработки - их скорости должны соответствовать друг другу, а не тормозить процесс.
Также определенные рутинные задачи по ИБ уйдут в прошлое (автоматизация
playbooks).А в качестве пятничного поста я порекомендую (кому интересно) за выходные посмотреть свежее выступление "ATT&CKing Kubernetes: Technical deep dive into ATT&CK for Containers" с конференции Pass the SALT 2021. По сути, оно состоит из примеров, в основном из
ITW (In The Wild) кейсов, которые смапленые на матрицу ATT&CK для контейнеров. Также стоит предупредить, что выступление не полное и докладчик не расскажет про защитные меры, так как не уложился в тайминг =)YouTube
Pass the SALT 2021 Day 3
Raw live stream from the conference.
Interactions: #pts21 on Libera.chat
Interactions: #pts21 on Libera.chat