【正解】D
【0からの解説】
①前提知識
・Cloud Workstations は、Google Cloud 上で管理されたクラウド開発環境を提供するサービスです。ワークステーションには Code OSS(VS Code のオープンソース版)をベースにしたブラウザ IDE が用意されており、ローカルの PC にはブラウザがあれば開発できます。
・ワークステーション上で動かしている HTTP サーバーには、Cloud Workstations のゲートウェイ経由でブラウザからアクセスできます。URL は「https://ポート番号-ワークステーションのホスト名」(例: https://3000-ワークステーション名.クラスタID.cloudworkstations.dev)の形式で、アクセスにはログインと、ワークステーションの利用権限(roles/workstations.user または workstations.workstations.use)が必要です。つまり、IAM による認証・認可で保護された経路が最初から用意されています。
・Code OSS では、アプリがポートで待ち受けを開始すると通知やポートのパネルにブラウザで開くためのリンク(プレビュー リンク)が表示され、ターミナルに表示された http://localhost:3000 を Ctrl + クリックしても同じ URL に変換されて開けます(ワークステーションが localhost をワークステーションのホスト名に書き換えます)。
②要件と制約語の整理
・ワークステーション上のポート 3000 のウェブページに、ローカル マシンからアクセスしたい。
・ファイアウォール ルールは確認済み。
・「Google 推奨のセキュリティ プラクティスに従う」。
③正解の根拠
Code OSS のプレビュー リンクを使えば、Cloud Workstations が提供する認証付きのゲートウェイ経由で、ポート 3000 のアプリにローカルのブラウザから安全にアクセスできます。パブリック IP や追加の VM は不要で、IAM の権限を持つ本人だけがアクセスでき、追加の設定もいりません。これが Google が想定する標準の方法であり、D が正解です。
【誤りの選択肢】
A:踏み台ホスト VM を用意してそこでブラウザを動かすのは、余計な VM の構築・運用・費用が発生するうえ、攻撃対象となる経路を増やします。Cloud Workstations には認証付きでポートにアクセスする仕組みが組み込まれているため、不要かつ推奨されない方法です。
B:gcloud compute start-iap-tunnel は、自分のプロジェクトにある Compute Engine VM に対して IAP の TCP 転送でトンネルを張るためのコマンドです。Cloud Workstations のワークステーション VM はサービスが管理するもので、このコマンドの対象として使う設計にはなっていません(Cloud Workstations 用には gcloud workstations start-tcp-tunnel という専用コマンドがありますが、HTTP のウェブページを見るだけなら組み込みのプレビュー リンクで十分です)。
C:パブリック IP アドレスを許可すると、ワークステーションがインターネットから到達可能になり、攻撃対象領域が広がります。プライベートな構成を保つという Google 推奨のセキュリティ プラクティスに反し、しかもウェブページへのアクセスには不要です。
【参考】
ワークステーションで実行されている HTTP サーバーに接続する | Cloud WorkstationsCloud Workstations のアーキテクチャ