如何移除Azure SQL Server自动生成的CloudSA管理员登录账户?
自动化移除Azure SQL Server自动生成的CloudSA登录账户方案
步骤1:部署不含本地管理员的SQL Server(Bicep)
先通过Bicep部署SQL Server,不指定administratorLogin和administratorLoginPassword,同时设置administratorType为ActiveDirectory:
resource sqlServer 'Microsoft.Sql/servers@2023-05-01-preview' = { name: 'your-sql-server-name' location: resourceGroup().location properties: { administratorType: 'ActiveDirectory' minimalTlsVersion: '1.2' publicNetworkAccess: 'Enabled' } }
步骤2:启用Azure AD Only Authentication
通过AZ CLI强制启用AD唯一身份验证,此时所有本地登录账户会被自动禁用:
az sql server ad-only-auth enable --resource-group <你的资源组名称> --name <你的SQL Server名称>
步骤3:自动识别并删除CloudSA登录账户
由于CloudSA开头的登录名带随机后缀,先查询获取该账户名,再执行删除操作:
# 查询获取CloudSA开头的登录名 LOGIN_NAME=$(az sql server execute-query --resource-group <你的资源组名称> --name <你的SQL Server名称> --query-text "SELECT name FROM sys.sql_logins WHERE name LIKE 'CloudSA%'" --output tsv) # 执行删除命令 az sql server execute-query --resource-group <你的资源组名称> --name <你的SQL Server名称> --query-text "DROP LOGIN [$LOGIN_NAME]"
注意:执行该命令的账号必须拥有SQL Server的Azure AD管理员权限,可临时指定一个AD账号作为管理员,完成删除后再替换为目标管理单元组。
步骤4:分配管理单元组的管理员权限
待目标管理单元组的SID创建完成后,通过AZ CLI将其设置为SQL Server的Azure AD管理员:
az sql server ad-admin create --resource-group <你的资源组名称> --server-name <你的SQL Server名称> --display-name <管理单元组显示名> --object-id <管理单元组对象ID>
关键注意事项
- 整个流程无需部署额外资源,完全依赖Azure原生CLI命令和Bicep完成
- 启用AD Only Authentication后,本地登录账户会被禁用,删除操作不会影响AD身份验证流程
- 脚本需按顺序执行:部署SQL Server → 启用AD Only → 删除CloudSA登录 → 添加管理单元组管理员
内容的提问来源于stack exchange,提问作者KWC
相关产品推荐
相关产品推荐

