Что и зачем почитать 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-роли использовать/писать, что у всех новомодных инструментов находится «под капотом» и как искать источник проблем при возникновении непредвиденных ситуаций?!
- «Обзор системного администрирования»: описание ключевых обязанностей системного администратора, включая управление пользователями, файловыми системами и правами доступа.
- «Управление процессами и памятью»: книга подробно рассматривает способы управления процессами, планирование задач и мониторинг использования ресурсов.
- «Безопасность»: значительная часть уделена вопросам безопасности систем, включая сетевую безопасность, настройку firewall и защиту от атак.
- «Сетевое администрирование»: в книге также освещаются темы, связанные с настройкой сетевых интерфейсов, маршрутизацией, DNS и другими важными аспектами управления сетями.
- «Автоматизация и скрипты»: использование 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 очень помогают в повседневной работе и даже в жизни. С ними намного легче ставить конкретные цели, отчитываться стейкхолдерам и руководству.
У девопса три пути:
- Первый: системное мышление. Важность понимания всей системы и устранения слабых мест.
- Второй: обратная связь. Постоянное улучшение через обратную связь на всех этапах разработки и эксплуатации.
- Третий: постоянное обучение и эксперименты. Культура, в которой поощряются инновации и принятие ошибок как возможности для роста.
Кроме этого — в книге The Phoenix Project авторы выделяют «четыре типа работы», которые помогают лучше организовать и управлять задачами в IT и DevOps. Понимание этих типов важно для повышения эффективности команды и успешного выполнения проектов.
Четыре типа работы
- «Бизнес-проекты». Это работа, направленная на создание ценности для бизнеса. Такие проекты включают разработку новых продуктов или функций, обновления и улучшения, которые помогают организации расти или предоставлять новые услуги клиентам. Пример: создание нового веб-сайта, мобильного приложения или новой функциональности в существующей системе.
- «Внутренние IT-проекты (IT-инициативы)». Работа, связанная с улучшением или поддержкой внутренней IT-инфраструктуры компании. Эти проекты не всегда напрямую связаны с добавлением ценности для клиента, но важны для обеспечения стабильности и производительности бизнеса. Пример: обновление серверов, миграция на новые технологии, улучшение безопасности системы.
- «Неожиданная работа (пожары)». Это непредсказуемые задачи, которые возникают в результате инцидентов, проблем или сбоев. Часто такие работы мешают плановым задачам и могут снизить производительность всей команды. В DevOps крайне важно минимизировать неожиданную работу через автоматизацию, мониторинг и улучшение процессов. Пример: устранение аварий на сервере, решение проблем безопасности, срочный откат изменений.
- «Устранение технического долга». Технический долг — это результат быстрых решений или компромиссов, принятых во время разработки, которые со временем становятся проблемами для поддержания системы. Устранение технического долга — это работа по улучшению кода, архитектуры и инфраструктуры для увеличения стабильности и снижения затрат на поддержку. Пример: рефакторинг устаревшего кода, модернизация системы, устранение зависимостей от старых технологий.
Эффективное управление всеми четырьмя типами работы критически важно для успеха 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. Тут всегда приходится выбирать между безопасностью, отказоустойчивостью и экономической целесообразностью, но как правильно выбрать этот баланс — помогают знания, полученные именно в этих книгах.
- «Безопасный DevOps. Эффективная эксплуатация систем». Эта книга сосредоточена на внедрении безопасных методов DevOps. В ней рассматриваются вопросы, связанные с автоматизацией и безопасностью процессов разработки и эксплуатации. Книга обучает, как интегрировать безопасность на всех этапах цикла DevOps, обеспечивая устойчивость систем к кибератакам.
- «Operations Anti-Patterns, DevOps Solutions». Одна из ключевых книг для DevOps-инженеров, в которой обсуждаются распространенные ошибки (антипаттерны) в операционных процессах и предлагаются решения с использованием DevOps-подходов. Книга помогает определить, какие процессы требуют изменений, и дает практические рекомендации по устранению проблем.
Книги издательства O«Reilly:
- «The DevOps Handbook. Полное руководство по внедрению DevOps в организации». Книга охватывает все аспекты — от разработки до эксплуатации, автоматизации и улучшения взаимодействия между командами. Также она фокусируется на внедрении лучших практик для улучшения качества и скорости доставки программных продуктов.
- «Bash и кибербезопасность…» и «Learning the bash Shell». Издания посвящены скриптовому языку Bash, который широко используется для автоматизации задач в Unix-подобных системах. Книги полезна для администраторов и разработчиков, которым необходимо управлять серверной инфраструктурой и автоматизировать процессы.
- «Python и DevOps: Ключ к автоматизации Linux» и «Learning Python». Книги по Python охватывает как основы языка, так и продвинутые темы, включая создание веб-приложений, работу с данными и автоматизацию. Python остается важным инструментом в DevOps для написания скриптов и автоматизации процессов.
- «Использование Docker». В книге описывается, как использовать Docker для контейнеризации приложений, управления ими и развертывания. Docker — одна из ключевых технологий в мире DevOps: она позволяет стандартизировать окружение для разработки и эксплуатации.
- «Terraform: инфраструктура на уровне кода». Руководство по Terraform — популярному инструменту для управления инфраструктурой как кодом. Книга учит управлять облачными и локальными ресурсами программно, а это упрощает процессы развертывания и управления инфраструктурой.
- «Kubernetes для DevOps: развертывание, запуск и масштабирование в облаке». Книга сосредоточена на Kubernetes — платформе для управления контейнерами. Она обучает, как разворачивать приложения в Kubernetes, управлять их масштабированием и эксплуатацией в облачных средах. Книга полезна DevOps-специалистам, работающим с облачными технологиями.
- «DevSecOps in Kubernetes». Это руководство по интеграции безопасности (SecOps) в процесс разработки и эксплуатации Kubernetes. В книге обсуждаются инструменты и методы обеспечения безопасности на всех уровнях жизненного цикла контейнерных приложений.
- «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-сфер и направлений— это полезно (причем не только для читателей Хабра, но и для коллег). Поэтому мы и дальше планируем публиковать обзоры книг, которые наиболее сильно повлияли на карьеру наших специалистов. Пока в этой серии у нас выходил один материал:
«Я стал тимлидом и боюсь». Что почитать и зачем