pile·
인프라 / DevOps·pinterest-engPinterest Engineering·

대규모 인프라를 안전하게 프로비저닝하는 Pinterest의 RPP 파이프라인

Pinterest가 수백 개 Terraform 워크스페이스와 수만 개 클라우드 리소스를 안전하게 변경하려고 만든 전용 Terraform 실행 엔진 RPP(Resource Provisioner Pipeline)를 소개한다. 팀별로 흩어진 멀티 레포 구조에서 CI/CD가 과도한 권한을 쥐지 않도록 secure role-chaining으로 최소 권한을 강제하고, 모든 변경을 PR 기반으로 계획·검토·적용한다. 취약점 스캔·LocalStack 사전 테스트·중앙 감사까지 파이프라인에 녹였다.

핵심 포인트
  • RPP는 수백 개 워크스페이스와 수만 개 리소스(IAM, VPC, S3, K8s 등)를 관리하는 사내 전용 Terraform 실행 엔진이다.
  • 팀별로 흩어진 멀티 레포를 중앙 GitHub Actions로 묶어 PR 이벤트마다 워크스페이스 단위로 plan/apply를 분리 실행한다.
  • OIDC 검증으로만 assume되는 중앙 RPPActionsRole에서 시작해 최소 권한 팀 실행 역할로 down-scope하는 secure role-chaining을 쓴다.
  • 코드 경로·백엔드 state·KMS 키가 워크스페이스와 정확히 매핑되는지 검증해, 불일치 시 빌드를 즉시 실패시킨다.
  • 중앙화로 Semgrep·AI 스캔, LocalStack 사전 테스트, 통합 감사, 일괄 패치 같은 이점을 얻는다.
상세 정리
  • 관리 범위: RPP는 수백 개 Terraform 워크스페이스로 수만 개 리소스를 다루며, IAM 역할·정책, VPC·보안그룹·로드밸런서·DNS, 접근 제어된 S3와 Kubernetes 클러스터를 포함한다.
  • 멀티 레포 과제: Terraform 코드가 팀별 여러 레포에 흩어져 있고 모노레포 통합은 진행 중인데, RPP가 그 사이를 안전하게 잇는다.
  • 중앙 실행 모델: 배포는 PR 생성·수정·코멘트 이벤트에 자동 트리거되고, 중앙 composite GitHub Actions가 PR 위에서 동작하며, 한 PR이 여러 워크스페이스를 건드리면 각 워크스페이스별로 plan/apply를 따로 돌린다.
  • 이중 통제: 모든 코드 변경은 해당 레포 리뷰어 승인을 거치는 dual control을 요구해 사람 검토를 한 겹 더 둔다.
  • 1단계 역할 assume: 파이프라인은 먼저 중앙 RPPActionsRole을 assume하는데, 이 역할은 사전 인가된 특정 GitHub 워크플로에서만, 그것도 GitHub OIDC 토큰을 클라우드 계층에서 검증해야 assume된다.
  • 2단계 워크스페이스 속성 결정: RPPActionsRole 안에서 중앙 SSoT 설정 파일을 읽어 워크스페이스와 이메일·설명·작업 디렉터리·github_repo·실행 IAM 역할의 매핑을 확정한다.
  • 3단계 백엔드 검증: 코드가 그 워크스페이스에 매핑된 S3 state 백엔드 블록과 KMS 키를 명시적으로 참조하는지 검사하고, 개발자가 백엔드 블록을 다른 워크스페이스로 바꾸면 불일치를 잡아 빌드를 즉시 실패시킨다.
  • 4단계 down-scope: 검증을 통과하면 RPPActionsRole이 지정된 축소 권한 team_iam_role을 assume해, 코드 경로가 올바른 환경에서 최소 IAM 권한으로만 실행되게 한다.
  • 실행 4단계: terraform fmt로 린팅, terraform plan 결과를 PR 코멘트로 게시(실패 시 머지 차단), Terraform 설정으로 assume할 역할을 지정, 그리고 명시적 PR 코멘트가 있어야만 동일한 role-chaining을 거쳐 terraform apply를 실행하고 결과를 PR에 남긴다.
  • 취약점 스캔: 모든 PR이 커스텀 Semgrep 규칙과 Helix/AI 통합으로 정적 분석을 돌려 안전하지 않은 인프라 구성을 사전에 가로챈다.
  • 사전 테스트: 복잡한 아키텍처 팀은 파이프라인 안에서 LocalStack으로 AWS 동작을 모킹·미리보기한 뒤 프로덕션에 반영한다.
  • 중앙화 이점: 통합 감사, runner 셸 취약점 같은 광범위 이슈의 단일 지점 즉시 패치(레포 수백 개 수정 대신), 경로-워크스페이스 매핑 전역 고정, 리소스 증감 메트릭 추적, 향후 태그 강제의 토대를 얻는다.
  • 향후: 이번 RPP는 시작일 뿐이며, 더 견고한 차세대 RPP 엔진을 후속 글에서 공유할 예정이다.
왜 읽나대규모 멀티 레포 환경에서 Terraform·GitHub Actions로 IaC 배포를 최소 권한으로 안전하게 중앙화하려는 플랫폼·SRE·보안 엔지니어에게 구체적 설계 레퍼런스.
pinterest-eng
Pinterest Engineering 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    Claude Apps Gateway on AWS 자세히 알아보기

    Anthropic의 Claude Code 바이너리에 내장된 LLM 게이트웨이 솔루션 Claude Apps Gateway의 AWS 인프라 배포 방법과 엔터프라이즈 기능을 다룬다. API 키 대신 IdP(Identity Provider) 기반 SSO를 사용해 Okta, Microsoft Entra ID, Keycloak과 연동하며, 그룹별 권한 정책, 예산 관리, OpenTelemetry 기반 관측성을 제공한다.

    #claude#bedrock#opentelemetry+2
  2. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    금융 클라우드 길라잡이 A to Z Part 2 – 연구개발망 예외와 망분리 개선 로드맵

    2024년 8월 금융위원회의 망분리 개선 로드맵에 따라 허용된 연구개발망(R&D 망)을 AWS 멀티 계정 아키텍처로 구현하는 방법을 다룬다. 물리적 망분리 대신 논리적 분리로 전환되면서 생성형 AI와 SaaS 서비스 사용이 R&D 망에서 허용됐다. 3계층 VPC 설계, AI 도구 통합, 아티팩트 이전 파이프라인 등 실무 구현 사례를 포함한다.

    #aws#network-security#compliance+2