🐘
Cloud SQL for PostgreSQL 18 + IAM認証のセットアップ完全ガイド
はじめに
この記事では、Cloud SQL for PostgreSQL 18のセットアップから、Google Workspace GroupsによるIAM認証の設定までを実践した記録です。本番環境を想定したセキュアな構成を目指しました。
タスク0: Private Service Accessの設定
VPCネットワークの確認
# デフォルトVPC確認
gcloud compute networks list
# なければ作成
gcloud compute networks create default --subnet-mode=auto
Private Service Accessの設定
# IPアドレス範囲を予約
gcloud compute addresses create google-managed-services-default \
--global \
--purpose=VPC_PEERING \
--prefix-length=16 \
--network=default
# VPCピアリング接続を作成
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default \
--network=default
確認
# VPCピアリング確認
gcloud services vpc-peerings list \
--network=default \
--service=servicenetworking.googleapis.com
タスク1: Cloud SQL API有効化
まずはCloud SQL Admin APIを有効化します。
# Cloud SQL Admin API有効化
gcloud services enable sqladmin.googleapis.com
# 確認
gcloud services list --enabled | grep sqladmin
タスク2: PostgreSQL 18インスタンス作成
gcloud sql instances create [db-instance-name] \
--database-version=POSTGRES_18 \ # バージョン指定
--tier=db-f1-micro \ # ティアの指定(db-f1-microは開発環境向けの最小構成)
--edition=ENTERPRISE \ # エディションの指定 ENTERPRISE or ENTERPRISE_PLUS
--region=asia-northeast1 \ # リージョンの指定(asia-northeast1はTokyoリージョン)
--network=default \ # ネットワークの指定
--no-assign-ip \ # パブリックIPを割り当てない
--root-password=[YOUR_PASSWORD] # DBのadminユーザのパスワードを指定
作成結果:
NAME DATABASE_VERSION LOCATION TIER PRIVATE_ADDRESS STATUS
[db-instance-name] POSTGRES_18 asia-northeast1-b db-f1-micro 10.x.x.x RUNNABLE
TIPS
editionを指定しないと作成できなかった
タスク3: 初期データベース作成
# データベース作成
gcloud sql databases create myapp \
--instance=[db-instance-name]
# 確認
gcloud sql databases list --instance=[db-instance-name]
結果:
NAME CHARSET COLLATION
postgres UTF8 en_US.UTF8
myapp UTF8 en_US.UTF8
タスク4: PostgreSQL 18の動作確認
Cloud SQL Studioで接続し、PostgreSQL 18の新機能を確認しました。
-- バージョン確認
SELECT version();
-- PostgreSQL 18.0 on x86_64-pc-linux-gnu
-- uuidv7()の動作確認
SELECT gen_random_uuid() AS uuid_v4, uuidv7() AS uuid_v7;
タスク5: IAM認証設定
Google Workspace Groupsでセキュリティグループ作成
本番環境を想定し、個人アカウントではなくGoogle Workspace Groupsを使用します。
作成手順:
- Google Workspace Admin Console(https://admin.google.com)にアクセス
- 「ディレクトリ」→「グループ」→「グループを作成」
- 以下の設定で作成
Group name: Developers
Group email: developers@example.com
Description: 開発チーム - Cloud SQLアクセス権限
Access type: Restricted(重要)
Who can join: Only invited users(重要)
Group labels: Security(チェック必須)
IAM認証の有効化
gcloud sql instances patch [db-instance-name] \
--database-flags=cloudsql.iam_authentication=on
グループをCloud SQLユーザーとして追加
gcloud sql users create developers@example.com \
--instance=[db-instance-name] \
--type=CLOUD_IAM_GROUP
IAM認証でログイン
Cloud SQL Studioで以下の手順でログイン:
- Cloud SQL Studioを開く
- 「新しい接続」
- 認証方法: 「IAM認証」を選択
-
データベース:
myapp
- 「接続」
接続確認:
SELECT current_user;
-- user@example.com
グループメンバー(user@example.com
)として接続できました!
動作確認
-- テスト用テーブル作成
CREATE TABLE test_table (
id SERIAL PRIMARY KEY,
name TEXT
);
-- 確認
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
-- test_table
-- クリーンアップ
DROP TABLE test_table;
コスト管理
開発時の節約方法
使わない時はインスタンスを停止して課金を抑えましょう。
# インスタンス停止
gcloud sql instances patch [db-instance-name] \
--activation-policy=NEVER
# インスタンス再開
gcloud sql instances patch [db-instance-name] \
--activation-policy=ALWAYS
まとめ
Cloud SQL for PostgreSQL 18のセットアップと、本番環境を想定したIAM認証の設定を完了しました。
達成したこと:
- ✅ PostgreSQL 18インスタンス作成(ENTERPRISE edition)
- ✅ uuidv7()など新機能の動作確認
- ✅ Google Workspace Groupsでセキュリティグループ作成
- ✅ IAM認証によるCloud SQL Studioへのログイン
- ✅ データベース操作の動作確認
次回はローカル開発環境からの接続と、本格的なスキーマ設計に進みます。
Discussion