Cloud SQL MySQL skip_show_databaseパラメータの有効化について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、Cloud SQLのMySQLインスタンスでskip_show_databaseパラメータが無効化されている問題について、リスクと対策を解説します。
注意: skip_show_databaseパラメータはCloud SQLのサポート対象フラグリストに明示的に記載されていない場合がありますが、MySQL標準のセキュリティ機能として一般的に使用されています。実装前にテスト環境での動作確認を推奨します。

ポリシーの説明
skip_show_databaseパラメータは、MySQLにおいてユーザーがアクセス権限を持たないデータベースの一覧表示を制限するための重要なセキュリティ設定です。
このパラメータが無効(デフォルト)の場合、ユーザーはSHOW DATABASES
コマンドやinformation_schema
を通じて、アクセス権限がないデータベースも含めたすべてのデータベース名を確認できてしまいます。これは最小権限の原則に反し、攻撃者に不要な情報を提供してしまう可能性があります。
skip_show_databaseを有効にすると、ユーザーは自身がアクセス権限を持つデータベースのみを表示できるようになり、システム全体のデータベース構造を隠蔽できます。
修復方法
コンソールでの修復手順
Google Cloud コンソールを使用して、skip_show_databaseパラメータを有効化します。
- Google Cloud Consoleにログインし、「SQL」メニューを選択します。

- 対象のMySQLインスタンスを選択します。

- 左側のメニューから「編集」をクリックします。

- 「データベースのフラグ」セクションまでスクロールします。
- 「フラグを追加」をクリックします。
- ドロップダウンメニューから「skip_show_database」を選択します。

- 値を「on」に設定します。
- ページ下部の「保存」をクリックして変更を適用します。
- インスタンスが自動的に再起動され、設定が適用されます。
Terraformでの修復手順
Terraformを使用してskip_show_databaseパラメータを有効化する設定例を示します。
resource "google_sql_database_instance" "mysql" {
>>>> Skip
settings {
# データベースフラグの設定
database_flags {
name = "skip_show_database"
value = "on"
}
}
}
最後に
この記事では、Cloud SQLのMySQLインスタンスでskip_show_databaseパラメータを有効化し、データベース一覧の表示を制限する方法について、リスクと対策を解説しました。
この設定を有効化することで、ユーザーはアクセス権限を持つデータベースのみを表示できるようになり、最小権限の原則に従ったセキュリティを実現できます。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。