Comprendere il blocco risorse di Azure BlueprintUnderstand resource locking in Azure Blueprints

La creazione di ambienti coerenti su larga scala è davvero efficace solo se esiste un meccanismo che mantenga tale coerenza.The creation of consistent environments at scale is only truly valuable if there's a mechanism to maintain that consistency. Questo articolo spiega il funzionamento del blocco risorse di Azure Blueprint.This article explains how resource locking works in Azure Blueprints. Per un esempio di blocco delle risorse e dell'applicazione delle assegnazioni di rifiuto, vedere l'esercitazione protezione di nuove risorse .To see an example of resource locking and application of deny assignments, see the protecting new resources tutorial.

Modalità di blocco e statiLocking modes and states

La modalità di blocco si applica all'assegnazione del progetto e presenta tre opzioni: Non bloccare, Sola lettura e Non eliminare.Locking Mode applies to the blueprint assignment and it has three options: Don't Lock, Read Only, or Do Not Delete. La modalità di blocco viene configurata durante la distribuzione degli artefatti nel corso dell'assegnazione di un progetto.The locking mode is configured during artifact deployment during a blueprint assignment. È possibile impostare una modalità di blocco diversa aggiornando l'assegnazione del progetto.A different locking mode can be set by updating the blueprint assignment. Le modalità di blocco non possono tuttavia essere modificate al di fuori di Blueprints.Locking modes, however, can't be changed outside of Blueprints.

Le risorse create dagli artefatti nell'assegnazione di un progetto hanno quattro stati: Non bloccato, Sola lettura, Impossibile modificare/eliminare e Impossibile eliminare.Resources created by artifacts in a blueprint assignment have four states: Not Locked, Read Only, Cannot Edit / Delete, or Cannot Delete. Ciascun tipo di artefatto può essere in stato Non bloccato.Each artifact type can be in the Not Locked state. La tabella seguente può essere usata per determinare lo stato di una risorsa:The following table can be used to determine the state of a resource:

ModalitàMode Tipo di risorsa artefattoArtifact Resource Type StateState DescrizioneDescription
Non bloccareDon't Lock * Non bloccatoNot Locked Le risorse non sono protette da Blueprints.Resources aren't protected by 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.This state is also used for resources added to a Read Only or Do Not Delete resource group artifact from outside a blueprint assignment.
Sola letturaRead Only Gruppo di risorseResource group Impossibile modificare/eliminareCannot Edit / Delete Il gruppo di risorse è di sola lettura e i relativi tag non possono essere modificati.The resource group is read only and tags on the resource group can't be modified. Le risorse con stato Non bloccato possono essere aggiunte, spostate, modificate o eliminate da questo gruppo.Not Locked resources can be added, moved, changed, or deleted from this resource group.
Sola letturaRead Only Diverso da gruppo di risorseNon-resource group Sola letturaRead Only Non è possibile modificare la risorsa in alcun modo: non sono consentite modifiche e la risorsa non può essere eliminata.The resource can't be altered in any way -- no changes and it can't be deleted.
Non eliminareDo Not Delete * Impossibile eliminareCannot Delete Le risorse possono essere modificate, ma non possono essere eliminate.The resources can be altered, but can't be deleted. Le risorse con stato Non bloccato possono essere aggiunte, spostate, modificate o eliminate da questo gruppo.Not Locked resources can be added, moved, changed, or deleted from this resource group.

Sostituzione degli stati di bloccoOverriding locking states

È in genere possibile che a un utente con controllo degli accessi in base al ruolo (RBAC) appropriato per la sottoscrizione, ad esempio il ruolo "Proprietario", sia consentito di modificare o eliminare qualsiasi risorsa.It's typically possible for someone with appropriate role-based access control (RBAC) on the subscription, such as the 'Owner' role, to be allowed to alter or delete any resource. Questo tipo di accesso non è appropriato quando si applica il blocco ai progetti come parte di un'assegnazione distribuita.This access isn't the case when Blueprints applies locking as part of a deployed assignment. 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.If the assignment was set with the Read Only or Do Not Delete option, not even the subscription owner can perform the blocked action on the protected resource.

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.This security measure protects the consistency of the defined blueprint and the environment it was designed to create from accidental or programmatic deletion or alteration.

Eliminazione degli stati di bloccoRemoving locking states

Se si rende necessario modificare o eliminare una risorsa protetta da un'assegnazione, è possibile procedere in due modi.If it becomes necessary to modify or delete a resource protected by an assignment, there are two ways to do so.

  • Aggiornare l'assegnazione del progetto impostando Non bloccare come modalità di bloccoUpdating the blueprint assignment to a locking mode of Don't Lock
  • Eliminare l'assegnazione del progettoDelete the blueprint assignment

Quando viene rimossa l'assegnazione, vengono rimossi i blocchi creati da Blueprint.When the assignment is removed, the locks created by Blueprints are removed. La risorsa viene tuttavia tralasciata e dovrà essere eliminati in modo normale.However, the resource is left behind and would need to be deleted through normal means.

Funzionamento dei blocchi progettoHow blueprint locks work

In virtù del controllo degli accessi in base al ruolo, alle risorse artefatto viene applicata un'azione di negazione assegnazioni durante l'assegnazione di un progetto se per l'assegnazione è stata selezionata l'opzione Sola lettura o Non eliminare.An RBAC deny assignments deny action is applied to artifact resources during assignment of a blueprint if the assignment selected the Read Only or Do Not Delete option. 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.The deny action is added by the managed identity of the blueprint assignment and can only be removed from the artifact resources by the same managed identity. Questa misura di sicurezza consente di applicare il meccanismo di blocco e impedisce di eliminare il blocco di progetto al di fuori di Blueprint.This security measure enforces the locking mechanism and prevents removing the blueprint lock outside Blueprints.

Assegnazione di negazione progetto per il gruppo di risorse

Le proprietà di assegnazione Deny di ogni modalità sono le seguenti:The deny assignment properties of each mode are as follows:

ModalitàMode Autorizzazioni. azioniPermissions.Actions Permissions. notactsPermissions.NotActions Principals[i].TypePrincipals[i].Type ExcludePrincipals[i].IdExcludePrincipals[i].Id DoNotApplyToChildScopesDoNotApplyToChildScopes
Sola letturaRead Only * */read*/read SystemDefined (Everyone)SystemDefined (Everyone) assegnazione di progetto e definito dall'utente in excludedPrincipalsblueprint assignment and user-defined in excludedPrincipals Gruppo di risorse- true; Risorsa- falseResource group - true; Resource - false
Non eliminareDo Not Delete */Delete*/delete SystemDefined (Everyone)SystemDefined (Everyone) assegnazione di progetto e definito dall'utente in excludedPrincipalsblueprint assignment and user-defined in excludedPrincipals Gruppo di risorse- true; Risorsa- falseResource group - true; Resource - false

Importante

Azure Resource Manager memorizza nella cache i dettagli di assegnazione di ruolo per un massimo di 30 minuti.Azure Resource Manager caches role assignment details for up to 30 minutes. Di conseguenza, le azioni di negazione assegnazioni per le risorse del progetto potrebbero non essere completamente attive con effetto immediato.As a result, deny assignments deny action's on blueprint resources may not immediately be in full effect. Durante questo periodo di tempo, potrebbe essere possibile eliminare una risorsa che deve essere protetta da blocchi di progetto.During this period of time, it might be possible to delete a resource intended to be protected by blueprint locks.

Escludere un'entità da un'assegnazione di negazioneExclude a principal from a deny assignment

In alcuni scenari di progettazione o di sicurezza, potrebbe essere necessario escludere un'entità dall' assegnazione di negazione creata dall'assegnazione del progetto.In some design or security scenarios, it may be necessary to exclude a principal from the deny assignment the blueprint assignment creates. Questa operazione viene eseguita nell'API REST aggiungendo fino a cinque valori alla matrice excludedPrincipals nella proprietà Locks durante la creazione dell'assegnazione.This is done in REST API by adding up to five values to the excludedPrincipals array in the locks property when creating the assignment. Questo è un esempio di corpo della richiesta che include excludedPrincipals:This is an example of a request body that includes 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"
      }
    }
  }
}

Passaggi successiviNext steps