Построение системы безопасности в ваших условиях управления конфигурациями и непрерывном потоке операций.
Данная статья — это выдержка из «DevOpsSec: Защита программного обеспечения на основе непрерывной поставки», написанной Джимом Бердом.
Важно не только обезопасить приложение и условия выполнения работы, но и обезопасить цепочку инструментов непрерывной поставки, также как и построить и протестировать условия. Вы должны быть уверены в целостности поставки и цепи хранения, не только из-за соответствия стандартам и безопасности, а также для того, чтобы убедиться, что изменения произведены безопасно, циклично и напрямую.
Ваша цепь инструментов непрерывной поставки сама по себе также является опасной целью для атак: она открывает прямой путь для изменений и автоматически выталкивает их в производство. Если же она повреждена, нападающим открыт легкий путь в вашу разработку, тестирование и условия производства. Они могут украсть ваши данные или интеллектуальное имущество, ввести вредоносную программу в среду, могут произвести атаку типа «отказ» в обслуживании или же нанести вред способности вашей организации реагировать на атаки, закрыв сам канал.
Непрерывная поставка и непрерывное внедрение значительно расширяют атаку на вашу производственную систему до сборки и автоматического тестирования, и условий внедрения.
Вам также необходимо обезопасить канал от внутренних атак, убедившись, что все изменения происходят прозрачно и могут наблюдаться от одного конца к другому. Кроме этого, убедитесь, что вредоносный и проинформированный инсайдер не внесет изменения, оставаясь незамеченным, и что они не смогут обойти проверки и подтверждений.
Создайте модель угроз для канала непрерывной поставки. Проверьте слабые стороны в установке и контроле, и пропуски в ревизии системы или регистрации данных. Затем примите следующие меры для того, чтобы обезопасить среду управления конфигурацией и канала непрерывной поставки:
- Упорядочьте системы, в которых размещаются источник и хранилища сборки артефактов, сервер(ы) непрерывной интеграция и поставки, а также системы, которые содержат инструменты менеджера конфигураций, создания, внедрения и выпуска обновлений. Убедитесь, что вы точно понимаете — и контролируете — что совершается локально, а что в облаке.
- Упорядочьте сервер непрерывной интеграцию и / или непрерывной поставки. Инструменты как Jenkins предназначены для удобства разработчика и не защищены по умолчанию. Убедитесь, что эти инструменты (и требуемые плагины) обновляются и регулярно тестируются.
- Закройте и упорядочьте ваши инструменты управления конфигурациями. В качестве примера посмотрите «Как быть Secure Chef».
- Убедитесь, что ключи, учетные данные и другие секреты защищены. Уберите секреты из скриптов и кода источника, и простых текстовых файлов и используйте проверенный, безопасный менеджер секретов, например, Chef Vault, Square’s JeyWhiz project или HashiCorp Vault.
- Обезопасьте доступ к источнику и бинарному репозиторию и проверьте доступ к ним.
- Внедрите контроль доступа во всей цепи инструмента. Не допускайте анонимный и общественный доступ к репозиториям, серверу непрерывной интеграции или менеджеру подтверждения или к любым другим инструментам.
- Измените шаги сборки, чтобы подписать бинарные файлы и другие артефакты сборки, чтобы избежать вмешательства.
- Время от времени проверяйте записи, чтобы убедиться, что они завершены и что вы можете проследить за изменениями от начала до конца. Убедитесь, что записи неизменны, что их нельзя стереть или подделать.
- Убедитесь, что все эти системы прослеживаются, как часть условий производства.
About The Author
Виктор Карабедянц
ИТ директор (CIO), руководитель нескольких DevOps команд. Профессиональный руководитель проектов по внедрению, поддержке ИТ систем и обслуживанию пользователей.