DevOps by REBRAIN
29.1K subscribers
408 photos
9 videos
4 files
872 links
Открытые практикумы по DevOps, Linux, Golang, Networks, Security

Мы на связи:
[email protected]
+7 (499) 116-34-68

https://rebrainme.com/

Зарегистрированы в РКН: https://knd.gov.ru/license?id=674db558d793bc0b0b8845ff&registryType=bloggersPermission
Download Telegram
Forwarded from Gleb
This media is not supported in your browser
VIEW IN TELEGRAM
👍4🔥4
1👎1
🔥 Сломали голову над медленными запросами?
Учитесь оптимизировать Greenplum у тех, кто его создаёт.

Давайте разберём одну из самых частых и болезненных проблем в распределённых базах данных: запросы внезапно начинают выполняться часами при росте данных. Частая причина — неправильная дистрибуция (распределение) таблиц в Greenplum, из-за которой система тратит львиную долю времени не на вычисления, а на пересылку данных между узлами.

Суть проблемы:
Допустим, у вас две таблицы — sales и products. Они распределены по разным ключам или случайно.


Сегмент 1: sales {A, C, E}, products {A, D}
Сегмент 2: sales {B, D, F}, products {B, C}


➡️ При join по product_id системе придётся "гонять" почти все строки между серверами (reshuffle). Это и есть главный тормоз.

Как это выглядит в коде (проблемный вариант):


-- Таблицы созданы без общей стратегии дистрибуции
CREATE TABLE sales (sale_id bigint, product_id int, amount decimal)
DISTRIBUTED RANDOMLY; -- или DISTRIBUTED BY (sale_id)

CREATE TABLE products (product_id int, name text)
DISTRIBUTED BY (product_id);


💡Решение — контроль дистрибуции от создателей технологии:
Эксперты Yandex Cloud покажут, как проектировать схему с самого начала, чтобы соединения работали локально.


-- Правильная дистрибуция по общему ключу соединения
CREATE TABLE sales_opt (sale_id bigint, product_id int, amount decimal)
DISTRIBUTED BY (product_id); -- Теперь product_id совпадает с products!

CREATE TABLE products (product_id int, name text)
DISTRIBUTED BY (product_id);


Результат: Данные с одинаковым product_id лежат на одном сегменте. Join выполняется локально, ускоряясь в десятки раз.

🎯 Где вы научитесь такому подходу? Только на курсе, разработанном и проводимом командой Yandex Cloud.

Это не просто теория. Это официальная программа от Yandex Cloud, где:
🔹 Все практические работы выполняются на реальных инструментах Yandex Cloud — в сервисе Yandex MPP Analytics for PostgreSQL.
🔹Вы учитесь на кейсах и best practices, которые используют разработчики этой облачной платформы.
🔹Формат этой когорты — гибридный для максимального результата:
🔹Гибкий график: Теорию и задачи проходите в удобное время.
🔹Синхронные вебинары с экспертом Yandex Cloud: Онлайн-встречи привязаны к программе, чтобы разбирать сложные моменты и давать обратную связь. Держите ритм, чтобы не отстать!

Вебинары проведёт Никита Целищев — эксперт по Big Data из команды Yandex Cloud, который ежедневно работает с сервисом Yandex MPP Analytics и знает все тонкости оптимизации изнутри.

🚀 Хотите не просто использовать Greenplum, а понимать его архитектуру и выжимать максимум производительности?

Записывайтесь на курс "Greenplum в Yandex MPP Analytics for PostgreSQL" от создателей и главных экспертов по облачной платформе.

👉 Подробнее о курсе и программе: https://rebrainme.com/courses/greenplum
💳 Оплатить по специальной цене: 55000 38 500 руб. (до 22 января включительно)
Please open Telegram to view this post
VIEW IN TELEGRAM
11👎2
немного про greenplum от эксперта курса Никиты Целищева, архитектора Data Platform Yandex Cloud
Forwarded from Nikita Tselishchev
This media is not supported in your browser
VIEW IN TELEGRAM
👍7
Forwarded from Nikita Tselishchev
This media is not supported in your browser
VIEW IN TELEGRAM
👍7
👍3
Привет!🤘

Кратко о граблях, на которые наступают даже профи. Нужно дать скрипту права root. Кажется, что это просто:

# ⛔️ ОШИБКА, НЕ ДЕЛАЙ ТАК!
sudo chown root my_tool.sh
sudo chmod u+s my_tool.sh


Эта команда ставит SUID`-бит, который должен запускать файл с правами владельца (`root`). Но с скриптами (.sh`, .py`) это не работает — ядро Linux игнорирует `SUID для них из соображений безопасности.

Хуже того, это создает ложное чувство защиты и открывает двери для атаки Path Injection.

Как `root`-скрипт отдает тебе систему
Представь, у тебя есть скрипт, который запускается через sudo и содержит вызов системной команды без полного пути:

victim_script.sh

#!/bin/bash
# ...какой-то код...
# Вот уязвимость:
ps aux
# ...


Атакующий делает три простых шага:

1️⃣ Создает свой `ps`:

# Этот "ps" на самом деле запускает шелл
echo '/bin/bash' > /home/attacker/ps
chmod +x /home/attacker/ps


2️⃣ Добавляет свою папку в `PATH`:

export PATH=/home/attacker:$PATH


Теперь его папка в приоритете для поиска команд.

3️⃣ Запускает твой скрипт:

sudo /path/to/victim_script.sh


Скрипт попытается выполнить ps, найдет вредоносный файл атакующего и запустит его с правами root. Игра окончена, система захвачена.

Как делать правильно и безопасно

Всего два железных правила, которые спасут твою инфраструктуру:

1️⃣ Всегда указывай полные пути к исполняемым файлам в своих скриптах: /bin/ps, /usr/bin/systemctl и т.д.

2️⃣ Используй `sudoers` для выдачи прав. Это единственный контролируемый способ.

Создай файл /etc/sudoers.d/developers:

# Дать право запускать ТОЛЬКО один конкретный скрипт без пароля
developer ALL=(root) NOPASSWD: /usr/local/bin/my_awesome_tool.sh


Это безопасно, логируется и полностью под твоим контролем.

---
Знание таких основ — это фундамент. Чтобы видеть все векторы атак, от sudo и SUID до эксплойтов ядра, и уметь им противостоять, нужно мыслить как атакующий.

Именно этому мы учим на нашем практикуме "Повышение привилегий в Linux". Только хардкор, только практика на стендах.

🚀 Старт курса уже 26 января! Успей запрыгнуть, чтобы стать на голову выше в понимании Linux.

🤘Записаться на курс

---

P.S. Мы хотим постить прямые ссылки на самые сочные материалы в сторис, но для этого Телеграм просит "бусты". Если наши посты тебе полезны, поддержи канал своим голосом! Это быстро и бесплатно.

🚀 Бустануть канал Rebrain

Спасибо! 💪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥2218👎1
Привет, инженеры!

Слушайте, мы тут оглянулись на четвертый квартал и сами офигели. Работа проделана колоссальная. Мы не просто пилили контент, мы реально прокачали платформу.

Вы часто спрашиваете: «А что там нового?». Скажу прямо: индустрия летит вперед, и мы вместе с ней. Более 80% контента мы либо обновили с нуля, либо жестко перетряхнули.

Поэтому, чтобы вы ничего не упустили, держите сводку по нашему апдейту. Всё это уже боевое и готово делать из вас крутых спецов.

🔥 Абсолютно новые модули
Смотрите, это не просто теория, а ответы на то, что сейчас болит у бизнеса и девопсов:

🔹Безопасность веб-приложений (OWASP Top 10): Чтобы спать спокойно и не быть тем самым инженером, через которого слили базу.
🔹Прикладной LLM: Хайп хайпом, а понимание, как встроить нейронки в реальный пайплайн — это уже мастхэв.
🔹Kube-prometheus-stack: Весь мониторинг в кубе как на ладони. Настраиваем грамотно.
🔹GitLab CI: Классика, но теперь в самом свежем и правильном виде. Пайплайны, раннеры — всё как надо.
🔹ArgoCD: GitOps победил. Если вы еще не деплоите через Argo, вы либо мазохисты, либо просто еще не видели этот модуль.
🔹EFK (Elasticsearch, Fluentd, Kibana): Логи — это жизнь. Учимся их собирать и читать так, чтобы решать инциденты за минуты.
🔹Teamlead: Софт-скиллы для тех, кто устал быть просто крутым инженером и хочет вести команду за собой.
🔹Starvault: Секреты должны оставаться секретами. Глубокое погружение.

🛠 Глобальные рефакторинги
Мы взяли проверенные временем темы и пересобрали их под современные реалии. Убрали "воду", добавили "мяса":

🔸Ceph: Распределенное хранилище без боли (ну, почти).
🔸 Kafka Admin: Чтобы брокеры летали, а не падали.
🔸RabbitMQ: Очереди для тех, кто понимает толк в асинхронности.
🔸HAProxy: Балансировка на максималках.
🔸Grafana: Красивые дашборды — это половина успеха в инцидент-менеджменте.
🔸Terraform: IaC наше всё. Актуализировали под свежие версии провайдеров.

---

В чем суть?
Мы не заставляем зубрить конфиги. Мы даем понимание *архитектуры*. Как это работает под капотом и зачем это вообще нужно твоему проекту. Теория сразу закрепляется практикой — заходите, ломаете, чините.

Если чувствуешь, что в твоем стеке пробел по этим технологиям — велкам к нашим менеджерам. Они подскажут, с чего лучше начать.

🤝 Чтобы вход был приятнее, сделали скидки (действуют до 27 января включительно):

💰 Одна технология — скидка 3 000 ₽
💰💰 Две технологии — скидка 7 000 ₽
💰💰💰 Три технологии — скидка 15 000 ₽

Не стой на месте. Инженерия — это постоянное движение.

👉 Пиши менеджерам в лс: @rebrain_manager
👍17🔥76👎1💯1
🟡 Анонс открытых практикумов на следующую неделю

1️⃣ Keycloak: часть 3
Регистрация

Время проведения:
27 января 2026, вторник, 19:00 по МСК

Программа практикума:
🟢Интегрируем apiserver к Keycloak
🟢Настраиваем роли и группы в Kubernetes
🟢Связываем kubectl с Keycloak"

Кто ведёт?
Василий Озеров — co-Founder REBRAIN, IT-инженер с 2012 года, провёл 100+ вебинаров по DevOps и инфраструктуре.
---------------------------------------------------------------------------------------

2️⃣ Linux From Scratch: 01
Регистрация

Время проведения:
28 января 2026, среда, 20:00 по МСК

Программа практикума:
🟢Получаем нужные пакеты для создания окружения
🟢Получаем нужные патчи для создания окружения
🟢Настраиваем пользователя для создание окружения

Кто ведёт?
Андрей Буранов — системный администратор в департаменте VK Play, 10+ лет опыта работы с ОС Linux, 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов
---------------------------------------------------------------------------------------

3️⃣ HTTPS в Angie и Nginx
Регистрация

Время проведения:
29 января 2026, четверг, 19:00 по МСК

Программа практикума:
🟢Теория TLS: шифры, версии;
🟢Оптимальная настройка TLS;
🟢Особенности реализации Kernel TLS;
🟢Получение бесплатных сертификаты с помощью различных инструментов;
🟢Создаём самоподписные сертификаты;
🟢Используем модуль ACME от Angie;
🟢Настраиваем аутентификацию по TLS-сертификату (mTLS).

Кто ведёт?
Николай Лавлинский — Технический директор в ООО “Метод Лаб”. Веб-разработчик более 15 лет. Спикер конференций HighLoad++, РИТ++
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6💯2
Привет! 🤙

Мы с вами уже говорили про sudo и скрытые угрозы типа Capabilities. Но сегодня я хочу затронуть слона в посудной лавке — Docker 🐳

Все мы любим Докер. Но часто ради удобства (или лени) мы прокидываем доступ к Docker сокету внутрь контейнеров или даем пользователям группу docker.

⚠️ В чем проблема?
Если у пользователя есть доступ к /var/run/docker.sock или он входит в группу docker, это эквивалентно правам root на хост-системе. Без паролей, без регистрации и смс.

🔫 Сценарий атаки:
Злоумышленник (или кривой скрипт) получает доступ к сокету и запускает привилегированный контейнер, монтируя корень хостовой системы (`/`) внутрь контейнера. Всё, он владеет сервером.

🛡️ Решение: Docker Socket Proxy (Harden Configuration)

Не прокидывайте сырой сокет! Используйте проксирующий контейнер, который фильтрует запросы к Docker API. Это "флоппинет" (firewall) для вашего докера.

Ниже готовый docker-compose.yml для Tecnativa Docker Socket Proxy. Он разрешает только чтение (GET запросы) и запрещает запуск новых контейнеров. Идеально для мониторинга (Portainer, Traefik, Prometheus и др.).

📂 Конфигурация (docker-compose.yml)


version: '3.8'

services:
docker-proxy:
image: tecnativa/docker-socket-proxy
container_name: docker-proxy
privileged: true # Нужно для доступа к реальному сокету
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Монтируем оригинал в RO
environment:
# --- Политика безопасности ---
# Разрешаем только безопасные операции
CONTAINERS: 1 # List containers
IMAGES: 1 # List images
NETWORKS: 1 # List networks
VOLUMES: 1 # List volumes
INFO: 1 # System info

# Запрещаем всё, что может менять состояние
POST: 0 # Запрет на создание (POST)
DELETE: 0 # Запрет на удаление
AUTH: 0 # Запрет auth
SECRETS: 0 # Не палить секреты
# Остальное по умолчанию запрещено образом
ports:
- "127.0.0.1:2375:2375" # Слушаем только на localhost!
restart: unless-stopped
networks:
- proxy-net

# Пример сервиса, которому нужен доступ к докеру (например, мониторинг)
monitoring-agent:
image: alpine:latest
command: ["curl", "https://docker-proxy:2375/containers/json"]
depends_on:
- docker-proxy
networks:
- proxy-net

networks:
proxy-net:
internal: true # Изолированная сеть


🛠️ Как это работает в продакшене:

1️⃣ Изоляция: Сервисы (мониторинг, Traefik и т.д.) больше не получают /var/run/docker.sock.
2️⃣ Доступ: Они общаются с docker-proxy:2375 внутри внутренней сети proxy-net.
3️⃣ Фильтр: Если взломанный сервис попробует сделать POST /containers/create (создать новый контейнер для побега), прокси ответит 403 Forbidden.

Совет: Если у вас Jenkins или GitLab Runner требует сокет для сборки — используйте Docker-in-Docker (dind) или выделенные ноды. Не давайте CI/CD системам прямой доступ к сокету продакшн-хоста. Это самоубийство.

---

Хочешь реально понимать, где в Linux живут уязвимости и как их закрывать, а не просто копировать конфиги с StackOverflow?

Жду тебя на курсе "Повышение привилегий в Linux".
Разберем всё: от SUID и ядра до NFS и токенов.

🗓 Старт: 26 января
👉 Записывайся тут, Стоимость всего 22 000 рублей ⛔️сегодня последний день скидки на модуль⛔️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍74