模擬問題集 › GCP-PCA › 練習問題 4

GCP-PCA 練習問題 4|技術プロセスとビジネス プロセスの分析と最適化

Professional Cloud Architect・無料公開(全 200 問中 15 問を無料公開中)

問題
あなたは、Terraform と Cloud Build を使用して、組織向けの一元化された自動インフラストラクチャ デプロイ プロセスを設計しています。セキュリティ チームは、あらゆる CI/CD パイプラインで有効期間の長い静的なサービス アカウント キーを使用することを禁止しています。また、開発者はインフラストラクチャの変更をピアレビューのために提案することはできますが、本番プロジェクトに変更を直接適用する権限を持ってはなりません。セキュリティ チームの要件を満たし、適切なガバナンスを確保する、Terraform の変更を適用するための安全で自動化されたワークフローを設計する必要があります。 どうすればよいですか?

選択肢と解説

  • 1
    Cloud Build パイプラインがサービス アカウントの権限借用を使用するように構成する。プル リクエストがマージされたときに terraform apply を自動的に実行するトリガーを設定する。
  • ✓
    Cloud Build でサービス アカウントの権限借用を使用する。プル リクエストに対して terraform plan を実行するようにパイプラインを構成し、terraform apply を実行する前に手動承認を必須にする。
  • 3
    パイプラインは terraform plan のみを実行するように構成する。プル リクエストが承認された後、権限を持つ開発者がセキュリティ保護されたワークステーションから terraform apply を実行する。
  • 4
    特権を持つサービス アカウントを作成し、その JSON キーを Secret Manager に保存する。Cloud Build パイプラインが実行時にこのキーを取得して Terraform を認証するように構成する。

解説

【正解】B

【0からの解説】
① 前提知識
・Terraform はインフラストラクチャをコードで定義するツール(IaC)です。terraform plan は「どのリソースがどう変わるか」という変更内容をプレビューするだけのコマンド、terraform apply は実際に変更を適用するコマンドです。
・Cloud Build は Google Cloud のマネージド CI/CD サービスです。Git リポジトリのプル リクエストやブランチへの push をきっかけにトリガーでビルドを起動できます。トリガーには「承認を必須にする」設定があり、承認者(Cloud Build 承認者ロール roles/cloudbuild.builds.approver を持つユーザー)が承認するまでビルドの実行を保留できます。
・サービス アカウントの権限借用(impersonation): あるプリンシパル(ここでは Cloud Build のサービス アカウント)が、別のサービス アカウントの有効期間の短いアクセス トークンを発行して、そのサービス アカウントとして操作する仕組みです。キー ファイルを作成・保管する必要がなく、Terraform の google プロバイダでも impersonate_service_account として使えます。

② 要件と制約語の整理
・有効期間の長い静的なサービス アカウント キーの禁止 → キーレスの認証が必要。
・開発者は変更を提案(ピアレビュー)できるが、本番に直接適用する権限を持たない → 適用はパイプラインだけが行い、職務分離を徹底する。
・安全で自動化され、適切なガバナンスが確保されていること → 人手による操作ではなく自動化しつつ、適用前に統制ポイントを設ける。

③ 正解 B が要件をどう満たすか
・Cloud Build は自身のサービス アカウントで実行され、本番プロジェクトへの権限を持つデプロイ用サービス アカウントを権限借用して短期トークンで Terraform を実行します。静的キーは一切存在しません。
・プル リクエスト時に terraform plan を自動実行し、その結果をレビュアーが確認できるようにすることで、ピアレビューの質が上がります。
・terraform apply の前に手動承認を必須にすることで、権限のある承認者が確認するまで本番への変更は適用されません。開発者には本番プロジェクトの IAM 権限も承認者ロールも付与しないため、開発者が自分で本番に変更を適用することはできません。Google が推奨する Terraform・Cloud Build・GitOps によるインフラ管理の考え方に、承認ゲートによるガバナンスを加えた構成です。

【誤りの選択肢】
A:権限借用によってキーレスにしている点は正しいものの、マージと同時に terraform apply が自動実行されるため、本番適用の前に明示的な統制ポイントがありません。マージできる開発者は実質的に本番への変更を適用できることになり、plan の結果を確認せずにマージされる危険もあります。B の承認ゲートと比べてガバナンスが弱くなります。
C:本番適用が人手に戻るため「自動化されたワークフロー」の要件に反します。さらに、apply を実行する開発者に本番への権限を与えることになり、「開発者は本番に直接適用する権限を持たない」というルールと矛盾します。ワークステーションごとの環境差異や認証情報の管理、操作の追跡性の面でも、パイプラインによる一元的な適用より劣ります。
D:JSON キーを Secret Manager に保存しても、有効期間の長い静的なサービス アカウント キーを使うことに変わりはなく、セキュリティ チームの禁止事項に正面から違反します。キーの漏えいやローテーション管理のリスクも残ります。

【参考】
Terraform、Cloud Build、GitOps を使用してインフラストラクチャをコードとして管理する
サービス アカウントの権限借用 | Identity and Access Management (IAM)
ビルドトリガーの作成と管理 | Cloud Build
← 練習問題 3練習問題 5 →
GCP-PCA の模擬問題集は全 200 問

本番形式の練習テスト 4 回を、試験モード/演習モードで受験できます。 全問に解説付き、ドメイン別の弱点分析にも対応。模試プラン(月額 ¥980)からご利用いただけます。

GCP-PCA の模試を受ける料金プランを見る

GCP-PCA の無料公開問題

問題 1問題 2問題 3問題 4問題 5問題 6問題 7問題 8問題 9問題 10問題 11問題 12問題 13問題 14問題 15