Bloccare le risorse per proteggere l'infrastruttura

Come amministratore, è possibile bloccare una sottoscrizione di Azure, un gruppo di risorse o una risorsa per proteggerli da eliminazioni e modifiche accidentali. Un blocco esegue l'override di tutte le autorizzazioni utente.

È possibile impostare blocchi per impedire l'eliminazione o le modifiche. Nel portale questi blocchi sono definiti Elimina e Sola lettura. Nella riga di comando questi blocchi sono denominati CanNotDelete e ReadOnly.

  • CanNotDelete significa che gli utenti autorizzati possono leggere e modificare una risorsa, ma non eliminarla.
  • ReadOnly significa che gli utenti autorizzati possono leggere una risorsa, ma non eliminarla o aggiornarla. L'applicazione di questo blocco è simile alla concessione a tutti gli utenti autorizzati delle sole autorizzazioni concesse dal ruolo Lettore.

Diversamente dal controllo degli accessi in base al ruolo, i blocchi di gestione consentono di applicare una restrizione a tutti gli utenti e i ruoli. Per informazioni sull'impostazione delle autorizzazioni per utenti e ruoli, vedere Controllo degli accessi in base al ruolo di Azure.

Ereditarietà blocchi

Quando si applica un blocco in un ambito padre, tutte le risorse in tale ambito ereditano lo stesso blocco. Anche le risorse aggiunte in un secondo momento ereditano lo stesso blocco padre. Il blocco più restrittivo nell'ereditarietà ha la precedenza.

Le risorse dell'estensione ereditano blocchi dalla risorsa a cui vengono applicati. Ad esempio, Microsoft.Insights/diagnosticSettings è un tipo di risorsa di estensione. Se si applica un'impostazione di diagnostica a un BLOB di archiviazione e si blocca l'account di archiviazione, non è possibile eliminare l'impostazione di diagnostica. Questa ereditarietà ha senso perché l'ID risorsa completo dell'impostazione di diagnostica è:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}/blobServices/default/providers/microsoft.insights/diagnosticSettings/{setting-name}"

Che corrisponde all'ambito dell'ID della risorsa bloccata:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}

Se si dispone di un blocco di Eliminazione su una risorsa e si tenta di eliminare il gruppo di risorse, la funzionalità blocca l'intera operazione di eliminazione. Anche se il gruppo di risorse o altre risorse nel gruppo vengono sbloccati, l'eliminazione non avviene. Non è mai stata eseguita un'eliminazione parziale.

Quando si annulla una sottoscrizione di Azure:

  • Un blocco delle risorse non blocca l'annullamento della sottoscrizione.
  • Azure mantiene le risorse disattivandole anziché eliminarle immediatamente.
  • Azure elimina le risorse in modo permanente solo dopo un periodo di attesa.

Comprendere l'ambito dei blocchi

Nota

I blocchi si applicano solo alle operazioni di Azure del piano di controllo e non alle operazioni del piano dati.

Per le operazioni del piano di controllo di Azure, passare a https://management.azure.com. Le operazioni del piano dati di Azure passano all'istanza del servizio, ad esempio https://myaccount.blob.core.windows.net/. Vedere Piano di controllo e piano dati di Azure. Per individuare le operazioni che usano l'URL del piano di controllo, vedere API REST di Azure.

La distinzione significa che i blocchi proteggono una risorsa dalle modifiche, ma non limitano il modo in cui una risorsa esegue le sue funzioni. Un blocco ReadOnly, ad esempio, in un server logico del database SQL, lo protegge dalle eliminazioni o dalle modifiche. Consente di creare, aggiornare o eliminare dati nel database del server. Le operazioni del piano dati consentono transazioni di dati. Queste richieste non passano a https://management.azure.com.

Considerazioni prima di applicare i blocchi

L'applicazione di blocchi può causare risultati imprevisti. Alcune operazioni, che non sembrano modificare una risorsa, richiedono azioni bloccate. I blocchi impediscono al metodo POST di inviare dati all'API di Azure Resource Manager (ARM). Alcuni esempi comuni di operazioni bloccate sono:

  • Un blocco di sola lettura applicato a un account di archiviazione impedisce agli utenti di elencare le chiavi dell'account. Una richiesta POST gestisce l'operazione Elenca chiavi di Archiviazione di Azure per proteggere l'accesso alle chiavi dell'account. Le chiavi dell'account forniscono l'accesso completo ai dati nell'account di archiviazione. Quando un blocco di sola lettura è configurato per un account di archiviazione, gli utenti che non dispongono delle chiavi dell'account devono usare le credenziali di Microsoft Entra per accedere ai dati di BLOB o code. Un blocco di sola lettura impedisce anche l'assegnazione di ruoli controllo degli accessi in base al ruolo di Azure con ambito di account di archiviazione o contenitore di dati (contenitore BLOB o coda).

  • Un blocco di sola lettura in un account di archiviazione protegge le assegnazioni di controllo degli accessi in base al ruolo con ambito per un account di archiviazione o un contenitore di dati (contenitore BLOB o coda).

  • Un blocco di sola lettura in un account di archiviazione impedisce la creazione di un contenitore BLOB.

  • Un blocco di sola lettura in un account di archiviazione impedisce la creazione di un contenitore BLOB. Tuttavia, è possibile creare operazioni su un account di archiviazione tramite il piano di controllo e il piano dati. I blocchi di sola lettura bloccano solo le richieste di creazione del piano di controllo, ma un utente può comunque eseguire un'operazione di creazione valida sulla risorsa tramite il piano dati.

  • Un blocco di sola lettura o di eliminazione in un account di archiviazione non impedisce l'eliminazione o la modifica dei dati. Non protegge anche i dati in un BLOB, una coda, una tabella o un file.

  • L'API dell'account di archiviazione espone le operazioni del piano dati e del piano di controllo. Se una richiesta usa le operazioni del piano dati, il blocco sull'account di archiviazione non protegge i dati BLOB, coda, tabella o file all'interno di tale account di archiviazione. Se la richiesta usa le operazioni del piano di controllo, tuttavia, il blocco protegge tali risorse.

    Ad esempio, se una richiesta usa Condivisioni file - Elimina, ovvero un'operazione del piano di controllo, l'eliminazione ha esito negativo. Se la richiesta usa Elimina condivisione, ovvero un'operazione del piano dati, l'eliminazione ha esito positivo. È consigliabile usare un'operazione del piano di controllo.

  • Un blocco di sola lettura in un gruppo di sicurezza di rete (NSG) impedisce la creazione del log del flusso del gruppo di sicurezza di rete corrispondente. Un blocco di eliminazione in un gruppo di sicurezza di rete (NSG) non impedisce la creazione o la modifica del log del flusso del gruppo di sicurezza di rete corrispondente.

  • Un blocco di sola lettura applicato a una risorsa Servizio app impedisce a Visual Studio Server Explorer di visualizzare i file della risorsa perché questa interazione richiede l'accesso in scrittura.

  • Un blocco di sola lettura per un gruppo di risorse che contiene un piano di servizio app impedisce di aumentare il piano.

  • Un blocco di sola lettura applicato a un gruppo di risorse che contiene una macchina virtuale impedisce a tutti gli utenti di avviare o riavviare una macchina virtuale. Queste operazioni richiedono una richiesta di metodo POST.

  • Un blocco di sola lettura su un gruppo di risorse impedisce lo spostamento di risorse esistenti all'interno o all'esterno del gruppo di risorse. Si noti tuttavia che una risorsa con blocco di sola lettura può essere spostata in un altro gruppo di risorse.

  • Un blocco di sola lettura su un gruppo di risorse che contiene un account di automazione impedisce l'avvio di tutti i runbook. Queste operazioni richiedono una richiesta di metodo POST.

  • Un blocco di eliminazione su una risorsa o un gruppo di risorse impedisce l'eliminazione delle assegnazioni di controllo degli accessi in base al ruolo di Azure.

  • Un blocco di eliminazione su un gruppo di risorse impedisce ad Azure Resource Manager di eliminare automaticamente le distribuzioni nella cronologia. Se si raggiungono 800 distribuzioni nella cronologia, le distribuzioni hanno esito negativo.

  • Un blocco cannot-delete applicato al ​​gruppo di risorse creato dal servizio Backup di Azure causa l'esito negativo dei backup. Il servizio supporta un massimo di 18 punti di ripristino. Quando è bloccato, il servizio di backup non riesce a eseguire la pulizia dei punti di ripristino. Per altre informazioni, vedere Domande frequenti-Eseguire il backup delle VM di Azure.

  • Un blocco di eliminazione su un gruppo di risorse che contiene aree di lavoro di Azure Machine Learning impedisce il corretto funzionamento della scalabilità automatica di cluster di calcolo di Azure Machine Learning. Con il blocco, la scalabilità automatica non può rimuovere i nodi inutilizzati. La soluzione usa più risorse di quelle necessarie per il carico di lavoro.

  • Un blocco di sola lettura in un'area di lavoro Log Analytics impedisce l'abilitazione dell'analisi del comportamento degli utenti e delle entità (UEBA).

  • Un blocco di eliminazione in un'area di lavoro Log Analytics non impedisce operazioni di eliminazione dei dati. Rimuovere invece il ruolo Rimozione definitiva dei dati dall'utente.

  • Un blocco di sola lettura applicato a una sottoscrizione impedisce ad Azure Advisor di funzionare correttamente. Advisor non riesce ad archiviare i risultati delle relative query.

  • Un blocco di sola lettura in un gateway applicazione impedisce di ottenere l'integrità back-end del gateway applicazione. Tale operazione usa un metodo POST, che blocca un blocco di sola lettura.

  • Un blocco di sola lettura in un cluster del servizio Azure Kubernetes limita la modalità di accesso alle risorse del cluster tramite il portale. Un blocco di sola lettura impedisce di usare la sezione risorse Kubernetes del cluster del servizio Azure Kubernetes nel portale di Azure per scegliere una risorsa cluster. Queste operazioni richiedono una richiesta di metodo POST per l'autenticazione.

  • Un blocco di eliminazione in una macchina virtuale protetta da Site Recovery impedisce la rimozione corretta di alcuni collegamenti di risorse correlati a Site Recovery quando si rimuove la protezione o si disabilita la replica. Se si prevede di proteggere nuovamente la macchina virtuale in un secondo momento, è necessario rimuovere il blocco prima di disabilitare la protezione. Se non si rimuove il blocco, è necessario seguire alcuni passaggi per pulire i collegamenti non aggiornati prima di poter proteggere la macchina virtuale. Per altre informazioni, vedere Risolvere i problemi di replica delle macchine virtuali Azure.

  • Per Postgresql, la rete virtuale non deve avere blocchi di risorse impostati a livello di rete virtuale o subnet, perché potrebbero interferire con le operazioni di rete e DNS. Prima di creare il server in una rete virtuale, assicurarsi di rimuovere eventuali blocchi di eliminazione o di sola lettura dalla rete virtuale e da tutte le subnet. È possibile riapplicare i blocchi dopo la creazione del server.

Utenti che possono creare o eliminare blocchi

Per creare o eliminare i blocchi di gestione, è necessario avere accesso alle azioni Microsoft.Authorization/* o Microsoft.Authorization/locks/*. Gli utenti assegnati ai ruoli Proprietario e Amministratore accesso utente hanno l'accesso necessario. Anche alcuni ruoli predefiniti specializzati concedono questo accesso. È possibile creare un ruolo personalizzato con le autorizzazioni necessarie.

Applicazioni e blocchi gestiti

Alcuni servizi di Azure, ad esempio Azure Databricks, usano le applicazioni gestite per implementare il servizio. In tal caso, il servizio crea due gruppi di risorse. Uno è un gruppo di risorse sbloccato che contiene una panoramica del servizio. L'altro è un gruppo di risorse bloccato che contiene l'infrastruttura del servizio.

Se si prova a eliminare il gruppo di risorse dell'infrastruttura, viene visualizzato un errore che informa che il gruppo di risorse è bloccato. Se si prova a eliminare il blocco per il gruppo di risorse dell'infrastruttura, viene visualizzato un errore che informa che il blocco non può essere eliminato perché è di proprietà di un'applicazione di sistema.

Eliminare invece il servizio, che elimina anche il gruppo di risorse dell'infrastruttura.

Per le applicazioni gestite selezionare il servizio distribuito.

Screenshot del portale di Azure con un'istanza di Azure Databricks selezionata.

Si noti che il servizio include un collegamento per un gruppo di risorse gestito. Il gruppo di risorse contiene l'infrastruttura ed è bloccato. È possibile eliminarla solo indirettamente.

Screenshot che mostra il collegamento Gruppo di risorse gestite nel portale di Azure.

Per eliminare tutti gli elementi per il servizio, incluso il gruppo di risorse dell'infrastruttura bloccato, selezionare Elimina per il servizio.

Screenshot del portale di Azure con l'opzione Elimina per il servizio selezionato.

Configurare i blocchi

Portale

Nel pannello di spostamento a sinistra il nome della funzionalità di blocco della sottoscrizione è Blocco risorse, mentre il nome della funzionalità di blocco del gruppo di risorse è Blocchi.

  1. Nel pannello Impostazioni della risorsa, del gruppo di risorse o della sottoscrizione che si vuole bloccare selezionare Blocchi.

    Selezionare un blocco.

    Nota

    Non è possibile aggiungere un blocco ai gruppi di gestione.

  2. Per aggiungere un blocco, selezionare Aggiungi. Per creare un blocco a livello padre, selezionare l'elemento padre. La risorsa attualmente selezionata erediterà il blocco dall'elemento padre. Ad esempio, è possibile bloccare il gruppo di risorse per applicare un blocco a tutte le relative risorse.

    Aggiungere un blocco.

  3. Assegnare un nome e un livello al blocco. Facoltativamente è possibile aggiungere note che descrivono il blocco.

    Impostare un blocco.

  4. Per eliminare il blocco, selezionare il pulsante Elimina.

    Eliminare un blocco.

Template

Quando si usa un modello di Resource Manager o un file Bicep per distribuire un blocco, è utile comprendere il funzionamento dell'ambito di distribuzione e dell'ambito di blocco. Per applicare un blocco nell'ambito della distribuzione, ad esempio per un gruppo di risorse o una sottoscrizione, lasciare non impostata la proprietà scope. Quando si blocca una risorsa, all'interno dell'ambito di distribuzione impostare la proprietà dell'ambito sul blocco.

Il modello seguente applica un blocco al gruppo di risorse. Si noti che non esiste una proprietà di ambito nella risorsa di blocco perché l'ambito di blocco corrisponde all'ambito di distribuzione. Distribuire questo modello a livello di gruppo di risorse.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/locks",
      "apiVersion": "2016-09-01",
      "name": "rgLock",
      "properties": {
        "level": "CanNotDelete",
        "notes": "Resource group should not be deleted."
      }
    }
  ]
}

Per creare un gruppo di risorse e bloccarlo, distribuire il modello seguente a livello di sottoscrizione.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "rgName": {
      "type": "string"
    },
    "rgLocation": {
      "type": "string"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "name": "[parameters('rgName')]",
      "location": "[parameters('rgLocation')]",
      "properties": {}
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "lockDeployment",
      "resourceGroup": "[parameters('rgName')]",
      "dependsOn": [
        "[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "type": "Microsoft.Authorization/locks",
              "apiVersion": "2016-09-01",
              "name": "rgLock",
              "properties": {
                "level": "CanNotDelete",
                "notes": "Resource group and its resources should not be deleted."
              }
            }
          ],
          "outputs": {}
        }
      }
    }
  ],
  "outputs": {}
}

Quando si applica un blocco a una risorsa all'interno del gruppo di risorse, aggiungere la proprietà dell'ambito. Impostare l'ambito sul nome della risorsa da bloccare.

L'esempio seguente illustra un modello che crea un piano di servizio app, un sito Web e un blocco sul sito Web. L'ambito del blocco è impostato sul sito Web.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "hostingPlanName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "siteName": "[concat('ExampleSite', uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2020-12-01",
      "name": "[parameters('hostingPlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "tier": "Free",
        "name": "f1",
        "capacity": 0
      },
      "properties": {
        "targetWorkerCount": 1
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2020-12-01",
      "name": "[variables('siteName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
      ],
      "properties": {
        "serverFarmId": "[parameters('hostingPlanName')]"
      }
    },
    {
      "type": "Microsoft.Authorization/locks",
      "apiVersion": "2016-09-01",
      "name": "siteLock",
      "scope": "[concat('Microsoft.Web/sites/', variables('siteName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('siteName'))]"
      ],
      "properties": {
        "level": "CanNotDelete",
        "notes": "Site should not be deleted."
      }
    }
  ]
}

Azure PowerShell

Per bloccare le risorse distribuite con Azure PowerShell, usare il comando New-AzResourceLock.

Per bloccare una risorsa, specificare il nome, il tipo e il gruppo di risorse della risorsa.

New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup

Per bloccare un gruppo di risorse, specificare il nome del gruppo di risorse.

New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup

Per ottenere informazioni su un blocco, usare Get-AzResourceLock. Per ottenere tutti i blocchi nella sottoscrizione, usare:

Get-AzResourceLock

Per ottenere tutti i blocchi per una risorsa, usare:

Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup

Per ottenere tutti i blocchi per un gruppo di risorse, usare:

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

Per eliminare un blocco per una risorsa, usare:

$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock -LockId $lockId

Per eliminare un blocco per un gruppo di risorse, usare:

$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup).LockId
Remove-AzResourceLock -LockId $lockId

Interfaccia della riga di comando di Azure

Per bloccare le risorse distribuite con l'interfaccia della riga di comando di Azure, usare il comando az lock create.

Per bloccare una risorsa, specificare il nome, il tipo e il gruppo di risorse della risorsa.

az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft.Web/sites

Per bloccare un gruppo di risorse, specificare il nome del gruppo di risorse.

az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup

Per ottenere informazioni su un blocco, usare az lock list. Per ottenere tutti i blocchi nella sottoscrizione, usare:

az lock list

Per ottenere tutti i blocchi per una risorsa, usare:

az lock list --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""

Per ottenere tutti i blocchi per un gruppo di risorse, usare:

az lock list --resource-group exampleresourcegroup

Per eliminare un blocco per una risorsa, usare:

lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --resource-type Microsoft.Web/sites --resource-name examplesite --output tsv --query id)
az lock delete --ids $lockid

Per eliminare un blocco per un gruppo di risorse, usare:

lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup  --output tsv --query id)
az lock delete --ids $lockid

Python

Le risorse distribuite con Python vengono bloccate usando il comando ManagementLockClient.management_locks.create_or_update_at_resource_group_level.

Per bloccare una risorsa, specificare il nome, il tipo e il gruppo di risorse della risorsa.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.create_or_update_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite",
    {
        "level": "CanNotDelete"
    }
)

Per bloccare un gruppo di risorse, specificare il nome del gruppo di risorse.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.create_or_update_at_resource_group_level(
    "exampleGroup",
    "lockGroup",
    {
        "level": "CanNotDelete"
    }
)

Per ottenere informazioni su tutti i blocchi nella sottoscrizione, usare ManagementLockClient.management_locks.get. Per ottenere tutti i blocchi nella sottoscrizione, usare:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.list_at_subscription_level()

for lock in lock_result:
    print(f"Lock name: {lock.name}")
    print(f"Lock level: {lock.level}")
    print(f"Lock notes: {lock.notes}")

Per ottenere un blocco per una risorsa, usare:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.get_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)

print(f"Lock ID: {lock_result.id}")
print(f"Lock Name: {lock_result.name}")
print(f"Lock Level: {lock_result.level}")

Per ottenere un blocco per un gruppo di risorse, usare:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.get_at_resource_group_level(
    "exampleGroup",
    "lockGroup"
)

print(f"Lock ID: {lock_result.id}")
print(f"Lock Level: {lock_result.level}")

Per eliminare un blocco per una risorsa, usare:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_client.management_locks.delete_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)

Per eliminare un blocco per un gruppo di risorse, usare:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_client.management_locks.delete_at_resource_group_level("exampleGroup", "lockGroup")

REST API

È possibile bloccare le risorse distribuite tramite l'API REST per i blocchi di gestione. L'API REST consente di creare ed eliminare i blocchi e recuperare informazioni sui blocchi esistenti.

Per creare un blocco, eseguire:

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}

L'ambito può essere una sottoscrizione, un gruppo di risorse o una risorsa. Il nome del blocco è impostabile a piacimento. Per la versione dell'API, usare 2016-09-01.

Nella richiesta includere un oggetto JSON che specifica le proprietà di blocco.

{
  "properties": {
  "level": "CanNotDelete",
  "notes": "Optional text notes."
  }
}

Passaggi successivi