대규모 조직의 IaC 관리는 분산된 멀티 리포지토리 환경에서 보안 및 물류 문제 발생 가능성이 높아 보안 강화된 프로비저너 파이프라인(RPP) 도입 필요성 대두
Terraform 실행 엔진(Terraform Execution Engine)으로 GitHub Actions 기반의 중앙 집중식 실행 모델(Centralized Execution Model)을 통해 보안 및 규정 준수 강화
이중 통제(Dual Controls), 역할 체이닝(Role-Chaining), 워크스페이스 경로 강제(Path-to-Workspace Enforcement) 등 엄격한 보안 장치로 AWS 인프라 변경 관리의 안전성 확보
Pinterest의 리소스 프로비저너 파이프라인(RPP)은 중앙 집중식 실행 모델(Centralized Execution Model)을 채택하여 여러 팀에 분산된 Terraform 코드 관리에 대한 통제력을 강화함.
워크플로우 호출(Workflow Invocation): PR 생성, 업데이트, 댓글 등의 특정 이벤트에 의해 파이프라인이 자동으로 트리거됨.
중앙 집중식 복합 액션(Centralized Composite Actions): GitHub Actions를 통해 PR에 직접 작동하는 핵심 로직을 중앙에서 관리함.
워크스페이스 분할(Workspace Splitting): 단일 PR이 여러 워크스페이스에 영향을 미칠 경우, 각 워크스페이스별로 계획(plan) 또는 적용(apply) 워크플로우를 독립적으로 실행하여 영향을 격리함.
이러한 접근 방식은 통합 감사(Unified Auditing) 및 시스템 전체 패치(Instant Systemic Patches) 배포를 용이하게 하여 운영 효율성을 크게 향상시킴.
RPP는 CI/CD 시스템에 광범위한 권한을 부여하는 보안 위험을 완화하기 위해 최소 권한 원칙(Principle of Least Privilege)을 엄격히 준수함.
RPPActionsRole: 모든 워크플로우는 먼저 GitHub OpenID Connect(OIDC) 토큰 검증을 통해 인증된 중앙 집중식 ID인 RPPActionsRole을 가정(assume)함.
워크스페이스 속성 결정(Workspace Property Determination): 파이프라인은 중앙 설정 파일을 참조하여 워크스페이스별 허용된 리포지토리, 경로, 팀, 실행 역할 등을 매핑함.
팀 IAM 역할로 다운스콥(Down-scoping to Team IAM Role): 검증 통과 후, RPPActionsRole은 해당 팀에 할당된 세분화된 IAM 역할(Down-scoped Team IAM Role)을 가정하여 변경 작업을 수행함.
이러한 워크스페이스-경로-역할 매핑(Workspace-Path-Role Mapping)은 특정 코드 경로가 특정 워크스페이스에만 영향을 미치도록 보장하며, 필요한 최소한의 권한만 사용하도록 함.
RPP 파이프라인은 Terraform 코드의 백엔드 유효성 검사(Backend Validation)를 통해 상태 파일(state file)의 무결성을 보장함.
S3 상태 백엔드 및 KMS 키 검증: 각 워크스페이스는 명시적으로 매핑된 S3 버킷과 KMS 키만 참조하도록 강제됨. 예를 들어, `workspace1`의 코드는 `workspace2`의 백엔드 구성을 가리킬 수 없음.
코드 경로와 워크스페이스 매핑: 루트 모듈 코드 경로와 실제 워크스페이스 간의 일치를 확인하여, 개발자가 실수로 코드를 복사하거나 백엔드 구성을 잘못 변경하는 경우 즉시 빌드를 실패시킴.
이러한 엄격한 검증 로직은 의도하지 않은 구성 변경(Accidental Configuration Changes)이나 악의적인 변경 시도(Malicious Alterations)를 효과적으로 차단하여 인프라의 안정성을 높임.
유효성 검사를 통과한 후, RPP는 Terraform 계획(plan) 및 적용(apply) 단계에서도 여러 보안 계층을 적용함.
린팅 및 계획(Linting & Planning): `terraform fmt`를 실행하여 코드 형식 오류를 사전 방지하고, `terraform plan` 결과를 PR 코멘트로 게시하여 변경 사항을 명확히 함.
이중 통제(Dual Controls): 코드 리뷰어의 승인과 PR에 대한 명시적인 적용 트리거 코멘트(`apply` 워크플로우)를 통해 인적 검토 및 의도적 승인을 거치도록 함.
세분화된 제어(Granular Control): Terraform 구성 코드 자체에서 역할을 지정하여 엔지니어링 팀이 역할-워크스페이스 매핑(Role-to-Workspace Mapping)을 정확하게 제어하도록 함.
이러한 절차는 우발적 또는 악의적 구성 오류를 방지하고, 모든 인프라 변경 사항에 대한 가시성(Visibility)을 극대화함.
RPP는 접근 관리 외에도 정적 분석(Static Analysis) 및 로컬 테스트(Local Testing)를 통해 인프라 보안을 더욱 강화함.
취약점 스캐닝(Vulnerability Scanning): Semgrep 규칙과 AI 통합을 통해 PR 단계에서 안전하지 않은 인프라 구성을 사전에 차단함.
사전 배포 로컬 테스트(Pre-Deployment Local Testing): LocalStack을 사용하여 실제 AWS 환경에 배포하기 전에 복잡한 아키텍처를 안전하게 테스트하고 미리 볼 수 있음.
이러한 중앙 집중식 워크플로우는 통합 감사(Unified Auditing)를 가능하게 하고, 광범위한 취약점 발생 시 단일 지점에서 신속한 패치 배포를 지원함. 또한, 경로-워크스페이스 강제(Path-to-Workspace Enforcement) 및 정책/태그 강제(Policy and Tag Enforcement)와 같은 기능은 향후 확장성을 제공함.