【PCD】WEB問題集:GCPサービスとの統合編

WEB問題集

PCD#351(integrating)
Cloud Run サービスから Cloud SQL for PostgreSQL に Private IP 経由でセキュアに接続したいと考えています。サービスアカウントベースの認証情報ハンドリングと暗号化を Google が自動管理する方法を選びたいです。どの構成が最適ですか?

正解:A

正解の根拠

Cloud Run から Cloud SQL に到達する推奨パターンは、Direct VPC Egress で VPC に直接接続し、Cloud SQL Auth Proxy ライブラリ経由で Private IP に接続する構成です。これにより、TLS と IAM 認証情報の取り扱いを Google 管理ライブラリに委譲できます。

接続オプション比較

方式到達経路認証情報推奨度
Direct VPC Egress + Auth ProxyVPC 内 Private IPIAM 委譲本問の正解
Serverless VPC Connector + Auth ProxyVPC 経由IAM 委譲旧来の選択肢
Public IP + Authorized Networksインターネット経由静的 IP 制限非推奨

接続コード例

// Java + JDBC + Auth Proxy library
jdbc:postgresql:///mydb?cloudSqlInstance=project:region:inst&socketFactory=com.google.cloud.sql.postgres.SocketFactory&ipTypes=PRIVATE

不正解の理由

  • B: Cloud Run のマネージド環境は egress IP が固定でないため、Authorized Networks による Public IP 制限は安定運用に向きません。
  • C: HAProxy サイドカーの自前管理は TLS と IAM の責務を増やし、Auth Proxy 利用の優位性を失います。
  • D: Serverless VPC Access コネクタ単独では Private IP 経由の Auth Proxy 認証統合が得られず、Public IP 利用も推奨されません。

参考:Cloud SQL: Connect from Cloud Run

PCD#352(integrating)
GKE 上のワークロードから Cloud SQL に接続する際、シークレット管理を簡素化しつつ短命な IAM トークンで認証する方式を検討しています。データベース側に静的パスワードを保持したくありません。どの方法が要件に合致しますか?

正解:B

正解の根拠

Cloud SQL の IAM Database Authentication は、PostgreSQL と MySQL の DB ユーザーを IAM プリンシパルに紐付け、短命なアクセストークンをパスワードとして利用する仕組みです。Workload Identity と組み合わせることで、Pod が静的鍵を持たずに認証できます。

方式比較

方式クレデンシャルローテーション監査
IAM DB Auth短命 OAuth トークン自動 (1 時間)IAM 監査ログ統合
Secret Manager + 静的 PW静的パスワード手動運用取得操作のみ監査

有効化手順

  1. Cloud SQL のフラグ cloudsql.iam_authentication を on にします
  2. IAM プリンシパルに cloudsql.instanceUser 権限を付与します
  3. DB 側で CREATE USER "sa@project.iam" WITH LOGIN を実行します
  4. クライアントは gcloud sql generate-login-token 相当のトークンをパスワードとして使用します

不正解の理由

  • A: Secret Manager は便利ですが、静的パスワードのままでは漏えい時の影響範囲が広く、短命トークンを要件とする本問の最適解にはなりません。
  • C: Service Account 鍵 JSON のマウントは長期鍵運用となり、Workload Identity の利点を放棄する設計です。
  • D: ConfigMap の暗号化配布は仕組みが複雑な割に静的パスワードへの依存が残り、要件を満たしません。

参考:Cloud SQL IAM Database Authentication

PCD#353(integrating)
Cloud SQL を利用するマイクロサービスで、ピーク時に接続が枯渇し PgBouncer 相当のコネクションプーリングを導入したいです。アプリ改修を最小限にしつつマネージドに利用したい場合、どの選択肢が適していますか?

正解:C

正解の根拠

Cloud SQL は接続数に上限があり、サーバーレスや GKE での多インスタンス運用ではコネクション枯渇が起こりやすいです。PgBouncer のトランザクションプーリングを挟むことで、多数のアプリ接続を少数の DB 接続に集約し、アプリ改修を最小限に抑えられます。

プール方式比較

方式多重化粒度注意点
Session poolingセッション単位多重化効果は限定的
Transaction poolingトランザクション単位prepared statement 制約あり
Statement poolingステートメント単位機能制約が大きい

PgBouncer 設定例

[databases]
mydb = host=127.0.0.1 port=5432 dbname=mydb

[pgbouncer]
pool_mode = transaction
max_client_conn = 2000
default_pool_size = 25

不正解の理由

  • A: Cloud SQL Auth Proxy はセキュアな接続経路を提供するもので、アプリ層のコネクションプーリング機能は持ちません。
  • B: JDBC プールの上限引き上げだけでは Cloud SQL 側の max_connections に到達し、根本解決にはなりません。
  • D: min-instances を 0 にする運用はコールドスタートを招き、ピーク時のコネクション圧を解消する手段としては不適切です。

参考:Cloud SQL Manage database connections

PCD#354(integrating)
Cloud Run gen2 のリビジョンから Cloud SQL に到達する際、Serverless VPC Connector から Direct VPC Egress に切り替える理由として、最も妥当な利点はどれですか?

正解:D

正解の根拠

Direct VPC Egress は Cloud Run の Pod に対して VPC のネットワークインターフェースを直接割り当てる方式で、Serverless VPC Connector のように中間ホップを経由しません。これによりレイテンシが減少し、コネクタの実行コストも削減できます。

方式比較

方式仕組みレイテンシコスト
Direct VPC EgressVPC NIC を直接割り当て追加コンポーネントなし
Serverless VPC Connector仲介 VM プールを経由コネクタ料金あり

利用ケース

  1. Cloud Run gen2 で Direct VPC Egress オプションを有効化します
  2. VPC とサブネットを指定し、Pod に Private IP を付与します
  3. Cloud SQL Auth Proxy ライブラリで Private IP に接続します

不正解の理由

  • A: Cloud SQL リージョン制約はネットワーク方式に関係なく存在するため、Direct VPC Egress でグローバル化はできません。
  • B: Direct VPC Egress は VPC 内 Private IP 利用を主目的とし、Public IP 経由運用への切替を促進する技術ではありません。
  • C: Auth Proxy が提供する IAM 認証と TLS の自動管理は依然として有用であり、Direct VPC Egress 単独では代替できません。

参考:Cloud Run Direct VPC Egress

PCD#355(integrating)
Cloud SQL Auth Proxy をローカル開発から本番デプロイまで一貫して使う設計を考えています。Auth Proxy が提供する主要な機能を選んでください(2 つ選択)。

(2つ選択)

正解:A, B

正解の根拠

Cloud SQL Auth Proxy は、TLS 暗号化と IAM 認可を組み合わせた安全な接続経路を提供します。クライアントは TCP/Unix Socket のローカルエンドポイントに接続するだけで、TLS の証明書管理と IAM 認可を Auth Proxy が代行します。

Auth Proxy 機能整理

機能内容
TLS 暗号化Google 提供の証明書で自動構成
IAM 認可呼び出し元の Service Account / ユーザーで認可
Private IP / Public IP 透過接続文字列でモード切替可能

起動コマンド例

cloud-sql-proxy --private-ip --port 5432 
  project:region:instance &

不正解の理由

  • C: スキーマ管理は Liquibase / Flyway などのマイグレーションツールの守備範囲であり、Auth Proxy の責務外です。
  • D: クロスリージョンレプリカは Cloud SQL 側の機能で構成するもので、Auth Proxy の経路設定とは別物です。

参考:About the Cloud SQL Auth Proxy