#DevOps

대규모 인프라 보안 확보: 핀터레스트의 리소스 프로비저너 파이프라인(RPP) 도입기

대규모 인프라 보안 확보: 핀터레스트의 리소스 프로비저너 파이프라인(RPP) 도입기
01

Summary

수만 개의 AWS 리소스를 안전하게! 핀터레스트가 테라폼 인프라를 보호하는 영리한 방법

GitHub Actions와 AWS 역할 체이닝을 활용해 최소 권한 원칙을 완벽히 구현한 RPP 아키텍처 대공개

이 아티클은 핀터레스트가 대규모 인프라 변경을 안전하게 처리하기 위해 자체 개발한 테라폼 실행 엔진 RPP(Resource Provisioner Pipeline)의 구조를 다룹니다. OIDC 연동을 통한 이중 제어 및 역할 분할 기법을 활용하여 각 팀에 필요한 최소한의 권한만 부여하는 방법을 제시합니다. 다중 리포지토리 환경에서 단일 진실 원천(Single Source of Truth)을 통해 보안성과 일관성을 확보한 아키텍처 설계를 엿볼 수 있습니다.

  • 01GitHub OIDC 토큰 검증을 활용하여 오직 승인된 워크플로우만 중앙 RPPActionsRole을 획득하도록 제한
  • 02중앙 설정 파일을 기반으로 테라폼 워크스페이스, 저장소 경로, 전용 IAM 역할을 1:1로 엄격하게 매핑 및 검증
  • 03S3 백엔드 및 KMS 키 검증 로직을 도입해 개발자의 설정 복사 오류로 인한 엉뚱한 워크스페이스 상태 덮어쓰기 방지
  • 04Semgrep 커스텀 규칙 및 LocalStack을 활용한 배포 전 로컬 테스트 단계 통합으로 인프라 신뢰성 극대화

RECOMMENDATION

다중 리포지토리 환경에서 깃허브 워크플로우 기반으로 테라폼을 운영하며 더 강력한 보안 가드레일과 최소 권한 제어를 도입하려는 인프라 보안 및 DevOps 엔지니어에게 적극 추천합니다.

The Problem

분산된 다중 리포지토리 아키텍처 환경에서 대규모로 IaC(Infrastructure as Code)를 관리할 때, 광범위한 CI/CD 권한 부여로 인한 보안 취약성과 일관성 없는 제어 등의 관리적 한계가 존재했습니다.

The Solution

깃허브 OIDC 기반의 안전한 역할 체이닝(Role-Chaining), 중앙 집중식 GitHub Actions 실행 모델, 그리고 작업 공간 경로와 역할을 엄격히 매핑하는 자체 테라폼 실행 엔진인 RPP(Resource Provisioner Pipeline)를 구축했습니다.

The Result

수만 개의 클라우드 리소스를 관리하는 수백 개의 테라폼 워크스페이스에 대한 보안 가드레일을 구축하였으며, 전사적 감사 일원화, 즉각적인 취약점 패치 및 Semgrep 기반의 사전 취약점 검정을 실현했습니다.

Trade-off

마이그레이션 과도기에서 기존 레거시 다중 리포지토리 구조를 지원하기 위해 중앙 소스 파일의 매핑 정보를 지속적으로 유지보수해야 하는 관리적 오버헤드가 존재합니다.

03

Key Concepts

Concept · 01

역할 체이닝 (Role-Chaining)

하나의 IAM 역할이 다른 IAM 역할을 위임받아 단계적으로 권한을 축소해 나가는 보안 기법입니다. 이를 통해 초기 광범위한 권한을 가진 주체가 최종 검증을 거쳐 특정 작업에 필요한 최소한의 권한만 가진 임시 역할을 획득하게 됩니다.

  • RPPActionsRole이 검증 과정을 거쳐 각 팀 전용의 하향 조정된 team_iam_role로 전환하도록 설계됨
Concept · 02

OIDC 연동 (OpenID Connect Integration)

외부 아이덴티티 제공자(IdP)와 클라우드 공급자 간에 정적 자격 증명(Access Key) 없이 안전하게 인증 정보를 교환하는 표준 프로토콜입니다. 자격 증명 유출 리스크를 완전히 제거할 수 있어 현대적인 CI/CD 환경에서 널리 쓰입니다.

  • GitHub Actions 워크플로우가 AWS 자격 증명 없이 OIDC 토큰을 활용해 안전하게 RPPActionsRole을 가질 수 있도록 보장함
Concept · 03

이중 제어 (Dual Controls)

민감한 인프라 변경이나 코드 승인 시 최소 두 명 이상의 검토자가 참여하여 실수를 방지하고 악의적인 행위를 차단하는 프로세스입니다.

  • 테라폼 플랜 결과 확인 후, 레포지토리의 승인된 리뷰어 서명을 받고 명시적인 PR 댓글을 통해 최종 배포가 트리거되도록 강제함