A Pinterest revelou o Resource Provisioner Pipeline (RPP), seu motor de execução Terraform centralizado, que redefine a segurança e a gestão de sua infraestrutura AWS em escala, introduzindo controles rigorosos e um modelo de execução inovador para garantir o menor privilégio e prevenir falhas críticas.
- Pinterest desenvolveu o RPP para centralizar e securitizar a execução do Terraform em sua vasta infraestrutura AWS.
- O RPP garante acesso de menor privilégio e requer controle duplo com revisões humanas e aprovações explícitas.
- A validação do bloco de backend do Terraform é um recurso de segurança crucial do RPP, prevenindo a corrupção de estado entre 'workspaces'.
- Ele oferece um ponto de controle único para correções e permite verificações consistentes, incluindo análise estática e varredura por IA.
- O RPP se destaca ao adicionar camadas de validação específicas em um modelo de encadeamento de roles, em comparação com abordagens de outras empresas como Mercari e Slack.
Pinterest Aprimora Segurança com o Resource Provisioner Pipeline (RPP)
A Pinterest, plataforma de descoberta visual, anunciou o desenvolvimento e implementação do Resource Provisioner Pipeline (RPP), seu motor de execução Terraform proprietário. Projetado para escalar e reforçar a segurança de sua infraestrutura na Amazon Web Services (AWS), o RPP estabelece rigorosos "guardrails" nos fluxos de trabalho do GitHub Actions, garantindo acesso de menor privilégio e exigindo revisões de controle duplo para todas as alterações.
Este sistema gerencia um grande volume de 'workspaces' Terraform, que orquestram milhares de recursos em nuvem, desde políticas IAM e VPCs até balanceadores de carga, buckets S3 e clusters Kubernetes. A infraestrutura de código da Pinterest, anteriormente dispersa em múltiplos repositórios gerenciados por diferentes equipes — um cenário onde a consolidação em um mono-repo ainda está em andamento — apresentava um risco significativo. Conceder permissões amplas a um sistema CI/CD para realizar mudanças em diversos repositórios e contas AWS poderia levar a configurações acidentais ou ações maliciosas. O RPP foi concebido como uma ponte para mitigar esses riscos na realidade multi-repo existente, sem esperar pela conclusão da migração.
# publicidade
Funcionamento Detalhado: Controle e Execução Segura
O RPP é ativado por eventos de 'pull request' (PR) no GitHub, executando um conjunto centralizado de ações compostas do GitHub Actions em vez de scripts por repositório. Essa abordagem fragmenta um único PR em execuções separadas de 'plan' e 'apply' para cada 'workspace' afetado. O modelo de execução emprega um encadeamento de roles (funções) da AWS: inicialmente, um fluxo de trabalho assume uma 'RPPActionsRole' central, limitada a fluxos de trabalho GitHub pré-autorizados por validação de token OIDC. Essa role lê um arquivo de configuração que mapeia cada 'workspace' ao seu repositório permitido, diretório de trabalho, equipe proprietária e role IAM de execução.
Um passo crucial antes da assunção da 'role' específica do 'workspace' é a validação do bloco de backend do Terraform. O RPP verifica se o caminho do código Terraform corresponde ao backend S3 e à chave KMS específicos para aquele 'workspace', prevenindo erros onde um desenvolvedor poderia acidentalmente vincular o diretório de um 'workspace' ao arquivo de estado de outro. Somente após a validação bem-sucedida, o pipeline assume a 'role' da equipe específica do 'workspace' e executa 'terraform fmt', 'plan' e, após um comentário humano explícito no PR, aplica as mudanças. Todas as alterações de código também exigem a aprovação de um revisor autorizado no repositório proprietário.
Benefícios Chave e Inovação do RPP
Segundo a Pinterest, este modelo oferece um ponto de controle único para correções em toda a infraestrutura, permitindo que questões sistêmicas, como uma falha em um 'runner' CI, sejam resolvidas em um único local, em vez de centenas de repositórios individuais. As ações compostas centralizadas asseguram verificações de PR consistentes, incluindo análise estática com regras Semgrep personalizadas e varredura assistida por IA. Testes 'dry run' opcionais baseados em LocalStack também podem ser realizados para simular o comportamento da AWS antes que as mudanças afetem contas reais.
Embora o RPP seja um sistema privado e não de código aberto, sua arquitetura se baseia em encadeamento de 'roles' OIDC padrão e mapeamento de 'workspace' para 'role'. No entanto, o forte foco na validação do bloco de backend é um diferencial chave, agindo como um "guardrail" contra a corrupção do estado entre 'workspaces' – um detalhe importante para equipes com configurações Terraform multi-repo similares.
O padrão de mapeamento 'workspace-path-role' da Pinterest – que inclui uma configuração de fonte da verdade, validação de backend e assunção de 'role' com escopo reduzido – serve como um guia útil para outras equipes implementarem o princípio do menor privilégio em seus pipelines Terraform orientados por PR, sem a necessidade de uma migração completa para um mono-repo. O controle duplo é implementado em duas camadas: a aprovação de revisão de código humano e um comentário explícito no PR necessário para acionar o 'apply', garantindo que planejamento e aplicação sejam ações separadas e auditáveis.
Estratégias de Segurança IaC: Pinterest vs. Outras Empresas
O desafio de proteger pipelines IaC centralizados é amplamente reconhecido na indústria. A Mercari, por exemplo, enfrentou um problema semelhante com seu mono-repo Terraform, que inicialmente utilizava uma única conta de serviço GCP com direitos de proprietário para todos os projetos. Para resolver isso, a Mercari empregou ferramentas do GCP, combinando credenciais Cloud Build sem chave com uma conta 'plan' somente leitura e uma conta 'apply' específica para cada serviço, usando a representação para limitar o impacto de cada trabalho a um único projeto.
A Slack, por sua vez, optou por descentralizar a propriedade do estado para equipes individuais, mas ainda impõe uma barreira de 'plan-then-apply', exigindo que as mudanças passem por ambientes de 'sandbox' e desenvolvimento antes de alcançar a produção.
O RPP da Pinterest se destaca pela inclusão de uma etapa clara de validação do backend e da chave KMS. Esta etapa verifica o caminho do código Terraform de um 'workspace' em relação ao seu arquivo de estado antes de qualquer 'role' ser assumida. Isso serve como uma defesa adicional, complementando um modelo de mapeamento de 'roles' semelhante ao utilizado pela Mercari e Slack, ajudando a proteger pipelines IaC centralizados de se tornarem um ponto único de falha.
| Característica | Pinterest (RPP) | Mercari (Terraform GCP) | Slack (IaC Decentralizado) |
|---|---|---|---|
| Abordagem Principal | Pipeline Centralizado com validação de backend | Mono-repo com impersonação de service accounts por projeto | Estado descentralizado com gates 'plan-then-apply' |
| Controle de Acesso | Encadeamento de roles OIDC com menor privilégio por workspace | Credenciais sem chave e accounts 'plan'/'apply' específicas por projeto | Propriedade do estado por equipe com gates de ambiente |
| Validação de Segurança | Validação rigorosa do bloco de backend e KMS | Representação para limitar escopo por projeto | Gates de ambiente (sandbox, dev, prod) |
| Gerenciamento de Multi-repo | Ponte segura para realidade multi-repo existente | Consolidação em mono-repo com controle fino | Descentralização do estado para equipes individuais |
| Dual Control | Revisão de código + comentário explícito para apply | Implícito via accounts 'plan'/'apply' separadas | Implícito via gates de ambiente e propriedade do estado |
Arraste para o lado para ver toda a tabela.
Perguntas Frequentes (FAQ)
O que é o Resource Provisioner Pipeline (RPP) da Pinterest?
O RPP é um motor de execução Terraform centralizado e proprietário desenvolvido pela Pinterest para gerenciar e proteger sua infraestrutura AWS em escala. Ele garante acesso de menor privilégio e exige aprovações de controle duplo para todas as alterações.
Como o RPP aumenta a segurança da infraestrutura AWS da Pinterest?
O RPP implementa acesso de menor privilégio através de encadeamento de roles da AWS, exige validação do bloco de backend do Terraform para prevenir corrupção de estado, e impõe um processo de controle duplo com revisão de código humano e aprovação explícita em pull requests antes da aplicação das mudanças.
Qual a principal inovação do RPP em comparação com outras soluções IaC?
Um dos principais diferenciais do RPP é sua rigorosa etapa de validação do bloco de backend e da chave KMS, que verifica se o caminho do código Terraform de um workspace corresponde ao seu arquivo de estado antes de assumir qualquer role, adicionando uma camada extra de defesa contra a corrupção de estado entre workspaces.
Fontes e referencias
- How Pinterest Secures AWS Infrastructure at Scale with a Centralized Terraform Pipeline (www.infoq.com)
- Pinterest Engineering Blog (presumido para mais detalhes) (pinterest.engineering)