Back to Checks
SQL server has vulnerability assessment enabled with storage container configured
sqlserver_vulnerability_assessment_enabled
Service: sqlserverSeverity: medium
OfficialBuilt-inVerified
Categories:vulnerabilities
Resource Type:microsoft.sql/servers
Azure SQL Server has Vulnerability Assessment configured with a defined location to persist assessment reports and scan results
Risk
Without Vulnerability Assessment, misconfigurations and excessive permissions can go unnoticed.
Adversaries may exploit weak server or database settings to escalate privileges, exfiltrate data, or alter records, degrading confidentiality and integrity.
Run this check with Prowler
Run in Prowler CloudRun
prowler azure --checks sqlserver_vulnerability_assessment_enabledRecommendation
Enable and standardize Vulnerability Assessment across SQL servers and databases, retaining scan results in a secure repository. Run scans routinely, review findings, set baselines, and remediate promptly. Apply least privilege to report access and integrate results into change management for defense in depth.
Remediation
CLI
Update-AzSqlServerVulnerabilityAssessmentSetting -ResourceGroupName <RESOURCE_GROUP> -ServerName <SERVER_NAME> -StorageAccountName <STORAGE_ACCOUNT_NAME> -ScanResultsContainerName <CONTAINER_NAME>Terraform
# Enable server security alert policy (required by VA)
resource "azurerm_mssql_server_security_alert_policy" "<example_resource_name>" {
resource_group_name = "<example_resource_name>"
server_name = "<example_resource_name>"
state = "Enabled"
}
# Configure VA (classic) with storage container
resource "azurerm_mssql_server_vulnerability_assessment" "<example_resource_name>" {
server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy.<example_resource_name>.id
storage_container_path = "https://<example_resource_name>.blob.core.windows.net/<example_resource_name>" # CRITICAL: sets storage container path so the check passes
storage_account_access_key = "<example_resource_name>"
}NativeIaC
// Configure VA (classic) at the SQL Server level
resource sqlServerVA 'Microsoft.Sql/servers/vulnerabilityAssessments@2021-11-01' = {
name: '<example_resource_name>/default'
properties: {
storageContainerPath: 'https://<example_resource_name>.blob.core.windows.net/<example_resource_name>' // CRITICAL: sets the storage container path to enable VA
}
}Other
1In the Azure portal, go to SQL servers and open <SERVER_NAME>
2Under Security, select Microsoft Defender for SQL (or Defender for Cloud > Microsoft Defender for SQL)
3In Vulnerability assessment settings, click Configure
4Select the Storage account and the target Container
5Save
6Verification: Open the server's Vulnerability assessment blade and confirm a storage container is shown.
Check Code
from prowler.lib.check.models import Check, Check_Report_Azure
from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
class sqlserver_vulnerability_assessment_enabled(Check):
def execute(self) -> Check_Report_Azure:
findings = []
for subscription, sql_servers in sqlserver_client.sql_servers.items():
subscription_name = sqlserver_client.subscriptions.get(
subscription, subscription
)
for sql_server in sql_servers:
report = Check_Report_Azure(
metadata=self.metadata(), resource=sql_server
)
report.subscription = subscription
report.status = "FAIL"
report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription_name} ({subscription}) has vulnerability assessment disabled."
if (
sql_server.vulnerability_assessment
and sql_server.vulnerability_assessment.storage_container_path
is not None
):
report.status = "PASS"
report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription_name} ({subscription}) has vulnerability assessment enabled."
findings.append(report)
return findingsReferences
- https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Sql/vulnerability-assessment-sql-servers.html#
- https://learn.microsoft.com/en-us/azure/defender-for-cloud/sql-azure-vulnerability-assessment-enable
- https://learn.microsoft.com/en-us/azure/defender-for-cloud/sql-azure-vulnerability-assessment-overview