Cloud SQL PostgreSQLでlog_executor_statsパラメータの無効化について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。

この記事では、Cloud SQLのPostgreSQLインスタンスでlog_executor_statsパラメータが有効化されている問題について、リスクと対策を解説します。

ポリシーの説明

Cloud SQLのPostgreSQLインスタンスでlog_executor_statsパラメータは、エグゼキューター(実行計画の実行部分)の詳細な統計情報をログに記録する設定です。 この設定が有効になっていると、すべてのSQL実行に対して詳細な実行統計がログに出力され、パフォーマンスオーバーヘッドとログファイルの肥大化を引き起こします。 本番環境では、このパラメータを無効化してシステムリソースの最適化を図ることが推奨されます。

なぜ危険なのか?

log_executor_statsパラメータが有効化されている場合、以下のリスクが生じます:

  1. パフォーマンスの低下: エグゼキューター統計の収集と記録により、クエリ実行時間が増加し、全体的なデータベースパフォーマンスが低下する
  2. ディスク容量の圧迫: 詳細な統計情報により、ログファイルが急速に肥大化し、ディスク容量を圧迫する
  3. ログ管理の複雑化: 大量の統計情報により、重要なログメッセージが埋もれ、問題の特定が困難になる
  4. コストの増加: ログストレージとログ転送に関連するコストが増加する
  5. I/O負荷の増大: 頻繁なログ書き込みにより、ディスクI/Oが増加し、他の処理に影響を与える

重要: log_executor_statsはlog_statement_statsと同時に有効化できません。また、log_parser_stats、log_planner_stats、log_executor_statsの3つを個別に有効化するよりも、統合的な情報を提供するlog_statement_statsの使用が推奨されます。

修復方法

コンソールでの修復手順

Google Cloud コンソールを使用して、Cloud SQLのPostgreSQLインスタンスでlog_executor_statsパラメータを無効にします。

  1. Google Cloud Consoleにログインし、Cloud SQLのページに移動します
    • ナビゲーションメニューから「SQL」を選択
  2. 対象のPostgreSQLインスタンスを選択
    • インスタンス一覧から設定を変更したいインスタンスをクリック
  3. 「編集」ボタンをクリック
    • インスタンスの詳細ページ上部にある「編集」をクリック
  4. 「構成オプション」セクションを展開
    • 左側のメニューから「構成」を選択
    • 「データベースのフラグ」セクションを開く
  5. log_executor_statsフラグを更新または削除
    • 既存のlog_executor_statsフラグがある場合は、値を「off」に変更
    • フラグが設定されていない場合は、デフォルトで「off」になっているため追加不要
    • 既存のフラグを削除することも可能(削除するとデフォルト値の「off」が適用される)
  6. 設定を保存
    • ページ下部の「保存」ボタンをクリック
    • 変更の確認ダイアログで「保存して再起動」を選択
  7. 設定の確認
    • インスタンスが再起動後、「データベースのフラグ」セクションでlog_executor_statsが「off」または未設定になっていることを確認

Terraformでの修復手順

Cloud SQLのPostgreSQLインスタンスでlog_executor_statsパラメータを無効にするTerraformコードと、主要な修正ポイントを説明します。

# Cloud SQL PostgreSQL インスタンスの設定
resource "google_sql_database_instance" "postgresql" {
  >>> Skip
  settings {
    # データベースフラグ設定 - log_executor_statsを明示的に無効化
    database_flags {
      name  = "log_executor_stats"
      value = "off"
    }
  }
}

 

ベストプラクティス

  1. 統計フラグの管理
    • 本番環境: すべての統計フラグを無効化
    • 開発環境: デバッグ目的で一時的に有効化
    • log_statement_statsを使用する場合は、他の3つを無効化
  2. 代替モニタリング手法
    • pg_stat_statements拡張の活用
    • Cloud SQL Insightsの利用
    • カスタムメトリクスの作成
  3. パフォーマンス最適化
    • 統計フラグの無効化後のCPU使用率の減少を確認
    • ログストレージの削減効果を測定
    • クエリレスポンスタイムの改善を検証

最後に

この記事では、Cloud SQLのPostgreSQLインスタンスでlog_executor_statsパラメータを無効化する方法について、リスクと対策を解説しました。

log_executor_statsを無効化することで、パフォーマンスオーバーヘッドを削減し、ログストレージの最適化を実現できます。他の統計関連フラグ(log_parser_stats、log_planner_stats、log_statement_stats)も同様に無効化することで、さらなるパフォーマンス向上が期待できます。

この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。

参考情報

この記事をシェアする

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

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

料金プランを詳しく見る