【正解】A
【0からの解説】
①前提知識
Compute Engine の VM の内部 IP アドレスには、エフェメラル(一時的)と静的(予約済み)の 2 種類があります。エフェメラル内部 IP は VM を削除すると解放され、再作成時に別のアドレスになる可能性があります。静的内部 IP は予約されたアドレス リソースとして保持され、VM を削除しても失われません。
Google Cloud では、使用中のエフェメラル内部 IP アドレスをそのまま静的内部 IP アドレスに「昇格(promote)」できます。この操作はアドレスを予約リソースとして登録するだけで、VM の停止や IP アドレスの変更は伴いません。
②要件の整理
・データベース VM の内部 IP をすべて静的にする。
・現在の運用を中断させない(ダウンタイムを発生させない)。
③正解の理由
A のとおり、各データベース VM が現在使っているエフェメラル内部 IP を静的アドレスに昇格すれば、IP アドレスは変わらず、VM も稼働したままで組織の要件を満たせます。
実務の手順は次のとおりです。
・対象の洗い出し:コンソールの[IP アドレス]ページの[内部 IP アドレス]タブで「タイプ」列がエフェメラルのものに絞り込むか、gcloud compute instances describe で各 VM の networkIP を確認します(gcloud compute addresses list に表示されるのは予約済みの静的アドレスだけなので、そこに出てこない VM の IP がエフェメラルです)。
・昇格:コンソールでは該当アドレスの[その他の操作]から[静的 IP アドレスに昇格]を選び、名前を付けて予約します。gcloud では gcloud compute addresses create 名前 --addresses=現在の IP --region=リージョン --subnet=サブネット を実行します。複数台分は名前とアドレスを同じ順序で並べて一度に昇格できます。
・注意点:静的内部 IP はリージョン リソースで、プロジェクトの割り当て(クォータ)の範囲内でしか予約できません。また VM を削除してもアドレスは自動では解放されないため、不要になったら手動で解放します。
なお、場面の異なる類題では「VM を削除しても同じ IP が他の VM に払い出されないようにしたい」という目的で同じ昇格操作が問われます。本問の着眼点はそれとは異なり、「既存の稼働中 VM に対して、停止を伴わずにコンプライアンス要件を満たせるか」です。昇格は VM の停止も IP の変更も伴わないため、無停止という制約に対しても A が唯一の答えになります。
【誤りの選択肢】
B:ファイアウォール ルールは通信の許可 / 拒否を制御するもので、IP アドレスの割り当て方式(エフェメラル / 静的)を変えることはできません。要件を満たしません。
C:最終的に静的 IP にはなりますが、昇格に VM の停止は不要です。不要なシャットダウンと再起動によってデータベースのダウンタイムが発生し、「運用を中断させない」という要件に反します。
D:「静的に割り当てられた IP アドレスのみを許可する」という組織のポリシーの制約は用意されておらず、仮に新規作成を制限できたとしても、既存 VM のエフェメラル IP を静的に変換することはできません。
【参考】
静的内部 IP アドレスの予約 | Virtual Private CloudIP アドレス | Virtual Private Cloud