【正解】D
【0からの解説】
①前提知識
Cloud SQL へのアクセスでエラーになる原因はさまざまです。たとえば、IAM 権限の不足(例: Cloud SQL クライアント ロール roles/cloudsql.client がない、IAM データベース認証のユーザーが未登録)、ネットワーク到達性(承認済みネットワーク、プライベート IP、ファイアウォール)、データベース ユーザー / パスワードの誤り、Cloud SQL Auth Proxy の設定ミスなどです。原因によってエラー メッセージの内容(PERMISSION_DENIED、接続タイムアウト、認証失敗など)が異なります。
②要件の整理
・ユーザー B はアクセスできる → インスタンス自体は稼働しており、ユーザー A 固有の問題である可能性が高い。
・「Google 推奨のプラクティスに従い」「最初に」何をすべきか → 当て推量で設定を調べ回る前に、問題を切り分ける最初の手がかりを得ることが重要。
③正解 D の理由
トラブルシューティングの基本は、まず事実(症状)を正確に把握することです。エラー メッセージには「権限が拒否された(どの権限か)」「接続がタイムアウトした」「認証に失敗した」など、原因の種類を直接示す情報が含まれており、次に調べるべき対象(IAM か、ネットワークか、DB ユーザーか)を絞り込めます。Google Cloud のトラブルシューティング ガイドも、表示されたエラー メッセージを起点に原因を調べる構成になっており、IAM の権限問題であれば Policy Troubleshooter などで続けて調査できます。
【誤りの選択肢】
A:ファイアウォールが原因の可能性はありますが、エラーの内容を見ないうちにネットワークだけを疑うのは当て推量です。エラーが権限拒否であれば調べても無駄になります。エラー メッセージを確認したうえで、接続系のエラーであれば次に行う手順です。
B:プロジェクト オーナーは非常に広い権限を持つ基本ロールで、Cloud SQL へのアクセスに必要ではありません。最小権限の原則に反しており、「オーナー ロールがあるか」を確認すること自体が誤った方向の調査です(必要なのは roles/cloudsql.client などの適切な事前定義ロール)。
C:最近の構成変更(監査ログなど)の確認は有用な調査手段ですが、「最初に」行うことではありません。まずエラー メッセージで原因の種類を特定してから、権限関連と分かった場合に変更履歴を追うのが効率的な順序です。
【参考】
ポリシーのトラブルシューティング | Identity and Access Management (IAM)ロールと権限 | Cloud SQL for MySQL