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パラメータを設定します。

  1. Google Cloud コンソールにアクセス
  2. 対象のPostgreSQLインスタンスを選択
    • インスタンス一覧から、設定を変更したいPostgreSQLインスタンスをクリックします
  3. 構成の編集
    • インスタンスの詳細ページで、「編集」ボタンをクリックします
  4. データベースフラグの設定
    • 「構成オプション」セクションを展開します
    • 「データベースフラグ」のセクションを見つけます
    • 「+ フラグを追加」をクリックします
  5. 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の推奨設定

  1. 開発環境: allまたはmod(デバッグとトラブルシューティングのため)
  2. ステージング環境: mod(本番に近い動作確認のため)
  3. 本番環境: ddl(スキーマ変更の監査に重点を置く)
  4. 高セキュリティ環境: 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機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。

参考情報

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る