Обеспечение безопасности инфраструктуры в масштабе: Представляем конвейер предоставления ресурсов Pinterest (RPP)
Управление инфраструктурой как кодом в крупной распределенной организации, такой как Pinterest, сопряжено со значительными трудностями в области безопасности и логистики. Для решения этой проблемы Pinterest разработал Resource Provisioner Pipeline (RPP) — собственный движок выполнения Terraform. RPP обеспечивает безопасное управление как критически важными, так и некритически важными изменениями инфраструктуры в среде с множеством репозиториев. Эта система обеспечивает соответствие требованиям и надежную безопасность для глобальных операций AWS благодаря двойному контролю, централизованным GitHub Actions и безопасному цепочечному назначению ролей. RPP управляет сотнями рабочих пространств Terraform, контролируя десятки тысяч ресурсов AWS, включая политики безопасности, сетевую инфраструктуру и вычислительные ресурсы. Рабочий процесс RPP в GitHub работает по централизованной модели выполнения, запускаемой событиями PR. Он использует составные GitHub Actions и изолирует влияние рабочих пространств, выполняя планы для каждого рабочего пространства независимо. Двойной контроль добавляет важный уровень человеческой проверки, требуя одобрения от рецензента кода. Для обеспечения принципа наименьших привилегий RPP реализует строгое сопоставление путей к рабочим пространствам с ролями с использованием безопасного цепочечного назначения ролей. Процесс начинается с принятия централизованной роли RPPActionsRole, аутентифицированной через GitHub OIDC. Затем определяется рабочее пространство, сопоставляя его с разрешенными репозиториями, путями и ролями выполнения. Критическая серверная проверка гарантирует, что пути к коду строго ссылаются на правильный бэкенд состояния S3 и ключи KMS для назначенного рабочего пространства. Если проверка проходит, RPPActionsRole принимает ограниченную командную IAM-роль, обеспечивая минимальные разрешения. Процесс развертывания включает линтинг, планирование с выводом в PR и целенаправленное применение, запускаемое определенным комментарием. Такой подход предлагает такие преимущества, как унифицированный аудит, мгновенное системное исправление и централизованные метрики ресурсов.