我想为 Azure 订阅中的部分资源启用 Defender for Cloud。我已经为一些虚拟机启用了它,如此博客中所述 我需要为此订阅中的某些应用程序服务启用此功能。这是我到目前为止所尝试的,
$url = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$appServiceName/providers/Microsoft.Security/pricings/AppServices?api-version=2024-01-01"
$accessToken = (Get-AzAccessToken).Token
$headers = @{
"Authorization" = "Bearer $accessToken"
"Content-Type" = "application/json"
}
$body = @{
location = $location
properties = @{
pricingTier = "Standard"
}
} | ConvertTo-Json
Invoke-RestMethod -Method Put -Uri $url -Body $body -Headers $headers
这是我得到的错误:
调用RestMethod: {"error":{"code":"InvalidUrlConfiguration","message":"计划名称 资源级定价不支持“AppServices”。”}}
当我运行以下命令时,我得到一个空值输出:
https://management.azure.com/{scopeId}/providers/Microsoft.Security/pricings?api-version=2024-01-01
output:
{
"value": []
}
有没有一种方法(GUI、REST API 或 CLI)可以为应用程序服务启用 Defender for Cloud,而无需在订阅级别启用它?
最初,当我尝试使用以下脚本在应用服务的资源级别启用 Microsoft Defender for Cloud 时,也遇到了相同的错误:
$url = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$appServiceName/providers/Microsoft.Security/pricings/AppServices?api-version=2024-01-01"
$accessToken = (Get-AzAccessToken).Token
$headers = @{
"Authorization" = "Bearer $accessToken"
"Content-Type" = "application/json"
}
$body = @{
location = $location
properties = @{
pricingTier = "Standard"
}
} | ConvertTo-Json
Invoke-RestMethod -Method Put -Uri $url -Body $body -Headers $headers
回复:
正如我在评论中提到的,目前无法在应用服务的资源级别启用 Microsoft Defender for Cloud。
对于应用服务,唯一的方法是在订阅级别启用 Microsoft Defender for Cloud。 请参阅此MS Doc,说明相同:
您必须在 Azure 订阅上启用 Microsoft Defender for Cloud。您必须拥有与专用计算机关联的受支持的应用服务计划。
您可以使用以下 CLI 命令在订阅级别启用 Microsoft Defender for Cloud for App Services:
az security pricing create -n AppServices --tier standard
回复:
您可以通过检查 Azure 门户 GUI 中的此选项卡来确认是否在订阅级别启用了 Microsoft Defender for Cloud for App Services: