GKE クラスターで動作するアプリケーションが Cloud SQL に接続する必要があります。最も安全にデータベース認証情報を提供する方法はどれですか?
- A. データベースの認証情報をコンテナイメージに埋め込む
- B. データベースの認証情報を ConfigMap に保存して Pod からマウントする
- C. データベースのパスワードを環境変数として Pod の spec に直接記述する
- D. Cloud SQL Auth Proxy をサイドカーコンテナとして使用し、Workload Identity でサービスアカウントを紐付ける
解答と解説を見る
正解: D
Cloud SQL Auth Proxy を Pod のサイドカーコンテナとして実行し、Workload Identity を使って GKE の Kubernetes Service Account と Google Cloud の Service Account を紐付ける方法が最もセキュアです。アプリはサイドカー経由でデータベースに接続し、パスワード不要で IAM 認証が使用されます。秘密情報がコードやマニフェストに残りません。環境変数への直接記述は Kubernetes API を読める人が全員パスワードを確認できてしまいます。ConfigMap は暗号化されておらず認証情報の保存に不適切です(Secret を使うべきですが、それでも Workload Identity の方が安全です)。コンテナイメージへの埋め込みはセキュリティ上の最悪の選択です。
📚 関連サービスの解説: Cloud SQL