Cloud SQL MySQL のデータベース一覧参照権限の確認

データベース名を参照できる範囲を、業務上必要なアカウントに限定してください。

説明

MySQL の skip_show_database が off の場合、ユーザーは SHOW DATABASES を実行できますが、表示されるデータベースは権限によって制限されます。この設定だけですべての名前やデータが公開されるわけではありません。

on の場合は SHOW DATABASES 権限を持つユーザーだけが実行できます。この権限があれば一覧全体を参照できるため、付与先も併せて確認する必要があります。

想定される影響

  • 不要なデータベース名の開示が、内部構造の把握に利用されるおそれがあります。
  • 一覧参照を一律に制限すると、依存する管理ツールが動かなくなる場合があります。

対処方法

  • 一般アカウントの一覧参照を制限する必要がある場合は skip_show_database を on にし、SHOW DATABASES や広範なグローバル権限の付与先を最小限にしてください。
  • 変更前に管理ツールとアプリケーションの依存関係を確認し、必要な参照をテストしてください。実データへのアクセス権限も別途制限してください。

例

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

変更前

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

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

変更後

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  = "skip_show_database"
      value = "on"
    }
  }
}

補足:

  • 変更前: コマンドの実行を許可します。表示される名前はユーザーの権限に依存します。
  • 変更後: 実行に SHOW DATABASES 権限を要求します。その権限の付与範囲も確認が必要です。

参考資料