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

如何通过PowerShell/Azure CLI启用Microsoft Defender for SQL及漏洞评估

Microsoft Defender for SQL 组件独立性及自动化启用命令

组件独立性说明

高级威胁防护(ATP)和SQL漏洞评估(VA)是Microsoft Defender for SQL的两个独立核心组件:

  • ATP:实时检测数据库异常访问、SQL注入等威胁行为,提供告警与响应建议。
  • VA:定期扫描数据库配置、权限、数据暴露等风险点,生成合规报告,依赖存储账户保存扫描结果。
    二者需分别配置,无自动联动启用逻辑。

PowerShell 命令(支持参数化,适配流水线)

1. 启用高级威胁防护(ATP)

param(
    [Parameter(Mandatory=$true)]
    [string]$ResourceGroupName,
    [Parameter(Mandatory=$true)]
    [string]$SqlServerName
)

Set-AzSqlServerAdvancedThreatProtectionPolicy -ResourceGroupName $ResourceGroupName -ServerName $SqlServerName -Enabled $true

2. 配置SQL漏洞评估(VA)

param(
    [Parameter(Mandatory=$true)]
    [string]$ResourceGroupName,
    [Parameter(Mandatory=$true)]
    [string]$SqlServerName,
    [Parameter(Mandatory=$true)]
    [string]$StorageAccountName,
    [Parameter(Mandatory=$true)]
    [string]$StorageAccountResourceGroupName
)

# 获取存储容器SAS令牌(有效期1年)
$storageAccount = Get-AzStorageAccount -ResourceGroupName $StorageAccountResourceGroupName -Name $StorageAccountName
$containerSas = New-AzStorageContainerSASToken -Name "sql-vulnerability-assessment" -Context $storageAccount.Context -Permission rwdl -ExpiryTime (Get-Date).AddYears(1)

# 启用并配置VA策略
Set-AzSqlServerVulnerabilityAssessmentPolicy -ResourceGroupName $ResourceGroupName -ServerName $SqlServerName `
    -StorageAccountName $StorageAccountName `
    -ScanResultsContainerName "sql-vulnerability-assessment" `
    -RecurringScansInterval Weekly `
    -EmailSubscriptionAdmins $true `
    -StorageAccountSasToken $containerSas

注意:需提前创建存储账户和sql-vulnerability-assessment容器;无需自动扫描时,将-RecurringScansInterval设为None。

Azure CLI 命令(支持参数化,适配流水线)

前置要求

确保Azure CLI为最新版本:

az upgrade

1. 启用高级威胁防护(ATP)

# 替换为流水线变量(如Azure DevOps: $(ResourceGroupName))
RESOURCE_GROUP="your-resource-group"
SQL_SERVER="your-sql-server"

az sql server threat-policy set --resource-group $RESOURCE_GROUP --server $SQL_SERVER --state Enabled

2. 配置SQL漏洞评估(VA)

RESOURCE_GROUP="your-resource-group"
SQL_SERVER="your-sql-server"
STORAGE_ACCOUNT="your-storage-account"
STORAGE_RG="storage-resource-group"

# 生成存储账户SAS令牌(有效期1年)
STORAGE_SAS=$(az storage account generate-sas --account-name $STORAGE_ACCOUNT --resource-group $STORAGE_RG --services b --resource-types c --permissions rwdl --expiry $(date -d "+1 year" +%Y-%m-%dT%H:%M:%SZ) --output tsv)

# 创建存储容器(若不存在)
az storage container create --name sql-vulnerability-assessment --account-name $STORAGE_ACCOUNT --sas-token $STORAGE_SAS

# 启用并配置VA策略
az sql server va-policy set --resource-group $RESOURCE_GROUP --server $SQL_SERVER `
    --storage-account $STORAGE_ACCOUNT `
    --storage-container-path "https://$STORAGE_ACCOUNT.blob.core.windows.net/sql-vulnerability-assessment" `
    --storage-sas-key $STORAGE_SAS `
    --recurring-scans-interval Weekly `
    --email-admins Enabled

注意:无需自动扫描时,将--recurring-scans-interval设为None;容器已存在可跳过创建步骤。

流水线集成提示

  • 将命令中的硬编码参数替换为流水线变量(如GitHub Actions: ${{ secrets.RESOURCE_GROUP }})。
  • 确保流水线服务主体拥有SQL Server Contributor和Storage Account Contributor权限,避免权限不足报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:05:16