Comprendere il blocco risorse di Azure Blueprint
Importante
Il 11 luglio 2026, Blueprints (anteprima) sarà deprecato. Eseguire la migrazione delle definizioni e delle assegnazioni di progetto esistenti a Specifiche modello e stack di distribuzione. Gli artefatti del progetto devono essere convertiti in modelli JSON arm o file Bicep usati per definire gli stack di distribuzione. Per informazioni su come creare un artefatto come risorsa arm, vedere:
La creazione di ambienti coerenti su larga scala è davvero efficace solo se esiste un meccanismo che mantenga tale coerenza. Questo articolo spiega il funzionamento del blocco risorse di Azure Blueprint. Per visualizzare un esempio di blocco delle risorse e applicazione di assegnazioni di rifiuto, vedere l'esercitazione sulla protezione delle nuove risorse .
Nota
I blocchi delle risorse distribuiti da Azure Blueprints vengono applicati solo alle risorse non di estensione distribuite dall'assegnazione del progetto. Le risorse esistenti, ad esempio quelle nei gruppi di risorse già esistenti, non dispongono di blocchi aggiunti a loro.
Modalità di blocco e stati
La modalità di blocco si applica all'assegnazione del progetto e include tre opzioni: Non bloccare, Sola lettura o Non eliminare. La modalità di blocco viene configurata durante la distribuzione degli artefatti nel corso dell'assegnazione di un progetto. È possibile impostare una modalità di blocco diversa aggiornando l'assegnazione del progetto. Le modalità di blocco, tuttavia, non possono essere modificate all'esterno di Azure Blueprints.
Le risorse create dagli artefatti in un'assegnazione di progetto hanno quattro stati: Non bloccato, Sola lettura, Non è possibile modificare/eliminare o non è possibile eliminare. Ciascun tipo di artefatto può essere in stato Non bloccato. La tabella seguente può essere usata per determinare lo stato di una risorsa:
Modalità | Tipo di risorsa artefatto | State | Descrizione |
---|---|---|---|
Non bloccare | * | Non bloccato | Le risorse non sono protette da Azure Blueprints. Questo stato viene usato anche per le risorse aggiunte a un artefatto del gruppo di risorse Sola lettura o Non eliminare all'esterno dell'assegnazione di un progetto. |
Sola lettura | Resource group | Impossibile modificare/eliminare | Il gruppo di risorse è di sola lettura e i relativi tag non possono essere modificati. Le risorse con stato Non bloccato possono essere aggiunte, spostate, modificate o eliminate da questo gruppo. |
Sola lettura | Diverso da gruppo di risorse | Sola lettura | La risorsa non può essere modificata in alcun modo. Nessuna modifica e non può essere eliminata. |
Non eliminare | * | Impossibile eliminare | Le risorse possono essere modificate, ma non possono essere eliminate. Le risorse con stato Non bloccato possono essere aggiunte, spostate, modificate o eliminate da questo gruppo. |
Sostituzione degli stati di blocco
In genere è possibile che un utente con il controllo degli accessi in base al ruolo di Azure appropriato nella sottoscrizione, ad esempio il ruolo "Proprietario", possa modificare o eliminare qualsiasi risorsa. Questo accesso non è il caso in cui Azure Blueprints applica il blocco come parte di un'assegnazione distribuita. Se l'assegnazione è stata impostata con l'opzione Sola lettura o Non eliminare, nemmeno il proprietario della sottoscrizione può eseguire l'azione bloccata sulla risorsa protetta.
Questa misura di sicurezza salvaguarda la coerenza del progetto definito e l'ambiente che è stato progettato per creare a partire da eliminazioni accidentali o programmatiche.
Assegnare al gruppo di gestione
L'unica opzione per impedire ai proprietari della sottoscrizione di rimuovere un'assegnazione di progetto consiste nell'assegnare il progetto a un gruppo di gestione. In questo scenario, solo i proprietari del gruppo di gestione dispongono delle autorizzazioni necessarie per rimuovere l'assegnazione del progetto.
Per assegnare il progetto a un gruppo di gestione anziché a una sottoscrizione, la chiamata API REST cambia in modo che sia simile al seguente:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{assignmentMG}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}?api-version=2018-11-01-preview
Il gruppo di gestione definito da {assignmentMG}
deve essere all'interno della gerarchia del gruppo di gestione o essere lo stesso gruppo di gestione in cui viene salvata la definizione del progetto.
Il corpo della richiesta dell'assegnazione del progetto è simile al seguente:
{
"identity": {
"type": "SystemAssigned"
},
"location": "eastus",
"properties": {
"description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
"blueprintId": "/providers/Microsoft.Management/managementGroups/{blueprintMG}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
"scope": "/subscriptions/{targetSubscriptionId}",
"parameters": {
"storageAccountType": {
"value": "Standard_LRS"
},
"costCenter": {
"value": "Contoso/Online/Shopping/Production"
},
"owners": {
"value": [
"johnDoe@contoso.com",
"johnsteam@contoso.com"
]
}
},
"resourceGroups": {
"storageRG": {
"name": "defaultRG",
"location": "eastus"
}
}
}
}
La differenza chiave in questo corpo della richiesta e una assegnata a una sottoscrizione è la properties.scope
proprietà . Questa proprietà obbligatoria deve essere impostata sulla sottoscrizione a cui si applica l'assegnazione del progetto. La sottoscrizione deve essere un figlio diretto della gerarchia del gruppo di gestione in cui viene archiviata l'assegnazione del progetto.
Nota
Un progetto assegnato all'ambito del gruppo di gestione funziona ancora come assegnazione di progetto a livello di sottoscrizione. L'unica differenza è la posizione in cui l'assegnazione del progetto viene archiviata per impedire ai proprietari della sottoscrizione di rimuovere l'assegnazione e i blocchi associati.
Eliminazione degli stati di blocco
Se si rende necessario modificare o eliminare una risorsa protetta da un'assegnazione, è possibile procedere in due modi.
- Aggiornare l'assegnazione del progetto impostando Non bloccare come modalità di blocco
- Eliminare l'assegnazione del progetto
Quando l'assegnazione viene rimossa, i blocchi creati da Azure Blueprints vengono rimossi. La risorsa viene tuttavia tralasciata e dovrà essere eliminati in modo normale.
Funzionamento dei blocchi progetto
Un controllo degli accessi in base al ruolo di Azure nega le assegnazioni viene applicato alle risorse dell'artefatto durante l'assegnazione di un progetto se l'assegnazione ha selezionato l'opzione Sola lettura o Non eliminare . L'azione di negazione viene aggiunta dall'identità gestita dell'assegnazione del progetto e può essere rimossa dalle risorse artefatto solo dalla stessa identità gestita. Questa misura di sicurezza applica il meccanismo di blocco e impedisce la rimozione del blocco del progetto all'esterno di Azure Blueprints.
Le proprietà di assegnazione negate di ogni modalità sono le seguenti:
Modalità | Permissions.Actions | Permissions.NotActions | Entità[i]. Digitare | ExcludePrincipals[i]. Id | DoNotApplyToChildScopes |
---|---|---|---|---|---|
Sola lettura | * | */Leggere Microsoft.Authorization/locks/delete Microsoft.Network/virtualNetwork/subnets/join/action |
SystemDefined (Tutti) | assegnazione del progetto e definizione dell'utente in esclusiPrincipals | Gruppo di risorse - true; Risorsa - false |
Non eliminare | */Elimina | Microsoft.Authorization/locks/delete Microsoft.Network/virtualNetwork/subnets/join/action |
SystemDefined (Tutti) | assegnazione del progetto e definizione dell'utente in esclusiPrincipals | Gruppo di risorse - true; Risorsa - false |
Importante
Azure Resource Manager memorizza nella cache i dettagli di assegnazione di ruolo per un massimo di 30 minuti. Di conseguenza, le azioni di negazione assegnazioni per le risorse del progetto potrebbero non essere completamente attive con effetto immediato. Durante questo periodo di tempo, potrebbe essere possibile eliminare una risorsa che deve essere protetta da blocchi di progetto.
Escludere un'entità da un'assegnazione negata
In alcuni scenari di progettazione o sicurezza, potrebbe essere necessario escludere un'entità dall'assegnazione negata creata dall'assegnazione del progetto. Questo passaggio viene eseguito nell'API REST aggiungendo fino a cinque valori alla matrice esclusiPrincipals nella proprietà locks durante la creazione dell'assegnazione. La definizione di assegnazione seguente è un esempio di corpo della richiesta che include esclusiPrincipal:
{
"identity": {
"type": "SystemAssigned"
},
"location": "eastus",
"properties": {
"description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
"blueprintId": "/providers/Microsoft.Management/managementGroups/{mgId}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
"locks": {
"mode": "AllResourcesDoNotDelete",
"excludedPrincipals": [
"7be2f100-3af5-4c15-bcb7-27ee43784a1f",
"38833b56-194d-420b-90ce-cff578296714"
]
},
"parameters": {
"storageAccountType": {
"value": "Standard_LRS"
},
"costCenter": {
"value": "Contoso/Online/Shopping/Production"
},
"owners": {
"value": [
"johnDoe@contoso.com",
"johnsteam@contoso.com"
]
}
},
"resourceGroups": {
"storageRG": {
"name": "defaultRG",
"location": "eastus"
}
}
}
}
Escludere un'azione da un'assegnazione di rifiuto
Analogamente all'esclusione di un'entità in un'assegnazione negata in un'assegnazione di progetto, è possibile escludere operazioni specifiche del provider di risorse di Azure. All'interno del blocco properties.locks , nello stesso luogo in cui è esclusoPrincipals , è possibile aggiungere un'eccezioneActions :
"locks": {
"mode": "AllResourcesDoNotDelete",
"excludedPrincipals": [
"7be2f100-3af5-4c15-bcb7-27ee43784a1f",
"38833b56-194d-420b-90ce-cff578296714"
],
"excludedActions": [
"Microsoft.ContainerRegistry/registries/push/write",
"Microsoft.Authorization/*/read"
]
},
Anche se gli esclusiPrincipal devono essere espliciti, le voci esclusiAction possono usare *
per la corrispondenza con caratteri jolly delle operazioni del provider di risorse.
Passaggi successivi
- Seguire l'esercitazione sulla protezione delle nuove risorse .
- Informazioni sul ciclo di vita del progetto.
- Informazioni su come usare parametri statici e dinamici.
- Informazioni su come personalizzare l'ordine di sequenziazione del progetto.
- Informazioni su come aggiornare assegnazioni esistenti.
- Risolvere i problemi durante l'assegnazione di un progetto con la risoluzione generale dei problemi.