Что и зачем почитать DevSecOps-у: личный опыт

от автора

Знания — сила! А актуальные и понятно преподнесенные знания — и вовсе на вес золота! Я решил рассказать про книги, которые показались мне, как руководителю отдела поддержки инфраструктуры сервисов (Head of Security Services Infrastructure) в «Лаборатории Касперского», полезными. Перед вами — «опорная» литература DevSecOps. Я разберу основные темы, связанные с работой девопсов и девсекопсов – и пройдусь по релевантным изданиям для этих специалистов. Расскажу, как конкретно эта литература повлияла на мою карьеру, а значит — может повлиять и на вашу 🙂

Дисклеймер: Если вас, как специалистов, сформировали какие-то другие книги по той же тематике — обязательно пишите в комментариях!

Администрирование UNIX- и LINUX-систем

Книги:

  • UNIX and Linux System Administration Handbook. Авторы: Evi Nemeth, Garth Snyder, Trent Hein.
  • Внутреннее устройство Linux. Автор: Дмитрий Кетов.

Почему нужно это прочитать?

UNIX и LINUX — основа практики любого девопса, так как именно эти системы лежат «под коркой» практически любой архитектуры проекта. Например, все контейнеры и k8s обязательно крутятся на каких-то ОС, и чаще всего это —*nix. Тебе надо четко понимать, как работают эти системы, как настраивать безопасность OC Linux и создавать на ее базе нужные сервисы. DevOps это, конечно, про автоматизацию и высокоуровневую абстракцию, но руками иногда тоже надо поработать 🙂

Личный опыт

  • Настройка инструментов PV, VG, LVM, LUKS и расширенное использование команд (df, dh, ls, fdisk, lsblk и тому подобных). Будучи SIEM-инженером у известного MSSP-провайдера, мне часто приходилось подключать клиентам новые диски и удалять старые. Автоматизировать такой процесс было опасно, так как на подключенных LVM хранилась критичная информация с событиями информационной безопасности.
  • Работа с регулярными командами (grep, find и другими). Где бы я ни трудился, для меня всегда были полезны знания по этим командам. Быстрый поиск файлов и строк внутри файлов избавляет от часов пролистывания логов.
  • Понимание текстовых редакторов (vim, nano, cat, top, less и других). Со временем осознаешь, что, обслуживая большое количество серверов, проще научиться использовать стандартные редакторы.
  • Сетевые инструменты (ip, netplan, iptables, ufw, nftables, wg, tcpdump, nc). Очень много в практике набил шишек, пока не осознал, что большинство проблем связано именно с сетью и самые частые из них: отсутствие сетевой связности, асинхронная маршрутизация или отправка пакетов через проксю (или без нее). Поэтому теперь всегда перед тем, как лезть на уровень приложения, удостоверяюсь в отсутствии сетевых проблем.
  • Работа с контейнерами (cgroups и namespaces). Как только начинаешь работать с контейнерами, эти понятия тут же всплывают отовсюду. И без контейнеров тоже были ситуации, где с помощью cgroups ограничивали ресурсы серверам. Произошло много OOM-киллов и зависаний серверов, пока я не научился пользоваться этими средствами.
  • Нюансы протокола SSH (SSH-server и SSH-client). Если вы думаете, что по этому протоколу можно подключаться на удаленные *nix-хосты и только, — вы ошибаетесь. Почитав эти книги и суперпопулярную статью на Хабре «Магия SSH» (500+ тысяч просмотров!), вы поймете, что это полноценная палочка-выручалочка, которая будет помогать вам в траблшутинге разного рода проблем, научит прокидыванию портов, настройке бастионов, установке прокси и много чему еще.

Я понимаю, что большинство описанных выше кейсов и примеров не состыковываются с методологией DevOps, так как это делалось руками на хостах, а не в пайплайнах и конфигурациях в git. Но откуда вы будете знать, что закидывать в git, какие ansible-роли использовать/писать, что у всех новомодных инструментов находится «под капотом» и как искать источник проблем при возникновении непредвиденных ситуаций?!

Ключевые тезисы книг

  1. «Обзор системного администрирования»: описание ключевых обязанностей системного администратора, включая управление пользователями, файловыми системами и правами доступа.
  2. «Управление процессами и памятью»: книга подробно рассматривает способы управления процессами, планирование задач и мониторинг использования ресурсов.
  3. «Безопасность»: значительная часть уделена вопросам безопасности систем, включая сетевую безопасность, настройку firewall и защиту от атак.
  4. «Сетевое администрирование»: в книге также освещаются темы, связанные с настройкой сетевых интерфейсов, маршрутизацией, DNS и другими важными аспектами управления сетями.
  5. «Автоматизация и скрипты»: использование Bash и других скриптовых языков для автоматизации задач системного администрирования.

Методология DevOps

Книга:
The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win. Авторы: Gene Kim, Kevin Behr, George Spafford.

Почему нужно это прочитать?

Это база, буквально библия DevOps. В ней художественным языком объясняют, что такое DevOps, для чего эта методология придумана и как она помогает компаниям развиваться и приносить пользу. Очень простые и понятные сравнения DevOps со смежными сферами, так еще и объясняется, для чего таки нужна методология Agile.

Личный опыт

  • Бизнес-подход к собственной (и не только!) работе. На какую бы должность я ни переходил, я начинал изучать не только обязанности своей позиции и отдела в целом, но и то, как деятельность этого отдела влияет на управление/департамент. Теперь я стал больше анализировать вертикальные и горизонтальные бизнес-процессы. Тогда приходит осознание, как ты и твой отдел можете помочь компании ускорить какие-либо процессы, заработать больше денег.
  • Приоритизация задач. Быстро стало понятно, что надо дробить конкретные задачи и затраченное на них время, исходя из самого типа работы: когда я брал их необдуманно — быстро зарывался в технических долгах.
  • Познание того самого Agile. Kanban и Scrum очень помогают в повседневной работе и даже в жизни. С ними намного легче ставить конкретные цели, отчитываться стейкхолдерам и руководству.

Ключевые тезисы книги

Именно из этой книги я узнал про концепцию «три пути DevOps», которая описывает главные принципы и подходы для успешного внедрения DevOps в организации.

У девопса три пути:

  • Первый: системное мышление. Важность понимания всей системы и устранения слабых мест.
  • Второй: обратная связь. Постоянное улучшение через обратную связь на всех этапах разработки и эксплуатации.
  • Третий: постоянное обучение и эксперименты. Культура, в которой поощряются инновации и принятие ошибок как возможности для роста.

Кроме этого — в книге The Phoenix Project авторы выделяют «четыре типа работы», которые помогают лучше организовать и управлять задачами в IT и DevOps. Понимание этих типов важно для повышения эффективности команды и успешного выполнения проектов.

Четыре типа работы

  1. «Бизнес-проекты». Это работа, направленная на создание ценности для бизнеса. Такие проекты включают разработку новых продуктов или функций, обновления и улучшения, которые помогают организации расти или предоставлять новые услуги клиентам. Пример: создание нового веб-сайта, мобильного приложения или новой функциональности в существующей системе.
  2. «Внутренние IT-проекты (IT-инициативы)». Работа, связанная с улучшением или поддержкой внутренней IT-инфраструктуры компании. Эти проекты не всегда напрямую связаны с добавлением ценности для клиента, но важны для обеспечения стабильности и производительности бизнеса. Пример: обновление серверов, миграция на новые технологии, улучшение безопасности системы.
  3. «Неожиданная работа (пожары)». Это непредсказуемые задачи, которые возникают в результате инцидентов, проблем или сбоев. Часто такие работы мешают плановым задачам и могут снизить производительность всей команды. В DevOps крайне важно минимизировать неожиданную работу через автоматизацию, мониторинг и улучшение процессов. Пример: устранение аварий на сервере, решение проблем безопасности, срочный откат изменений.
  4. «Устранение технического долга». Технический долг — это результат быстрых решений или компромиссов, принятых во время разработки, которые со временем становятся проблемами для поддержания системы. Устранение технического долга — это работа по улучшению кода, архитектуры и инфраструктуры для увеличения стабильности и снижения затрат на поддержку. Пример: рефакторинг устаревшего кода, модернизация системы, устранение зависимостей от старых технологий.

Эффективное управление всеми четырьмя типами работы критически важно для успеха DevOps-практик. Необходимо балансировать между бизнес-проектами и IT-инициативами, минимизировать количество пожаров и планировать время для устранения технического долга.

Работа с сетями

Книги:

  • Компьютерные сети. Принципы, технологии, протоколы. 5-е издание. Авторы: Олифер В. Г., Олифер Н. А.
  • Компьютерные сети. 6-е издание. Авторы: Таненбаум Э. С., Фимстер Н., Уэзеролл Д.

Почему нужно это прочитать?

Обе книги — буквально энциклопедии по сетям, а без их базового понимания в OPS/DevOps/DevSecOps делать нечего. Стек TCP/IP никто не отменил и смузи-технологиями не заменил (а жаль). Грамотно настроив сеть, можно избежать многих проблем с «залетными» злоумышленниками и не только с ними. Они охватывают широкий спектр вопросов, связанных с построением, функционированием компьютерных сетей и управлением ими.

Книги Олиферов и Таненбаума — это незаменимое руководство для тех, кто изучает сетевые технологии, и для специалистов, которые занимаются администрированием и проектированием компьютерных сетей. Даже работая в облаках, не имея базовых знаний по сетям, лучше туда не лезть.

Личный опыт

Как я уже говорил, большинство проблем, с которыми я сталкивался, были сетевыми. Понять, почему нет сетевой связности, настроить правила файрвола, туннели, NAT, DNS, маршруты — это то, с чем работаешь каждый день. При этом ты можешь даже не работать с «железом», но сети все равно будут всплывать ежедневно в работе. Уровень CCNA должен быть в подкорке у любого начинающего DevOps.

Я ловил «сетевые петли», направлял маршрут не в ту сторону, доказывал службе поддержки, что они не правы, когда просто закрывал связности на файрволе, пытался отправлять локальный трафик через прокси и наталкивался на много других сетевых проблем, но без знаний, полученных из этой книги, я бы вряд ли смог найти решение: я бы просто не смог определить источник возникновения препятствия.

Ключевые тезисы книг

  • «Основы компьютерных сетей». В книгах подробно рассматриваются концепции компьютерных сетей, включая основные принципы их работы; разъясняются различия между локальными, глобальными сетями, а также архитектура сетевых решений.
  • «Сетевые протоколы». Особое внимание уделено протоколам, которые лежат в основе передачи данных в сетях: TCP/IP, UDP, ICMP и дугим. Подробно описываются протоколы прикладного уровня, такие как HTTP, FTP, SMTP и DNS.
  • «Технологии передачи данных». В книге рассматриваются основные технологии передачи данных, такие как Ethernet, Wi-Fi, оптоволоконные каналы. Описаны физические и канальные уровни сетевой модели OSI.
  • «Маршрутизация и коммутация». Объясняются процессы маршрутизации в компьютерных сетях, принципы работы маршрутизаторов и коммутаторов. Описаны современные протоколы маршрутизации (OSPF, BGP, RIP) и их применение.
  • «Безопасность сетей». В книге также уделяется внимание вопросам безопасности сетей, включая различные методы защиты данных, шифрование, аутентификацию, управление доступом и противодействие сетевым атакам.
  • «Практические аспекты». Книги содержат множество практических примеров, что помогает читателям лучше понять применение теоретических знаний. Разбираются примеры построения сетей, настройки оборудования и решения различных проблем в сетях.

Общая архитектура и основные практики

Книги издательства Manning Publications:

  • Безопасный DevOps. Эффективная эксплуатация систем. Автор: Джульен Вехен.
  • Operations Anti-Patterns, DevOps Solutions. Автор: Jeffery D. Smith

Книги издательства O’Reilly:

  • The DevOps Handbook. Авторы: Gene Kim, Jez Humble, Patrick Debois, John Willis.
  • Learning the bash Shell. Автор: Cameron Newham.
  • Bash и кибербезопасность: атака, защита и анализ из командной строки Linux. Авторы: Тронкон П., Олбинг К.
  • Learning Python. Автор: Mark Lutz.
  • Python и DevOps: Ключ к автоматизации Linux. Авторы: Гифт Н., Берман К., Деза А., Георгиу Г.
  • Использование Docker. Автор: Э.Моуэт.
  • Terraform: инфраструктура на уровне кода. Автор: Е. Брикман
  • Kubernetes для DevOps: развертывание, запуск и масштабирование в облаке. Авторы: Джон Арундел, Джастин Домингус.
  • DevSecOps in Kubernetes. Авторы Wei Lien Dang, Ajmal Kohgadai.
  • Site Reliability Workbook: практическое применение. Авторы: Бейер Б., Рензин Д., Кавахара К., Мерфи Н., Торн С.

Почему это нужно прочитать?

Об этих книгах издательств Manning и O’Reilly на самом деле не говорил только ленивый: особенно они известны среди специалистов по DevOps, программированию, администрированию и облачным технологиям. Что касается непосредственно направлений DevOps/DevSecOps/SRE — в первую очередь радует структурированная подача информации по общей архитектуре, прикладным инструментам и «бест практисам» данных методологий.

Проще говоря, для собственного роста как эксперта эти книги — более чем полезны!

Личный опыт

Благодаря книге про Docker, я познакомился с контейнерами и начал их активно применять на практике, а именно использовать их для агентов сбора логов, написания своих контейнеров, а позже и сервисов.

Изучив Bash, я написал скрипт, который автоматически настраивает сбор событий с Linux-хостов и отправку их в SIEM-систему.

Книги по k8s помогли освоить этот оркестратор, который используется у нас во многих проектах, как выездных/разовых, так и на постоянной основе. На одном ноутбуке или в облачных кластерах мы можем за «одно нажатие кнопки» разворачивать огромное количество сервисов и управлять ими.

Книги по SRE пригодились, когда я погружался в мониторинг и логирование. Будучи SRE-инженером в SOC, я вместе с командой написал автоматизацию выявления источников, с которых пропадал или падал поток событий информационной безопасности, и настроил большинство алертов и группировок. Было подключено огромное количество метрик, которые помогли нам выйти на проактивный мониторинг. Кроме того, книги помогли в построении архитектур отказоустойчивых систем.

Литература по DevSecOps очень помогает настраивать сервисы с уменьшением векторов атаки. Нам приходилось пролистывать очень много документаций и статей, чтобы получить необходимый уровень знаний в направлении InfraSec.
Стоит отметить: я буду «обманщиком», если скажу, что мы везде беспрекословно используем принципы SRE и DevSecOps. Тут всегда приходится выбирать между безопасностью, отказоустойчивостью и экономической целесообразностью, но как правильно выбрать этот баланс — помогают знания, полученные именно в этих книгах.

Ключевые тезисы книг

Здесь — коротко о наиболее полезных книгах обеих серий.

  1. «Безопасный DevOps. Эффективная эксплуатация систем». Эта книга сосредоточена на внедрении безопасных методов DevOps. В ней рассматриваются вопросы, связанные с автоматизацией и безопасностью процессов разработки и эксплуатации. Книга обучает, как интегрировать безопасность на всех этапах цикла DevOps, обеспечивая устойчивость систем к кибератакам.
  2. «Operations Anti-Patterns, DevOps Solutions». Одна из ключевых книг для DevOps-инженеров, в которой обсуждаются распространенные ошибки (антипаттерны) в операционных процессах и предлагаются решения с использованием DevOps-подходов. Книга помогает определить, какие процессы требуют изменений, и дает практические рекомендации по устранению проблем.

Книги издательства O’Reilly:

  1. «The DevOps Handbook. Полное руководство по внедрению DevOps в организации». Книга охватывает все аспекты — от разработки до эксплуатации, автоматизации и улучшения взаимодействия между командами. Также она фокусируется на внедрении лучших практик для улучшения качества и скорости доставки программных продуктов.
  2. «Bash и кибербезопасность…» и «Learning the bash Shell». Издания посвящены скриптовому языку Bash, который широко используется для автоматизации задач в Unix-подобных системах. Книги полезна для администраторов и разработчиков, которым необходимо управлять серверной инфраструктурой и автоматизировать процессы.
  3. «Python и DevOps: Ключ к автоматизации Linux» и «Learning Python». Книги по Python охватывает как основы языка, так и продвинутые темы, включая создание веб-приложений, работу с данными и автоматизацию. Python остается важным инструментом в DevOps для написания скриптов и автоматизации процессов.
  4. «Использование Docker». В книге описывается, как использовать Docker для контейнеризации приложений, управления ими и развертывания. Docker — одна из ключевых технологий в мире DevOps: она позволяет стандартизировать окружение для разработки и эксплуатации.
  5. «Terraform: инфраструктура на уровне кода». Руководство по Terraform — популярному инструменту для управления инфраструктурой как кодом. Книга учит управлять облачными и локальными ресурсами программно, а это упрощает процессы развертывания и управления инфраструктурой.
  6. «Kubernetes для DevOps: развертывание, запуск и масштабирование в облаке». Книга сосредоточена на Kubernetes — платформе для управления контейнерами. Она обучает, как разворачивать приложения в Kubernetes, управлять их масштабированием и эксплуатацией в облачных средах. Книга полезна DevOps-специалистам, работающим с облачными технологиями.
  7. «DevSecOps in Kubernetes». Это руководство по интеграции безопасности (SecOps) в процесс разработки и эксплуатации Kubernetes. В книге обсуждаются инструменты и методы обеспечения безопасности на всех уровнях жизненного цикла контейнерных приложений.
  8. «Site Reliability Workbook: практическое применение». Книга о практике Site Reliability Engineering (SRE), которая помогает обеспечить стабильность и надежность сложных систем. В ней рассматриваются подходы Google к SRE, включающие мониторинг, аварийное восстановление и управление ресурсами для минимизации простоев и улучшения производительности.

Общие темы и «плюшки» этих книг:

  • Практическая направленность: каждая из книг представляет практические примеры и кейсы, которые можно применять в реальной жизни.
  • Сфокусированность на автоматизации: Manning и O’Reilly активно продвигают автоматизацию всех аспектов работы в DevOps и администрировании.
  • Облака и контейнеры: множество книг рассматривают использование таких облачных платформ и контейнерных технологий, как Docker и Kubernetes, которые стали стандартом для современных DevOps-практик.
  • Безопасность: книги освещают вопросы безопасности (DevSecOps), а это, простите за банальность, — ключевой аспект в разработке и эксплуатации.
  • Эти книги подходят как новичкам, так и опытным инженерам, стремящимся углубить знания по DevOps, облачным технологиям, программированию и безопасности.

На книги надейся — но и в документациях не плошай!

Также не стоит забывать про основную документацию многих инструментов, которые используются в работе DevOps: Kubernetes, продукты Hashicorp, облачные документации, prometheus, ansible и т. п. Часто бывает, что одной документации достаточно, чтобы «прозреть». Кроме этого, во многих документациях есть разделы Security и Best practice — они позволят настроить сервисы «как надо» изначально, без набивания излишних шишек.

Ну а если вы уже проглотили всю профессиональную литературу (или уже близки к этому), самое время присоединиться к команде «Лаборатории Касперского» — будем вместе расширять наш литературный бэкграунд 🙂

Что еще почитать

Вообще мы, в «Лаборатории Касперского» поняли, что рассказ о профессиональной литературе, релевантной для разных IT-сфер и направлений— это полезно (причем не только для читателей Хабра, но и для коллег). Поэтому мы и дальше планируем публиковать обзоры книг, которые наиболее сильно повлияли на карьеру наших специалистов. Пока в этой серии у нас выходил один материал:

«Я стал тимлидом и боюсь». Что почитать и зачем


ссылка на оригинал статьи https://habr.com/ru/articles/845458/