DevSecOps гайд: от новичка до эксперта

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
image

DevOps подразумевает автоматизацию процессов сборки, настройки и развертывания ПО. Плюс — помогает наладить работу айтишников с другими подразделениями в компании: сократить time-to-market при запуске новых продуктов, снизить время разрешения инцидентов и упростить выпуск релизов.

Но у положительных качеств есть и обратная сторона — с ускорением цикла разработки возрастает риск увеличения воспроизводимых уязвимостей. Чтобы минимизировать его, компании обращаются к практике DevSecOps.

По основам DevOps-подхода материалов уже много (включая наш бесплатный курс), но о принципах интеграции практик безопасности в непрерывный процесс разработки говорят недостаточно.

Обсудим, какие навыки рекомендуют подтянуть эксперты, чтобы влиться в безопасную разработку приложений — как новичкам, так и тем, кто уже имеет опыт в системном анализе, администрировании и написании кода.


Когда Sec приходит в DevOps


image

DevSecOps и облако имеют тесную связь. Облако дает возможность быстро развертывать приложения и оперативно получать ресурсы. В рамках DevSecOps-подхода можно разрабатывать и использовать инструменты для автоматизации тестирования, анализа уязвимостей и мониторинга безопасности в облачной среде. Методология поможет в обеспечении безопасности при работе с облачными сервисами.

Важным аспектом DevSecOps является то, что в цикл разработки включаются ИБ-специалисты. Их задача — гарантировать, что компоненты и конфигурационные элементы технологического стека пропатчены, грамотно настроены и имеют актуальную документацию.

DevSecOps-инженеров не хватает, они востребованы. На западном рынке, по данным компании Techstrong Group, число открытых вакансий превышает количество компетентных сотрудников в четыре раза.

Специалистов по DevSecOps не обучают в вузах, а самостоятельно погрузиться в тему бывает затруднительно. Профессиональная среда довольно динамична и сурова к новичкам. Требуемый набор знаний и опыта сопоставим с умениями и навыками крепкого миддла.

Установленного списка лучших практик не существует, поскольку в каждой компании свой набор стандартов и стек, от которого необходимо отталкиваться. Однако можно попытаться выделить несколько общих областей знаний.

Операционные системы


DevSecOps-инженер должен разбираться в устройстве ОС, чтобы решать вопросы оптимизации и обходить стороной потенциальные уязвимости. В этом ключе эксперты рекомендуют изучить:

  • сокеты;
  • файловые системы;
  • хранилища данных;
  • виртуализацию.

Позже все это пригодится для взаимодействия с облаком и облачными сервисами — экспертиза в этой области DevSecOps-специалисту также необходима.

Учитывая облачный контекст, в качестве базовой стоит выбрать Linux. Более того, 67% вакансий содержат в списке требований именно эту ОС. Она встречается примерно в два раза чаще, чем Windows. Однако специалисту не нужно проводить сборку ядра и достаточно общего представления о системе.

Как научиться

  • Необходимыми навыками обладает подавляющее большинство системных администраторов. Для тех, кто не знаком с темой, хорошей точкой для старта может стать книга How Linux Works. Она частый гость профильных подборок «Лучшие книги по Linux», и её можно найти в свободном доступе.
  • Пройдите базовые курсы по администрированию ОС Linux. На YouTube есть много энтузиастов, записывающих тематические ролики — например, посвященные терминальным командам.
  • Также можем рекомендовать более продвинутые книги: The Linux Programming Interface и Learning Modern Linux от O’Reilly. В них собрана детальная информация обо всех процессах, происходящих под капотом операционной системы (в том числе, в контексте облака), с примерами программ и практическими упражнениями.

Языки программирования


DevSecOps-инженерам необходимо понимать код, который пишет команда разработки. В требованиях к большей части вакансий на эту должность указан один или сразу несколько языков программирования. Если вы переходите в сферу DevSecOps из системного администрирования, то, очевидно, стоит ознакомиться с наиболее используемым ЯП внутри компании — на котором пишут продукты и сервисы.

Если есть возможность выбрать язык для изучения, то можно остановиться на Python или Go — это хорошие варианты для начинающих. Так, на Go мы пишем корпоративные и клиентские сервисы. Из недавних релизов — сервис сетевой балансировки.

Тем, кто уже знаком с каким-либо ЯП, нужно подтянуть знания в безопасном программировании, изучить соответствующие подходы и концепции. В частности, анализ композиции программного кода (SCA, Software Composition Analysis) — это часть методологии DevSecOps. Она позволяет построить карту зависимостей и получить представление о потенциальных векторах атак. Также стоит присмотреться к статическому тестированию безопасности приложений (SAST, Static application security testing).

Как научиться

  • В онлайн-сообществе freeCodeCamp составили дорожную карту для изучения JavaScript, HTML и CSS, но с майлстоунами и для других ЯП.
  • Начать знакомство с новым языком можно с профильной литературы. Конкретные книги будут зависеть от ЯП. Например, для Python это может быть бесплатная A Byte of Python, а некоторые ресурсы по Go мы приводили в одном из наших прошлых материалов.
  • Если говорить о безопасном программировании, то стоит обратить внимание на блог Secure Code Warrior. Там собраны материалы по ИБ и лучшие практики написания кода.

Облачные технологии


Значительная часть технологий, которые используют DevSecOps-специалисты, связана с облаком. Поэтому важно разбираться хотя бы в базовой облачной терминологии и техниках. После можно переходить к изучению сервисов вашего корпоративного облачного провайдера. Список сильно варьируется — от сетевых утилит до инструментов построения защищенных контуров.

Если говорить о конкретных решениях, стоит уделить внимание Kubernetes. Этот оркестратор — один из ключевых инструментов CI/CD, так как серьезно ускоряет развертку приложений, позволяет создавать сервисы, которые автоматически масштабируются под требуемую нагрузку. Подробнее о Kubernetes и запуске приложений в облако можно узнать на нашем вебинаре.

Из других обязательных технологий — GitHub и Jenkins. Если говорить о сфере Infrastructure as Code, то это — Terraform, с помощью которого можно автоматизировать масштабирование сервисов через запросы API, а в области управления конфигурациями — Ansible, Chef и Puppet.

Как научиться

  • Лучший способ погрузиться в облачные технологии — это практика. Например, можно начать с построения Python-приложения.
  • Когда необходимо масштабировать приложение, можно обратиться за знаниями к таким ресурсам, как Codelabs и Cloud Skills Boost.

Наконец, навыки коммуникации


Для DevSecOps необходимы коммуникативные навыки, которые помогут наладить контакт с коллегами. Скорее всего, на звонках и совещаниях придется делиться своим видением публично с несколькими подразделениями. Еще и общаться придется на такую тонкую тему как информационная безопасность — обсуждать соответствующие риски, ошибки и недочеты.

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

Как научиться

  • О том, как развивать навыки коммуникации, подробно рассказывали на Хабре.
  • К списку выше можно добавить такие источники, как «Убеждай и побеждай. Секрет эффективной аргументации», а также «iПрезентация. Уроки убеждения от лидера Apple Стива Джобса».

TL;DR


Если у вас есть опыт в сфере системного администрирования, то для погружения в DevSecOps достаточно подтянуть ЯП, изучить инструментарий для CI/CD (о важности внедрения инструментов безопасности в конвейер CI/CD мы подробно рассказывали тут).

Разработчикам необходимо обратить внимание на особенности Linux и настройку облачной инфраструктуры. Всем специалистам важно поработать над soft skills. В целом этого вполне достаточно, чтобы претендовать на должность DevSecOps-инженера.

Тем, кто только начинает свой путь в сфере DevSecOps, будет сложнее. Придется с нуля изучать весь необходимый инструментарий. В таком случае имеет смысл освоить одну из «переходных» профессий — сисадмина или условного разработчика на Go (см. статью «из аналитиков в Go-разработчики»).




Источник: https://habr.com/ru/company/cloud_mts/blog/723862/


Интересные статьи

Интересные статьи

Битрикс24 — корпоративное SaaS-решение (Software as a Service, программное обеспечение как услуга), которым пользуются компании разного масштаба и профиля для коммуникации между сотрудниками, хран...
... а также – зачем системному архитектору техническая эрудиция.Всё это и многое другое мы собрали для вас коротким дайджестом в нашей постоянной рубрике #полезногопост!
Настройка любой площадки для CMS — это рутинный процесс, который должен быть доведен до автоматизма в каждой уважающей себя компании. А потому частенько воспринимается, как восход солнца — это происхо...
Решения для больших компаний обычно должны выдерживать высокие нагрузки. Когда в штате много десятков тысяч человек, и значительная доля из них ежедневно пользуются ...
Я начал погружение в мир IT лишь три недели назад. Серьезно, три недели назад я даже не понимал синтаксиса HTML, а знакомство с языками программирования заканчивалось школьной программой по Pasca...