Cloud SQL PostgreSQLのlog_statement設定 – DDL監査ログ有効化ガイド

タイトル: Cloud SQL PostgreSQLのlog_statement設定 – DDL監査ログ有効化ガイド カテゴリ: Cloud SQL
このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、Cloud SQL PostgreSQLインスタンスのlog_statementパラメータ設定について、リスクと対策を解説します。

ポリシーの説明
Cloud SQL PostgreSQLインスタンスでは、データベースの監査とトラブルシューティングのために、実行されるSQLステートメントをログに記録することが重要です。 log_statementパラメータを適切に設定することで、DDL(データ定義言語)ステートメントなどの重要な操作を追跡し、スキーマ変更やセキュリティイベントの監査証跡を残すことができます。
log_statementパラメータが無効化されている場合、データベーススキーマの変更履歴が記録されず、誰がいつどのような変更を行ったかを追跡できません。よって、内部脅威の検出困難になり、特権ユーザーによる不正な操作や、意図しないスキーマ変更を検出が不可能となってしまいます。
修復方法
コンソールでの修復手順
Google Cloud コンソールを使用して、Cloud SQL PostgreSQLインスタンスのlog_statementパラメータを設定します。
- Google Cloud コンソールにアクセス
- Cloud SQL インスタンスページに移動します
- 対象のPostgreSQLインスタンスを選択
- インスタンス一覧から、設定を変更したいPostgreSQLインスタンスをクリックします
- 構成の編集
- インスタンスの詳細ページで、「編集」ボタンをクリックします
- データベースフラグの設定
- 「構成オプション」セクションを展開します
- 「データベースフラグ」のセクションを見つけます
- 「+ フラグを追加」をクリックします
- log_statementフラグの設定
- フラグ名のドロップダウンから「log_statement」を選択します
- 値として「ddl」を選択します(データ定義言語のステートメントのみを記録)
- 他のオプション:
none
: ログを記録しない(デフォルト)ddl
: DDLステートメント(CREATE、ALTER、DROP、TRUNCATE、GRANT、REVOKE等)を記録(推奨)mod
: データを変更するステートメント(INSERT、UPDATE、DELETE、TRUNCATE、COPY、およびDDL)を記録all
: すべてのステートメントを記録(SELECT含む、パフォーマンスへの影響に注意)
Terraformでの修復手順
Cloud SQL PostgreSQLインスタンスでlog_statementパラメータを設定するTerraformコードと、主要な修正ポイントを説明します。
# Cloud SQL PostgreSQL インスタンスの設定
resource "google_sql_database_instance" "postgres_instance" {
>>>> skip
# データベースフラグ設定 - log_statementを追加
database_flags {
name = "log_statement"
value = "ddl" # DDLステートメントを記録
}
}
ベストプラクティス
log_statementの推奨設定
- 開発環境:
all
またはmod
(デバッグとトラブルシューティングのため) - ステージング環境:
mod
(本番に近い動作確認のため) - 本番環境:
ddl
(スキーマ変更の監査に重点を置く) - 高セキュリティ環境: pgAuditと併用し、
pgaudit.log='all'
で全操作を記録
パフォーマンスへの影響を最小化
all
設定は大量のログを生成するため、本番環境では避ける(I/O負荷が10-20%増加する可能性)- 特定のユーザーやアプリケーションのみをログ記録する場合は、pgAuditの使用を検討
- Cloud Loggingとの連携でログの長期保存と分析を実現
log_min_duration_statement
と組み合わせて、遅いクエリのみを記録することも可能- ログローテーションの設定を適切に行い、ディスク容量の圧迫を防ぐ
監査要件への対応
- DDL操作の記録は多くのコンプライアンス要件で必須
- log_statementとpgAuditを組み合わせることで、より詳細な監査証跡を実現
- 定期的なログレビューとアラート設定で異常な操作を早期発見
- ログの保存期間は、適用される規制に応じて設定(例:PCI DSSは1年、HIPAAは6年)
- Cloud Audit Logsと統合して、データベースログとインフラストラクチャログを一元管理
最後に
この記事では、Cloud SQL PostgreSQLインスタンスのlog_statementパラメータ設定について、リスクと対策を解説しました。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。