用途:把应用安全接入 Azure SQL Database 容器,避免以 sa 连接。sa 仅用于初始化与配置,应用应使用最小权限身份。
主要能力:创建最小权限用户(本地容器用 master 上的服务器登录名加 appdb 中映射的数据库用户,仅授予所需角色);按环境选择认证方式,本地用 SQL 认证,云端优先 Microsoft Entra 或托管标识,仅连接字符串变化;强制 Encrypt=true,本地可加 TrustServerCertificate=true 接受自签名证书,云端不得设置;连接字符串与 SA 密码从密钥存储或 git 忽略的环境变量读取,应用只读 SQL_CONNECTION_STRING。
使用方式:先以 sa 完成配置,再为应用创建独立身份;本地容器镜像为 sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest,需 ACCEPT_EULA=Y 与复杂 MSSQL_SA_PASSWORD,引擎监听 1433,且不会自动建库,需先在 master 连接执行 CREATE DATABASE appdb,切换数据库应通过连接字符串而非 USE。
限制:容器上 CREATE USER ... WITH PASSWORD 会以 Msg 33233 被拒,ALTER DATABASE ... SET CONTAINMENT = PARTIAL 以 Msg 12824 被拒,且该引擎无 sp_configure,故本地须用服务器登录名加映射数据库用户;未配置 Entra 时 CREATE USER ... FROM EXTERNAL PROVIDER 以 Msg 33134 被拒,需先启用 Entra。云端 Key Vault 与托管标识部分未实测,来自 Microsoft Learn。不要授予 db_owner 或服务器管理员,不要提交连接字符串或 SA 密码,不要使用 SQL Server 镜像 mcr.microsoft.com/mssql/server。