【正解】B
【0からの解説】
「広範な権限を各ユーザーに与えずに、ユーザー自身がセルフサービスでプロビジョニングできるようにする」というのは AWS Service Catalog の中心的なユースケースです。
Service Catalog では、管理者が CloudFormation テンプレートを「製品(product)」として登録し、ポートフォリオでユーザーに公開します。ここで重要なのが「起動制約(Launch Constraint)」です。製品に既存のマネージャーのロール(EC2・Auto Scaling・CloudFormation 権限を持つロール)を起動制約として設定すると、実際のリソース作成はその制約ロールの権限で行われます。
そのため、テスターには「Service Catalog の API を使う権限」だけを与えればよく、テスター自身は EC2 や CloudFormation の直接権限を一切持ちません。これにより最小権限を保ちながらセルフサービスを実現できます。
【誤りの選択肢】
A:ユーザーにマネージャーのロールを assume させると、ポリシーで絞っても実質そのロールの権限をユーザーが直接行使できることになり、「広範な権限を付与しない」という意図が崩れます。テンプレート/リソース単位での厳密な制限も運用が複雑です。
C:ユーザーに CloudFormation と S3 の権限を直接付与すると、結局スタックが作成する EC2/Auto Scaling リソースを作る権限も必要になり、最小権限の維持が困難です。Service Catalog の起動制約のような権限分離ができません。
D:Elastic Beanstalk は Web アプリのデプロイ/管理向けのサービスで、既存の Auto Scaling アプリの CloudFormation テンプレートをそのまま「短命なテスト環境」として量産する用途には適しません。要件のセルフサービス+最小権限という観点でも Service Catalog が最適です。
【参考】
AWS Service Catalog とはService Catalog の起動制約(Launch Constraints)