大規模インフラストラクチャのセキュリティ確保: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での出力付きプランニング、および特定のコメントによってトリガーされる意図的な適用が含まれます。このアプローチは、統一された監査、インスタントなシステムパッチ、および中央集権化されたリソースメトリクスなどのメリットを提供します。