Cloud SQL MySQL のローカルファイル読み込み設定の確認

不要な LOAD DATA LOCAL を無効にし、クライアントのファイルアクセスを制限してください。

説明

MySQL の local_infile は、LOAD DATA LOCAL によってクライアント側のファイルをサーバーへ転送する機能に関係します。サーバーとクライアントの双方で許可が必要であり、実行プロセスのファイルアクセス権限と SQL 権限も適用されます。

信頼できないサーバーが、クライアントに意図しないファイル転送を要求する場合があるため、必要な接続とクライアントに限定する必要があります。サーバー上のファイルを読む機能とは異なります。

想定される影響

  • クライアントプロセスが読めるファイルが、意図せず転送されるおそれがあります。
  • 一律に無効化すると、正当なファイル読み込み処理が失敗する場合があります。

対処方法

  • ローカルファイル読み込みが不要なら local_infile を off にし、クライアント側の LOCAL 機能も無効にしてください。
  • 必要な場合は信頼するサーバーの身元を検証し、クライアントのファイルアクセスと SQL 権限を最小限にしてください。変更後は必要な読み込み処理をテストしてください。

例

インスタンス設定の一部を示す例です。サポートされるエンジンバージョンとマシンタイプを選び、省略した必須設定を用意してください。

変更前

hcl
resource "google_sql_database_instance" "db" {
  name             = "mysql-instance"
  database_version = "MYSQL_8_0"
  region           = "us-central1"

  settings {
    database_flags {
      name  = "local_infile"
      value = "on"
    }
  }
}

変更後

hcl
resource "google_sql_database_instance" "db" {
  name             = "mysql-instance"
  database_version = "MYSQL_8_0"
  region           = "us-central1"

  settings {
    tier = "db-f1-micro"

    database_flags {
      name  = "local_infile"
      value = "off"
    }
  }
}

補足:

  • 変更前: サーバーでローカルファイル読み込みを許可します。利用にはクライアント設定と権限も必要です。
  • 変更後: サーバー側のローカル読み込みを無効にします。他のファイルアクセス権限を削除するものではありません。

参考資料