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 di modello e stack di distribuzione. Gli artefatti del progetto devono essere convertiti in modelli JSON ARM o in 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 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.
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 | Regione | Descrizione |
---|---|---|---|
Non bloccare | * | Non bloccata | 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 | Gruppo di risorse | Impossibile modificare/eliminare | Il gruppo di risorse è di sola lettura e tutte le relative proprietà, ad eccezione dei tag, non possono essere modificate. 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 | Ad eccezione dei tag, la risorsa rimane invariata e non può essere eliminata o modificata. |
Non eliminare | * | Eliminazione impossibile | 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 protegge la coerenza del progetto definito e dell'ambiente creato dal progetto da eliminazioni o modifiche accidentali o programmatiche.
Assegnare al gruppo di gestione
L'unica opzione per impedire ai proprietari di sottoscrizioni 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 alla 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 principale 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 è 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 è archiviata l'assegnazione del progetto 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'azione di negazione delle assegnazioni di rifiuto del controllo degli accessi in base al ruolo di Azure viene applicata alle risorse degli artefatti 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 di rifiuto di ogni modalità sono le seguenti:
Modalità | Permissions.Actions | Permissions.NotActions | Principals[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 definita dall'utente in excludedPrincipals | 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 definita dall'utente in excludedPrincipals | 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 di rifiuto
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 excludedPrincipals nella proprietà locks durante la creazione dell'assegnazione. La definizione di assegnazione seguente è un esempio di corpo della richiesta che include excludedPrincipals:
{
"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à per un'assegnazione di rifiuto in un'assegnazione di progetto, è possibile escludere operazioni specifiche del provider di risorse di Azure. All'interno del blocco properties.locks, nella stessa posizione in cui è esclusoPrincipals, è possibile aggiungere un elemento excludedActions:
"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 excludedPrincipals deve essere esplicito, le voci excludedActions possono usare *
per la corrispondenza con caratteri jolly delle operazioni del provider di risorse.
Passaggi successivi
- Seguire l'esercitazione proteggere le 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.