【正解】C
【0からの解説】
①前提知識
・Infrastructure as Code(IaC): インフラ構成をコードで定義し、レビュー・再利用・自動適用できるようにする手法です。Google Cloud では Terraform が代表的なツールとして推奨されています。
・Terraform モジュール: 複数のリソース定義をひとまとめにして入力変数で再利用できる部品です。たとえば「ログ設定・暗号化・ラベル・ネットワーク設定などの社内ルールを組み込んだ VM / バケット / VPC のモジュール」を用意すれば、利用者は必要なパラメータを渡すだけで準拠したリソースを作れます。Google も Cloud Foundation Toolkit の Terraform ブループリント(モジュール)を公開しています。
②要件の整理
・会社の必須プラクティスをすべてのワークロードに適用したい
・各チームが「独立して」デプロイできる
・各チームが必須プラクティスの「実装の詳細をすべて知らなくても」よい → 詳細を抽象化して隠す仕組みが必要
③正解 C の理由
必須プラクティスを実装済みの Terraform モジュールを提供すれば、プラクティスの実装の詳細はモジュール内部にカプセル化され、チームはモジュールを呼び出すだけで準拠したインフラを自分たちのタイミングで独立してデプロイできます。コードとして再利用・バージョン管理・レビューができ、全チームで一貫した構成になります。
【誤りの選択肢】
A:組織のポリシーは「してはいけないこと」を制限するガードレールとしては有効ですが、制約に違反しない正しい構成の作り方までは教えてくれません。コンソールで手作業でプロビジョニングするとチームは結局プラクティスの詳細を知る必要があり、エラーを受けて試行錯誤することになります。手作業のため再現性・一貫性も確保できません。
B:プロジェクト編集者は広範な権限を持つ基本ロールで、最小権限の原則に反します。また gcloud CLI で個別にリソースを作る方法では、必須プラクティスをどう適用するかを各チームが知っている必要があり、要件を満たしません。
D:トレーニングでは、各チームが実装の詳細をすべて理解して自分で実装する必要があり、「詳細を知らなくてもデプロイできる」という要件と正反対です。チームごとの実装のばらつきや準拠漏れも防げません。
【参考】
再利用可能なモジュールのベスト プラクティス | TerraformGoogle Cloud の Terraform ブループリントとモジュール