По каждому из направлений в ИТ есть свои так называемые «приколы» и особенности в части поиска и обучения сотрудников, взаимодействия с софтом, заказчиками и так далее. В моей области, то есть в области информационной безопасности, все еще обсуждают такой вопрос: «Должен ли безопасник расти из программиста?». Имея 25+ лет в области ИТ и ИБ ответственно заявляю — должен. Для меня это не вопрос, но многие со мной не согласятся. Сегодня раскрою свою позицию и объясню, почему безопасникам жизненно необходимо быть программистами.

Небольшое уточнение — для удобства я называю программистами всех, кто пишет код, манифесты, какие‑нибудь конфиги и так далее.

Какие типы безопасников сейчас есть

На рынке существует несколько видов безопасников, которые специализируются в различных областях информационной безопасности. Я выделяю два основных типа:

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

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

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

ЦОД и база

Разберем тему на базовом примере с ЦОД. ИТ — это достаточно сложная инфраструктура, которая начинается с дата‑центров и телекоммуникационных каналов, объединяющих эти дата‑центры с каналами связи, маршрутизаторами, коммутаторами. Они создают инфраструктуру для серверов и облаков. Над этим всем стоят люди, занимающиеся разработкой, поддержкой и работой с оборудованием и софтом. Над этими людьми, собственно, есть еще одна надстройка — безопасники.

Работа безопасника может начинаться с банального пропуска сотрудников, работников или клиентов в ЦОДы. Все оборудование, железо, которое там размещается, тоже необходимо защищать. И тут, пожалуй, стоит смотреть на ИБ в двух направлениях: разработка и инфраструктура.

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

Соответственно всё, что касается инфраструктуры, активно мониторится. Можно написать большое количество обвязки в системе мониторинга, которая будет собирать температуру с определенных датчиков, напряжение и частоту с источников бесперебойного питания и все это отображать в красивых графиках. По определенным триггерам в этих метриках будут срабатывать соответствующие оповещения. Это все работает в настоящих современных ЦОД. То же самое касается каналов связи, DDoS‑атак и так далее. Это все уже хорошо организовано и применяется.

Оркестрация, SRE и DevOps

Также у нас есть слой инфраструктуры, который относится к виртуализации (VMware, Hyper‑V, KVM, Proxmx и т. п.) или к оркестрации (Kubernetes, Docker Swarm, OpenShift, Hashicorp Nomad). Все гипервизоры должны быть сегментированы и изолированы и должны иметь определенные политики доступа к гипервизорам и другим инфраструктурным компонентам. Здесь тоже все достаточно просто и проблем не возникает. А вот оркестрация уже непосредственно касается работы SRE и DevOps. То есть здесь могут появляться более существенные вопросы, связанные с ИБ. Безопасники, связанные с оркестрацией и виртуализацией, отвечают непосредственно за процессы, завязанные на бизнес‑логику организации. Здесь запускается большое количество инфраструктурных контейнеров, контейнеров приложения с бизнес‑логикой, которые сами по себе могут нести большое количество уязвимостей. Человеку, который этим никогда жил, разобраться во всем скорее невозможно, чем возможно.

В данном случае безопасник должен быть из классических админов в первую очередь. Желательно, чтобы он был из DevOps, в идеале — чтобы еще и SRE. Эти люди реально понимают, как работает инфраструктура, кластеры и оркестрация, какие процессы там происходят и как этим управлять. И они знают основные точки входа, по которым можно атаковать. Специалист должен представлять, с чем он работает и с чем он должен взаимодействовать.

Если говорить про классические сканеры уязвимости на этом слое, то это сканеры, которые относятся к Kubernetes: KubeBench, KubeHunter, Trivy‑operator, Falco, Aqua, а также отечественные продукты типа Positive Technologies Container Security, Касперский Container Security. В эти системы безопасности не просто нужно изучать, их нужно устанавливать, обслуживать, обновлять и работать с ними. И эта работа тоже отчасти SRE, потому что нужно взаимодействовать с компонентами кластеров Kubernetes. Классический безопасник, который с этим никогда не сталкивался, скорее всего, не сможет выполнять эту работу, потому что у него не будет соответствующей компетенции этой области.

Сборка и доставка

Переходим к сборке и доставке. Этим тоже занимаются SRE и в нашем случае все flow в конвеере CI/CD. Сама система управления репозиториями кода также может быть подвержена атакам, поэтому нужно понимать, как работает весь конвейер сборки и доставки, какие есть слабые места и уязвимости в этих системах. Если ты никогда с этим не сталкивался и не умеешь проектировать и писать flow для процессов сборки и доставки, то ты, скорее всего, не сможешь понять, каким образом его проверять на уязвимости. Каких‑то специальных сканеров, которые бы позволили это сделать, в настоящее время нет. Нужно смотреть на бизнес‑логику процессов, то есть разбирать по шагам все джобы и понимать, что они делают. Это уже вопрос на стыке программирования и инфраструктуры.

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

Разработка и тестирование

Разберем самую верхнеуровневую историю — разработка и тестирование. Я считаю, что программирование является основой для понимания и анализа вообще всех уязвимостей в любой информационной системе. Простой пример из раздела с инфраструктурой. Современные маршрутизаторы и коммутаторы содержат определенное количество кода, который пишут инженеры сетевой инфраструктуры. Этот код надо понимать и уметь читать. В области виртуализации есть большое количество конфигурационных файлов, которые настраивают так, чтобы поддерживать определенную инфраструктуру в части сети и виртуальных машин, запущенных в ней. На уровне SRE есть огромное количество YAML‑манифестов, которые применяются в среде, в оркестрации, допустим в Kubernetes. Их тоже нужно уметь писать и с ними работать. Если мы берем Docker файлы и контейнеры Docker, то там большое количество конфигурационных файлов Dockerfile, из которых контейнеры собираются. И только те, кто сам пишет код, будут понимать, как работают данные конфигурации и каким образом реализуются эти алгоритмы и структуры данных.

Знание кода помогает более глубоко понимать уязвимости в программном обеспечении и искать пути их устранения. Программисты видят моменты, связанные с точками входа и процессами обработки и анализа каких‑то состояний. Вернемся к маршрутизаторам. Есть какой‑то конфиг для этого маршрутизатора, и в нём — открытые порты. Инженер или сетевой инженер видит, что открыто и куда можно проводить атаки. В SRE то же самое. Там есть сервисы, которые открывают доступ к определенному микросервису и на которые можно проводить атаки.

Еще одно важнейшее преимущество безопасника‑программиста — способность к комплексному подходу к задаче обеспечения безопасности. Безопасник должен закрывать какую‑то определенную зону ответственности. Как это сделано у нас: AppSec‑специалисты занимаются разбором кода и бизнес‑логики, которые пишут программисты. DevSecOps занимаются контейнерной безопасностью и безопасностью Kubernetes, то есть они детально разбирают это направление. Есть мобильные безопасники Application Security, которые занимаются поиском уязвимостей в мобильных приложениях.

Программисты приучены к анализу кода на микроуровне и к тщательной проверке каждой строки кода на ошибки и уязвимости. Это все подсвечивается сканерами. Но нужно понимать, что сканеры не позволяют определять процессы, связанные с бизнес‑логикой. Если есть цепочка атак, которая приведет к выполнению каких‑то плохих состояний для этой информационной системы, сканер может это не увидеть. А вот безопасник‑программист сможет определить изменения и подозрительные моменты, которые не увидят другие специалисты.

Обучение безопасника‑программиста

Следующий момент, про который нужно сказать — это непрерывное обучение и развитие специалиста безопасника. ИБ быстро меняется, особенно в последнее время: выходят новые стандарты и политики, появляются новые базы уязвимостей, которые нужно обновлять, постоянно поддерживать, совершенствовать. Кроме того, необходимо совершенствовать свои навыки и знания в области информационной безопасности. Этому способствуют разные курсы, семинары, конференции, как онлайн, так и оффлайн. И мы за этим тоже следим и стараемся все время быть в тренде этих процессов.

Программисты благодаря как раз своему большому опыту и умению быстро учиться новому могут легче адаптироваться к этим изменениям и быть в курсе последних событий и трендов в области информационной безопасности. Хорошо, кстати, если программисты в целом работают с безопасниками. Специалист по ИБ видит результаты сканирования, проверяет код и приходит с этими уязвимостями к разработчику. Разработчик на основе этих данных начинает обучаться информационной безопасности. То есть в следующий раз он таких ошибок допускать уже не будет, и его уровень и компетенция будут постоянно расти.

Курсы по ИБ по типу «Войти в ИТ за 20 минут» тоже не панацея в данном вопросе. Как правило, их проходить должен уже разбирающийся в коде специалист, решивший перепрофилироваться на другие задачи или просто повысить качество кода, который пишет. Нередко те или иные вещи при написании кода могут быть неочевидны, и подобные курсы как раз помогут обезопасить результаты труда себе и всем связанным с проектом коллегам. Взять человека с нуля и обучить его работать со сканером недостаточно, чтобы получить хорошего ИБ‑специалиста.

Подведем итог

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

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

Готов обсудить с вами тему. :-)

Комментарии (26)


  1. MasterIT75
    23.04.2024 16:37

    Спасибо за интересную статью.


    1. m_sinelnikov Автор
      23.04.2024 16:37

      Пожалуйста, очень рад что понравилась.


  1. DikSoft
    23.04.2024 16:37

    По-хорошему в ИБ подразделении обязательно нужно иметь толкового сетевого инженера, который только на этом и специализируется. Грамотный DBA в целом тоже далеко не лишним будет.

    А то получится, как сейчас с "девопсами" - на все руки от скуки без понимания, что там под капотом.


    1. rgajfullin
      23.04.2024 16:37
      +1

      Я по образованию безопасник, по профессии девопс. Ещё в студенчестве понял что ИБ у нас это про "преступления и наказания", соответственно, этим, преимущественно, занимаются менты(нынешние, бывшие, разного сорта смешение оных, иногда противоправное). Теперь, спустя значительное количество лет, я точно могу сказать, если вы толковому девопсу ставите задачи по ИБ, он с ними справится, без кучи макулатуры, но если вы бывшему менту поставите такую же задачу, у вас будет куча макулатуры, по которой вы быстро найдете виноватого.


    1. m_sinelnikov Автор
      23.04.2024 16:37

      Согласен с Вами полностью, должны быть ИБ специалисты обладающие определенными компетенциями в конкретной области.


  1. andrettv
    23.04.2024 16:37
    +1

    В направлении безопасной разработки - несомненно. Но, допустим, из тестировщика может получиться пентестер, из админа - аналитик SOC, из дата-сайентиста - спец по антифроду и т.д. Карьерных треков не так мало. Хороший обзор - https://habr.com/ru/companies/pt/articles/800865/.


    1. Protos
      23.04.2024 16:37

      Ну в ЦФТ как помню в спецов по антифроду брали вообще без вышки, там главное было склад ума и часто знание какого-то национального языка СНГ. Причем образование могло быть не профильным.


      1. m_sinelnikov Автор
        23.04.2024 16:37

        Такое тоже встречается, бывают уникальные люди у которых мысли с рожденья работают в правильном направлении.


  1. karon
    23.04.2024 16:37
    +2

    Что бы был рост из программиста/девопса и и.д, зп должна быть выше чем на сеньерных позициях. А такого в большинстве своём нет


    1. m_sinelnikov Автор
      23.04.2024 16:37

      На самом деле по разному бывает. Все, наверное, больше зависит от приоритетов компании.


      1. karon
        23.04.2024 16:37

        Пограничные случаи бывают любые. Согласен. Но статистика неумолима


  1. CatAssa
    23.04.2024 16:37
    +2

    Безопасник, который вырос из программиста

    А это точно "рост"?


    1. m_sinelnikov Автор
      23.04.2024 16:37

      Не всегда, смотрю какие задачи ставите перед собой.


  1. seepeeyou
    23.04.2024 16:37
    +2

    Будет хорошо если безопасник будет программист. А еще лучше если он вдобавок будет натаскан в бизнес-процессах и менеджменте. А еще еще лучше лучше если он к тому же будет сисадмин, тимлид, кок, сантехник, слесарь, сварщик... ну вы поняли. Таких людей надо растить, плюс совершенно необязательно, чтобы была именно последовательность погромист -> хацкер. Можно и скрипт-кидёнка научить смотреть в код и видеть там не-фигу.

    В ОЙТИ вообще в любом узком направлении хорошо когда "... из программиста". Как и в любой сфере в принципе, где специализации расходятся ветками от какой-то одной исторически доминирующей "базы", хорошо если специалист натаскан по этой самой базе. Но это же очевидно, нет?


  1. okatsladz
    23.04.2024 16:37

    Идиотизм, а не статья


    1. Protos
      23.04.2024 16:37
      +2

      Кто не умеет - не пишет, зато на диване сидит и смотрит с высока


      1. NidhQggr
        23.04.2024 16:37

        Не в защиту, в а общую конъюнктуру. Не стоит прям так однозначно кидаться "идиотизм/не идиотизм". Проблемы связанные с безопасностью стары как мир. Какие технологии, такие и проблемы с безопасностью. Вчера были слушающие трубки и стетоскопа, была актуальна безопасность акустических каналов. Сегодня компы из каждой дырки торчат, безопасность дырок в компах. Методическая часть никуда не смещается уже много десятков лет. Проблема разрыва поколений и технологий только осложняет управление данной проблемой.

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

        Но в целом "статья"-то по делу. Проблема системного подхода в решении задач неклассической безопасности очень актуальна.

        Поэтому вернее было бы ее назвать "неполная статья".


        1. m_sinelnikov Автор
          23.04.2024 16:37

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


  1. StanislavBulgakov
    23.04.2024 16:37
    +1

    IT отличная база для любой интеллектуальной профессии требующей системного подхода или оперирования данными.

    За развернутый и развернутый материал благодарочка)


    1. m_sinelnikov Автор
      23.04.2024 16:37

      Спасибо.


  1. AnSereb
    23.04.2024 16:37

    "Выросший из программиста" в этой статье противопоставляется кому? Безопаснику, получившему профильное образование? Сможет ли "выросший из программиста" мыслить категориями рисков, строить модели угроз, обрести ту самую "интуицию безопасника"? Я не занижаю важность владения разработкой, просто мне кажется это не первично


    1. m_sinelnikov Автор
      23.04.2024 16:37

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


  1. Bagatur
    23.04.2024 16:37

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


    1. m_sinelnikov Автор
      23.04.2024 16:37

      Встройте своим разработчикам в CI проверки Secretleaks, SAST, SCA, OSA, BCA and etc. Отдавайте им автоматически отчеты прямо в CI в виде артифактов, подсвечивайте проблемы. Уверен что они будут заинтересованы писать код качественно. Позже можно перейти к блокировкам)


  1. molokovskikh
    23.04.2024 16:37

    Спасибо за статью.

    Но у вас не указанны одни из главных мотиваций.

    Вот синьор разработчику, переквалифицированному на ИБ, не предложат больше чем его текущая ЗП.

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


    1. m_sinelnikov Автор
      23.04.2024 16:37

      Вопрос денег - вопрос сложный! Обычно как, если есть желание развиваться в конкретной области, допустим в ИБ, то и работу нужно искать там где ИБ будут ценить. А ценят ИБ там где есть финансовые и репутационные потери, смотрите в сторону банков, крупных агрегаторов ПНД, онлайн сервисов, торговых площадок и т.п.