Cloud SQL SQL Server のエラー情報公開範囲の確認

一般ユーザーに返す不要なエラー詳細を減らしてください。

説明

SQL Server のトレースフラグ 3625 は、sysadmin ロールに属さないユーザーへ返す一部のエラーメッセージのパラメーターをマスクします。無効の場合、その詳細が表示されることがあります。

すべてのトレースを停止したり、あらゆる機密情報を取り除いたりする機能ではありません。アプリケーションのエラー処理とログへのアクセス制御も必要です。

想定される影響

  • エラーの詳細が内部構造の把握や追加攻撃に利用されるおそれがあります。
  • エラー情報を過度に制限すると、原因調査が難しくなる場合があります。

対処方法

  • Cloud SQL の 3625 フラグを on にし、必要な再起動を計画してください。一般ユーザーに返すエラーと診断手順を確認してください。
  • アプリケーションから不要な内部エラーを公開せず、詳細ログのアクセス権限と保持を制限してください。

例

インスタンス設定の一部を比較する例です。サポートされるエンジンバージョンと SQL Server 用のマシンタイプを使い、var.sql_server_tier と省略した必須入力を指定してください。このフラグ変更に、例にあるエンジンバージョンの変更が必要なわけではありません。

変更前

hcl
resource "google_sql_database_instance" "db" {
  name             = "sqlserver-instance"
  database_version = "SQLSERVER_2017_STANDARD"
  region           = "us-central1"

  settings {
    database_flags {
      name  = "3625"
      value = "off"
    }
  }
}

変更後

hcl
resource "google_sql_database_instance" "db" {
  name             = "sqlserver-instance"
  database_version = "SQLSERVER_2019_STANDARD"
  region           = "us-central1"

  settings {
    tier = var.sql_server_tier

    database_flags {
      name  = "3625"
      value = "on"
    }
  }
}

補足:

  • 変更前: エラーパラメーターのマスキングを無効にします。
  • 変更後: 一部のエラーパラメーターをマスクします。すべてのエラーやログを匿名化するわけではありません。

参考資料