Наука и безопасность
www.pamag.ru








Блог Шаблон

Новость

Как автоматизация может поднять планку безопасности

17.10.2021 <<Назад

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

Рост популярности облачных провайдеров, таких как AWS, Google Cloud и Microsoft Azure, за последнее десятилетие внес огромные изменения в то, как мы создаем и эксплуатируем веб-сервисы. Благодаря многим из трудоемких задач прошлого, таких как предоставление новых серверных мощностей, абстрагированных за удобными API-интерфейсами, компании теперь имеют беспрецедентный уровень гибкости, когда дело доходит до того, как они проектируют и эксплуатируют инфраструктуру, необходимую для работы их амбициозных приложений.

В результате наши производственные среды стали больше и сложнее, и обычной команде безопасности становится все труднее защищать их вручную. Поскольку группы безопасности изо всех сил стараются не отставать от старых передовых методов, автоматизация является ключевым рычагом, который может позволить командам эффективно выполнять свою работу в масштабе. Благодаря растущей экосистеме мощных инструментов, созданных для использования преимуществ комплексных API-интерфейсов, предлагаемых поставщиками облачных услуг, эта автоматизация позволяет создавать высокозащищенные решения (как например nport 5110 moxa цена которого невысока), сохраняя при этом высокую скорость работы вашей команды.

Автоматизация и безопасность

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

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

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

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

Второе преимущество автоматизации состоит в том, что она позволяет легче изолировать агентов, выполняющих задачи, используя так называемый «принцип наименьших привилегий». В этом контексте агентом может быть что угодно: инженер вашей команды, выполняющий ручное изменение в рамках своих повседневных обязанностей; сторонний программный сервис, такой как GitHub, которому вы предоставили учетные данные API для обеспечения интеграции; или даже программу, которую вы создали для выполнения определенной задачи.

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

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

Путешествие тысячи коммитов начинается с одного сценария bash

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

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

Большинство поставщиков облачных услуг предлагают набор утилит командной строки, которые позволяют легко выполнять действия с использованием их API-интерфейсов с локального терминала. Мы можем воспользоваться преимуществами этих инструментов, быстро собрав вместе сценарии bash, которые последовательно выполняют необходимые шаги, не требуя большой настройки или множества внешних зависимостей. В результате сценарии, которые вы здесь создаете, могут быть на удивление короткими и приятными. Длинный контрольный список, который инженеру потребовалось час или два, чтобы проработать вручную, можно свести к 30-строчному сценарию bash, который выполняется за несколько секунд и каждый раз дает один и тот же результат.

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

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

Автоматизация ваших разрешений

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

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

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

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

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

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

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

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

Кто наблюдает за роботами?

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

Один из наиболее эффективных способов сделать это — использовать комплексные функции аудита активности, предлагаемые большинством основных поставщиков облачных услуг, например AWS CloudTrail или Google Cloud Audit Logging . Эти журналы аудита содержат полную подробную историю действий, выполненных в вашей учетной записи, а также важные метаданные, такие как идентификационные данные участников и исходный IP-адрес для соответствующего запроса API. Обычно эти журналы доступны через простой в использовании API или аналогичный механизм для облегчения их программного использования.

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

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

Безопасность + роботы: вместе лучше

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

Патрик О'Догерти - инженер по безопасности компании Intercom, специализирующийся на автоматизации и мониторинге

Перевод статьи: increment.com/security/how-automation-improves-security/

<<Назад


Партнеры