대규모 인프라 보안: Pinterest의 리소스 프로비저너 파이프라인(RPP) 소개
Pinterest와 같이 크고 분산된 조직에서 Infrastructure as Code를 관리하는 것은 상당한 보안 및 물류상의 난관을 제시합니다. 이를 해결하기 위해 Pinterest는 독점적인 Terraform 실행 엔진인 Resource Provisioner Pipeline(RPP)을 개발했습니다. RPP는 여러 리포지토리 설정 내에서 중요 및 비중요 인프라 변경 사항 모두를 안전하게 관리합니다. 이 시스템은 이중 제어, 중앙 집중식 GitHub Actions 및 안전한 역할 체이닝을 통해 글로벌 AWS 운영에 대한 규정 준수와 강력한 보안을 제공합니다. RPP는 수백 개의 Terraform 워크스페이스를 관리하며, 보안 정책, 네트워킹 및 컴퓨팅을 포함한 수만 개의 AWS 리소스를 제어합니다. RPP GitHub 워크플로는 PR 이벤트에 의해 트리거되는 중앙 집중식 실행 모델에서 작동합니다. 이는 복합 GitHub Actions를 사용하고 각 워크스페이스에 대한 계획을 독립적으로 실행하여 워크스페이스 영향을 격리합니다. 이중 제어는 코드 검토자의 승인을 요구하는 필수적인 인간 검토 계층을 추가합니다. 최소 권한을 시행하기 위해 RPP는 안전한 역할 체이닝을 사용하여 엄격한 워크스페이스-경로-역할 매핑을 구현합니다. 프로세스는 GitHub OIDC를 통해 인증된 중앙 집중식 RPPActionsRole을 가정하는 것으로 시작됩니다. 그런 다음 워크스페이스 속성을 결정하고 허용된 리포지토리, 경로 및 실행 역할에 매핑합니다. 중요한 백엔드 유효성 검사는 코드 경로가 지정된 워크스페이스에 대해 올바른 S3 상태 백엔드 및 KMS 키를 엄격하게 참조하도록 보장합니다. 유효성 검사가 통과하면 RPPActionsRole은 최소 권한을 보장하는 축소된 팀 IAM 역할을 가정합니다. 배포 프로세스에는 린팅, PR에 대한 출력과 함께 계획, 그리고 특정 주석에 의해 트리거되는 의도적인 적용이 포함됩니다. 이 접근 방식은 통합 감사, 즉각적인 시스템 패치 및 중앙 집중식 리소스 메트릭과 같은 이점을 제공합니다.