如何通过Bicep模板部署已启用Log Analytics审计功能的SQL Server?
如何通过Bicep模板部署已启用Log Analytics审计功能的SQL Server?
我太懂你这种烦恼了——本来想通过CI/CD一步到位部署好带Log Analytics审计的SQL Server,结果找的模板只支持数据库级审计,事后补脚本又嫌麻烦,导出模板对比还没找到关键点,确实挺闹心的。
其实完全可以直接用Bicep配置服务器级的审计策略,不用额外的PowerShell/CLI步骤。核心是要用到Microsoft.Sql/servers/auditingSettings这个资源类型,专门用来配置服务器层面的审计规则,而不是只盯着数据库的审计配置。
给你贴一个完整的示例Bicep代码,包含SQL Server、Log Analytics工作区,以及关键的服务器审计配置:
// 定义参数,方便复用 param sqlServerName string param sqlAdminLogin string param sqlAdminPassword secureString param logAnalyticsWorkspaceName string param location string = resourceGroup().location // 引用已存在的Log Analytics工作区(如果是新建的话可以直接定义资源) resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName } // 部署SQL Server resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = { name: sqlServerName location: location properties: { administratorLogin: sqlAdminLogin administratorLoginPassword: sqlAdminPassword version: '12.0' } } // 配置服务器级审计,关联到Log Analytics工作区 resource serverAuditingSettings 'Microsoft.Sql/servers/auditingSettings@2023-08-01-preview' = { parent: sqlServer name: 'default' properties: { // 启用审计 state: 'Enabled' // 关联到目标Log Analytics工作区 workspaceResourceId: logAnalyticsWorkspace.id // 配置需要审计的操作组,根据你的需求调整 auditActionsAndGroups: [ 'SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP' 'FAILED_DATABASE_AUTHENTICATION_GROUP' 'BATCH_COMPLETED_GROUP' ] // 可选:设置保留天数,这里设为30天 retentionDays: 30 } }
重点给你划几个关键地方:
- 用
parent: sqlServer把审计设置和目标SQL Server关联起来,明确这是服务器级的配置 state: 'Enabled'直接开启审计功能workspaceResourceId指定Log Analytics工作区的资源ID,确保审计日志能正确投递过去auditActionsAndGroups可以根据你的业务需求调整,比如要不要包含批量操作、登录事件等
部署完这个模板后,你去Azure Portal里SQL Server的「审计」标签页看,就能看到审计已经启用,并且成功关联了指定的Log Analytics工作区,完全不需要额外的后续操作。
之前你参考的模板只配置了数据库级审计,是因为它用的是Microsoft.Sql/servers/databases/auditingSettings资源类型,和咱们这个服务器级的不是同一个,这就是为啥之前的配置没生效在服务器上的原因。
备注:内容来源于stack exchange,提问作者loginAsG
相关产品推荐
相关产品推荐

