Check ID:
Provider: Azure
Service:
Severity: HIGH
Categories:
Resource type:
sqlserver_auditing_enabledProvider: Azure
Service:
sqlserverSeverity: HIGH
Categories:
loggingResource type:
microsoft.sql/serversWhat this check verifies
Azure SQL Server auditing is assessed at the server level to confirm audit logging is active. Configurations with any auditing policy state set toDisabled indicate auditing is not configured for the server and its databases.
Risk
Without SQL auditing, visibility into logins, privilege changes, and query activity is lost. Stealthy data exfiltration and tampering can go undetected, impacting confidentiality and integrity. Absent audit trails hinder forensics, slow incident response, and weaken compliance evidence.Recommendation
Enable server-level auditing and send logs to a centralized, tamper-resistant store with defined retention. Enforce least privilege and separation of duties for log access, integrate with monitoring for alerts, and periodically validate coverage. Use database-level auditing only for specific exceptions.Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
az sql server audit-policy update —resource-group <RESOURCE_GROUP_NAME> —name <SERVER_NAME> —state Enabled —storage-account <STORAGE_ACCOUNT_NAME>
References
- https://learn.microsoft.com/is-is/azure/azure-sql/database/auditing-overview?view=azuresql&viewFallbackFrom=azuresql-vm
- https://learn.microsoft.com/en-us/azure/azure-sql/database/auditing-overview?view=azuresql
- https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/Sql/auditing.html
Where this check fires
This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable byCheck ID = sqlserver_auditing_enabled. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Azure checks