You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL Database:如何审计AAD管理员组成员的操作

Azure SQL 审计筛选AAD组成员操作的可行性方案

核心结论

这个需求完全可行,通过Set-AzSqlServerAudit的PredicateExpression参数可以精准筛选AAD组成员的操作,也可以通过审计高权限操作作为替代方案。

一、使用PredicateExpression筛选AAD组成员操作

Azure SQL审计的谓词表达式支持基于日志字段做过滤,结合AAD组的特性,有两种实用实现方式:

1. 匹配AAD组的SID(推荐,无需枚举成员)

先获取目标AAD组的SID,可通过Azure AD PowerShell命令获取:

$groupSid = (Get-AzADGroup -DisplayName "你的AAD管理员组名").Id

之后用session_server_principal_sid字段过滤,当AAD组成员登录操作时,该字段会关联到所属组的SID,因此能捕获所有组内成员的操作:

Set-AzSqlServerAudit -ResourceGroupName "你的资源组名" -ServerName "你的SQL服务器名" `
  -BlobStorageTargetState Enabled -StorageAccountResourceId "你的存储账户资源ID" `
  -PredicateExpression "session_server_principal_sid = '$groupSid'"

2. 枚举组内成员的AAD用户名

如果能明确组内成员的AAD账号(如user1@contoso.com),可以直接用session_server_principal_name做IN匹配:

Set-AzSqlServerAudit -ResourceGroupName "你的资源组名" -ServerName "你的SQL服务器名" `
  -BlobStorageTargetState Enabled -StorageAccountResourceId "你的存储账户资源ID" `
  -PredicateExpression "session_server_principal_name IN ('user1@contoso.com', 'user2@contoso.com')"

二、替代方案:审计高权限操作

如果无需精准锁定AAD组,也可以直接审计所有高权限操作,覆盖管理员级别的核心操作:

Set-AzSqlServerAudit -ResourceGroupName "你的资源组名" -ServerName "你的SQL服务器名" `
  -BlobStorageTargetState Enabled -StorageAccountResourceId "你的存储账户资源ID" `
  -PredicateExpression "statement_type IN ('ALTER', 'DROP', 'CREATE', 'GRANT', 'REVOKE') AND server_principal_role = 'sysadmin'"

注意事项

  • 谓词表达式支持的字段需符合Azure SQL审计日志的字段定义,确保使用session_server_principal_sid、statement_type等有效字段。
  • 使用SID匹配的方式,当AAD组成员变动时无需更新审计规则,维护成本更低。
  • 配置前建议先在测试环境验证筛选效果,确认日志输出符合预期后再推广到生产环境。

内容的提问来源于stack exchange,提问作者paulH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:55:56