Вы можете использовать Azure Blueprints, чтобы сделать это.
https://docs.microsoft.com/en-us/azure/governance/blueprints/tutorials/protect-new-resources
или вы можете сделать это путем планирования Runbook в учетной записи автоматизации. Я создал сценарий для этого, который блокирует группы ресурсов, которые я запланировал каждую ночь. Блокировка может негативно повлиять на функциональность, а иногда и на раздражение, если ваши ресурсы заблокированы на ранней стадии.
В моем коде ниже я исключил AzureBackup_RG_, поскольку он нарушает функциональность удаления снимков, что приводит к сбою резервного копирования через некоторое время.
<###########################################################################################################
#
# LckResourceGroup
#
# This script is intended to run daily to lock all resource groups to prevent accidential deletion
# of resources.
#
# Written by Daniel Björk - 2018-02-27
# Designed for Accigo AB
#
#
# Ver 1.0 Date 2018-02-27
# First Version
#
Instructions
1. Import Az.Accounts to the Automation Account
2. Import Az.Resources to the Automation Account
3. Create Runbook (Copy Powershell)
4. Schedule runbook
#
###########################################################################################################>
# INFORMATION: Change Subscription name to enable on other subscriptions
$SubScriptionName = "SubscriptionName"
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint | Out-Null
Write-Output "Select Subscription"
Select-AzSubscription -SubscriptionName $SubScriptionName
$resourceGroups = Get-AzResourceGroup | where {!$_.ResourceGroupName.StartsWith("AzureBackup")}
foreach ($resourceGroup in $resourceGroups) {
Write-Output $resourceGroup.ResourceGroupName
$lockId = (Get-AzResourceLock -ResourceGroupName $resourceGroup.ResourceGroupName).LockId
#Remove-AzureRmResourceLock -LockId $lockId
if (!$lockId -and !$resourceGroup.ResourceGroupName.StartsWith("AzureBackupRG_")){
Write-Output "Locking Resource Group"
New-AzResourceLock `
-LockName ResourceGroupLock `
-LockLevel CanNotDelete `
-LockNotes 'Locks all resources in the resource group' `
-ResourceGroupName $resourceGroup.ResourceGroupName `
-Force
}
}