Как Pinterest защищает AWS-инфраструктуру с помощью Terraform

Pinterest представила Resource Provisioner Pipeline (RPP) — собственный движок для выполнения Terraform. Он обеспечивает минимальные привилегии доступа и требует двухэтапного ревью, что критически важно для безопасности AWS-инфраструктуры компании.

Как Pinterest защищает AWS-инфраструктуру с помощью Terraform

Как крупная технологическая компания управляет доступом к своей облачной инфраструктуре, не жертвуя скоростью разработки? Pinterest ответила на этот вопрос, внедрив Resource Provisioner Pipeline (RPP) — собственный движок для выполнения Terraform, который добавляет строгие ограничения в рабочие процессы GitHub Actions. Это решение позволяет централизованно управлять провижинингом ресурсов AWS, обеспечивая принцип наименьших привилегий и обязательное двухэтапное ревью каждого изменения.

Pinterest представляет Resource Provisioner Pipeline

Pinterest раскрыла детали своего подхода к безопасности AWS-инфраструктуры в недавнем посте в блоге. Resource Provisioner Pipeline — это не просто набор скриптов, а полноценный движок, который выполняет Terraform-код в контролируемой среде. Ключевая особенность — строгие ограничения на GitHub Actions workflows: каждый запрос на изменение инфраструктуры проходит через двойное ревью, а доступ к ресурсам предоставляется только на время выполнения задачи.

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

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

Предыстория и контекст

Pinterest исторически полагалась на децентрализованный подход, когда каждая команда сама управляла своими Terraform-конфигурациями и имела собственные AWS-аккаунты. Однако с ростом компании стало очевидно, что такой подход создает риски: разрозненные права доступа, отсутствие единого аудита и сложность в обеспечении соответствия стандартам безопасности.

В 2023 году Pinterest начала миграцию на более централизованную модель, и RPP стал логичным продолжением этой стратегии. Подобные практики уже используют другие крупные игроки, такие как Airbnb и Uber, которые также внедрили внутренние инструменты для управления инфраструктурой. Однако Pinterest пошла дальше, интегрировав RPP непосредственно с GitHub Actions, что позволяет разработчикам работать в привычной среде.

Важно отметить, что проблема управления доступом к облаку актуальна не только для гигантов. Согласно отчету Cloud Security Alliance, более 60% компаний сталкиваются с инцидентами, связанными с неправильной конфигурацией облачных ресурсов. Поэтому подход Pinterest может стать примером для средних и крупных организаций, стремящихся повысить безопасность без потери гибкости.

Как работает RPP?

Resource Provisioner Pipeline использует модель с двумя ролями: инициатор и ревьюер. Когда разработчик создает pull request с изменениями Terraform-кода, RPP автоматически запускает проверку кода, включая статический анализ и тесты. Затем запрос отправляется на ревью двум независимым специалистам, которые должны одобрить изменения. Только после этого RPP выполняет Terraform plan и apply в изолированной среде.

Ключевой момент — использование временных учетных записей. RPP запрашивает кратковременные токены AWS через OpenID Connect, которые действуют всего несколько минут. Это означает, что даже если токен будет скомпрометирован, злоумышленник не сможет использовать его для длительного доступа. Кроме того, все действия логируются в AWS CloudTrail, что обеспечивает полную прозрачность.

Технические детали и безопасность

С архитектурной точки зрения RPP состоит из нескольких компонентов: веб-интерфейс для управления запросами, API для интеграции с GitHub, и исполнительный модуль, который запускает Terraform. Исполнительный модуль работает в отдельном AWS-аккаунте с ограниченными правами, что создает дополнительный уровень изоляции.

Одной из главных инноваций является использование политик OPA (Open Policy Agent) для проверки Terraform-планов. Эти политики позволяют автоматически блокировать изменения, которые нарушают правила безопасности, например, открывают публичный доступ к S3-бакетам или используют запрещенные типы инстансов. Это снижает нагрузку на ревьюеров и ускоряет процесс.

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

Кого затронет и как

Новость о RPP важна для нескольких категорий специалистов. Для DevOps-инженеров и SRE это пример того, как можно построить безопасный пайплайн управления инфраструктурой, используя открытые инструменты, такие как Terraform и OPA. Для CTO и технических директоров — это аргумент в пользу централизации, даже если это требует первоначальных инвестиций.

В России и СНГ многие компании используют похожие подходы, но часто сталкиваются с нехваткой специалистов по безопасности. RPP показывает, что можно автоматизировать значительную часть проверок, снижая зависимость от ручного труда. Однако важно помнить, что внедрение такого пайплайна требует зрелой культуры DevOps и готовности к изменениям.

Разработчики, которые привыкли к прямому доступу к облаку, могут воспринять новые ограничения в штыки. Но Pinterest удалось доказать, что централизованный подход не только безопаснее, но и удобнее: разработчикам больше не нужно думать о настройке прав, они просто создают pull request и получают результат.

Что будет дальше

Pinterest планирует расширять функциональность RPP, добавив поддержку других облачных провайдеров и инструментов, таких как Pulumi. Компания также рассматривает возможность открыть исходный код некоторых компонентов, чтобы сообщество могло использовать их в своих проектах. Если это произойдет, RPP может стать стандартом де-факто для управления инфраструктурой на GitHub Actions.

Ожидается, что в ближайшие месяцы Pinterest опубликует подробную документацию по RPP, включая примеры конфигураций и политик. Это поможет другим компаниям быстрее внедрить аналогичные решения. В индустрии также наблюдается тренд на усиление безопасности в CI/CD пайплайнах, и RPP — яркий пример того, как это можно сделать системно.

Итог

Resource Provisioner Pipeline от Pinterest — это значимый шаг в области безопасности облачной инфраструктуры. Он показывает, что даже крупные компании могут эффективно управлять доступом, используя принцип наименьших привилегий и автоматизированные проверки. Для тех, кто следит за развитием DevOps и безопасности, этот кейс стоит изучить внимательно — возможно, он станет ориентиром для многих организаций.