Cloud SQL SQL Serverの外部スクリプト実行無効化について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、Cloud SQL SQL Serverインスタンスでexternal scripts enabledフラグが有効化されている問題について、リスクと対策を解説します。

ポリシーの説明
Cloud SQL SQL Serverインスタンスでは、外部スクリプト実行(external scripts enabled)フラグのデフォルトが無効化されていますが、この設定が有効化されている場合、SQL Server内でPython、R、Java等の外部言語スクリプトを実行できるようになります。この機能はSQL Server Machine Learning Servicesの一部として提供され、高度な分析処理には便利ですが、適切に管理されていない場合、セキュリティリスクとなる可能性があります。
リスク
external scripts enabledフラグが有効化されている場合、攻撃者がSQLインジェクション等でデータベースにアクセスした場合、sp_execute_external_scriptを使用してPython、R、Javaコードを実行できる可能性があります。
EXEC sp_execute_external_script
@language = N'Python',
@script = N'import os; os.system("malicious command")'`
修復方法
コンソールでの修復手順
Google Cloud コンソールを使用して、Cloud SQL SQL Serverインスタンスの外部スクリプト実行を無効化します。
- Google Cloud コンソールにアクセス
- Cloud SQL インスタンスページに移動します
- 対象のSQL Serverインスタンスを選択
- インスタンス一覧から、設定を変更したいSQL Serverインスタンスをクリックします
- 構成の編集を開始
- インスタンスの詳細ページで、上部にある「編集」ボタンをクリックします
- データベースフラグセクションへ移動
- 「構成オプション」セクションを展開します
- 「データベースフラグ」のセクションを見つけます
- external scripts enabledフラグの確認と変更
- 既存のフラグ一覧で「external scripts enabled」を探します
- もし存在する場合は、その値が「on」になっているか確認します
- 「on」になっている場合は、ドロップダウンから「off」を選択します
- フラグが存在しない場合は、デフォルトで無効になっているため対応不要です
- 変更の保存と適用
- ページ下部の「保存」ボタンをクリックします
- 「変更を保存しますか?」という確認ダイアログが表示されたら、「保存」をクリックします
- インスタンスが再起動され、新しい設定が適用されます(数分かかる場合があります)
Terraformでの修復手順
Cloud SQL SQL Serverインスタンスで外部スクリプト実行を無効化するTerraformコードと、主要な修正ポイントを説明します。
# Cloud SQL SQL Server インスタンスの設定
resource "google_sql_database_instance" "sqlserver_instance" {
>>> Skip
# データベースフラグ設定 - external scripts enabledを明示的に無効化
database_flags {
name = "external scripts enabled"
value = "off" # 外部スクリプト実行を無効化
}
}
最後に
この記事では、Cloud SQL SQL Serverインスタンスでexternal scripts enabledフラグが有効化されている問題について、リスクと対策を解説しました。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。