説明
SQL Serverの contained database authentication は、サーバーログインとは別にデータベース内でユーザーを認証できるようにします。有効にすると、データベースのユーザー管理権限もアクセス制御に関わります。
想定される影響
データベースユーザーを作成する権限が広い場合、サーバーレベルのログイン管理を経ずにアクセス権限を付与できる可能性があります。
対処方法
この認証方式が不要なら、settings.database_flags の contained database authentication を off に設定してください。変更前に既存の包含データベースユーザーとアプリケーションの依存関係を確認してください。機能が必要な場合は、ユーザー作成権限を制限してください。
例
次の抜粋は、この機能を必要としないインスタンスで認証フラグを無効にする構成です。その他の必須インスタンス設定は省略しています。
変更前
hcl
resource "google_sql_database_instance" "sqlserver_instance" {
name = "sqlserver-instance"
database_version = "SQLSERVER_2017_EXPRESS"
region = "us-central1"
settings {
database_flags {
name = "contained database authentication"
value = "on"
}
}
}
変更後
hcl
resource "google_sql_database_instance" "sqlserver_instance" {
name = "sqlserver-instance"
database_version = "SQLSERVER_2019_STANDARD"
region = "us-central1"
settings {
database_flags {
name = "contained database authentication"
value = "off"
}
}
}