Cloud SQLのSQL Serverでクロスデータベース所有権チェイニングを無効化する手順

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、Cloud SQL SQL Serverインスタンスの「cross db ownership chaining」を無効化し、データベース間の権限昇格を防止する方法について、リスクと対策を解説します。

ポリシーの説明
クロスデータベース所有権チェイニング(Cross Database Ownership Chaining)は、SQL Serverのセキュリティ機能の一つで、異なるデータベース間でオブジェクトの所有権チェーンを有効にします。この機能により、同じ所有者を持つオブジェクト間でのアクセス時に権限チェックがバイパスされ、潜在的なセキュリティリスクを生じさせます。
クロスデータベース所有権チェイニングを有効にすると、TRUSTWORTHYデータベース設定と組み合わせた場合の権限昇格が行われるリスクがあります。sysadmin権限を持つアカウント(例:’sa’)が所有するデータベースで、db_ownerロールのメンバーがEXECUTE AS OWNERを使用してsysadmin権限に昇格可能となります。攻撃者が一つのデータベースを侵害すると、所有権チェーンを通じて他のデータベースにアクセスできる可能性があります。
修復方法
コンソールでの修復手順
Google Cloud コンソールを使用して、SQL Serverインスタンスのクロスデータベース所有権チェイニングを無効化します。
- Google Cloud Consoleにアクセス
- Cloud SQL インスタンスページに移動
- 対象のSQL Serverインスタンスを選択
- インスタンス一覧から該当するSQL Serverインスタンスをクリック
- インスタンスの編集画面を開く
- インスタンスの詳細ページで「編集」ボタンをクリック
- データベースフラグの設定
- 「構成」セクションまでスクロール
- 「データベースフラグ」の項目を展開
- 「フラグを追加」をクリック
- cross db ownership chainingフラグを設定
- フラグ名:
cross db ownership chaining
- 値:
off
- フラグ名:
- 変更を保存
- ページ下部の「保存」ボタンをクリック
- 注意: この変更にはインスタンスの再起動が必要です(数分間のダウンタイムが発生します)
- 設定の確認
- インスタンスが再起動後、SQL Server Management Studio (SSMS) または Cloud Shellから以下のクエリで確認:
SELECT name, value_in_use FROM sys.configurations WHERE name = 'cross db ownership chaining'; -- value_in_use が 0 になっていることを確認
Terraformでの修復手順
Cloud SQL SQL Serverインスタンスでクロスデータベース所有権チェイニングを無効にするTerraformコードと、主要な修正ポイントを説明します。
# Cloud SQL SQL Serverインスタンスの設定
resource "google_sql_database_instance" "sqlserver" {
>>>> Skip
settings {
# データベースフラグの設定
database_flags {
name = "cross db ownership chaining"
value = "off" # クロスデータベース所有権チェイニングを無効化
}
}
}
最後に
この記事では、Cloud SQL SQL Serverインスタンスのクロスデータベース所有権チェイニングを無効化する方法について、リスクと対策を解説しました。
クロスデータベース所有権チェイニングは深刻な権限昇格の脆弱性を生む可能性があり、Cloud SQLでは非推奨となっています。証明書ベースのモジュール署名など、より安全な代替手段を使用することを強く推奨します。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。