Cloud SQL PostgreSQLでチェックポイントログを有効化する手順

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、Cloud SQLのPostgreSQLインスタンスでログチェックポイント機能が無効化されている問題について、リスクと対策を解説します。

ポリシーの説明
PostgreSQLにおけるlog_checkpointsは、データベースのチェックポイント操作に関する詳細情報をログに記録する重要な設定パラメータです。チェックポイントとは、データベースがメモリ上の変更内容(WALバッファやダーティページ)をディスクに書き込む処理のことで、PostgreSQLのクラッシュリカバリ機能の中核を担っています。
チェックポイントは以下のタイミングで発生します:
- checkpoint_timeoutパラメータで指定された時間が経過した時(デフォルト5分)
- max_wal_sizeに到達した時
- データベースがシャットダウンされる時
- ベースバックアップの開始時
- CHECKPOINTコマンドが実行された時
- pg_start_backup()関数が実行された時
- CREATE DATABASEコマンドの実行時
log_checkpointsを有効にすると、以下の情報がPostgreSQLログに記録されます:
- チェックポイントの開始時刻と終了時刻
- 書き込まれたバッファ数と全バッファに対する割合
- 追加、削除、リサイクルされたWALファイル数
- 書き込みフェーズと同期フェーズにかかった時間
- 同期したファイル数と最長同期時間
- チェックポイントの完了にかかった総時間
- WALの距離と推定値
これらの情報は、データベースの性能問題の診断、I/Oボトルネックの特定、そしてデータベースの整合性監視において極めて重要な役割を果たします。特に本番環境では、チェックポイントの頻度や所要時間を監視することで、データベースの健全性を継続的に評価し、パフォーマンスの劣化を早期に発見することができます。
修復方法
コンソールでの修復手順
Google Cloud コンソールを使用して、PostgreSQLインスタンスでlog_checkpointsを有効化します。
- Google Cloud Consoleにログインし、Cloud SQLに遷移する ブラウザでGoogle Cloud Console(https://console.cloud.google.com)にアクセスし、左側のナビゲーションメニューから「SQL」を選択

- 対象のPostgreSQLインスタンスを選択
インスタンス一覧から、log_checkpointsを有効化したいPostgreSQLインスタンスをクリックします。
- インスタンスの編集画面を開く インスタンスの詳細ページで、上部にある「編集」ボタンをクリックします。

- データベースフラグの設定セクションを展開 編集画面を下にスクロールし、「設定オプションを表示」をクリックした後、「フラグ」セクションを見つけて展開します。
- log_checkpointsフラグを追加して有効化
「+ フラグを追加」ボタンをクリックし、ドロップダウンから「log_checkpoints」を選択します。値を「on」に設定します。
- 変更を保存 ページ下部の「保存」ボタンをクリックして変更を適用します。インスタンスの再起動が必要な場合は、自動的に実行されます。
- 設定の確認 インスタンスの詳細ページに戻り、「データベースフラグ」セクションでlog_checkpointsが「on」に設定されていることを確認します。
Terraformでの修復手順
PostgreSQLインスタンスでlog_checkpointsを有効にするTerraformコードと、主要な修正ポイントを説明します。
# Cloud SQL PostgreSQL インスタンスの設定
resource "google_sql_database_instance" "postgresql_instance" {
>>> Skip
settings {
# データベースフラグの設定
database_flags {
name = "log_checkpoints"
value = "on" # チェックポイントログを有効化
}
}
}
最後に
この記事では、Cloud SQLのPostgreSQLインスタンスでログチェックポイント機能を有効化する方法について、リスクと対策を解説しました。
log_checkpointsを有効化することで、データベースの性能問題やI/Oボトルネックを早期に発見し、データベースの健全性を維持できます。特に本番環境では、チェックポイントの監視は不可欠です。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。