Comprensión del bloqueo de recursos en planos técnicos de Azure BlueprintUnderstand resource locking in Azure Blueprints

La creación de entornos coherentes a escala solo es realmente valiosa si existe un mecanismo que mantenga la coherencia.The creation of consistent environments at scale is only truly valuable if there's a mechanism to maintain that consistency. En este artículo se explica cómo funciona el bloqueo de recursos en planos técnicos de Azure Blueprint.This article explains how resource locking works in Azure Blueprints. Para ver un ejemplo del bloqueo de recursos y la aplicación de asignaciones de denegación, consulte el tutorial protección de nuevos recursos.To see an example of resource locking and application of deny assignments, see the protecting new resources tutorial.

Estados y modos de bloqueosLocking modes and states

El modo de bloqueo se aplica a la asignación de planos técnicos y tiene tres opciones: No bloquear, Solo lectura o No eliminar.Locking Mode applies to the blueprint assignment and it has three options: Don't Lock, Read Only, or Do Not Delete. El modo de bloqueo se configura durante la implementación del artefacto durante una asignación de plano técnico.The locking mode is configured during artifact deployment during a blueprint assignment. Se puede establecer otro modo de bloqueo mediante la actualización de la asignación de plano técnico.A different locking mode can be set by updating the blueprint assignment. Sin embargo, los modos de bloqueo no se pueden cambiar fuera de los planos técnicos.Locking modes, however, can't be changed outside of Blueprints.

Los recursos creados por los artefactos en una asignación de plano técnico tienen cuatro estados: Sin bloquear, Solo lectura, No se puede editar o eliminar o No se puede eliminar.Resources created by artifacts in a blueprint assignment have four states: Not Locked, Read Only, Cannot Edit / Delete, or Cannot Delete. Cada tipo de artefacto pueden tener el estado Sin bloquear.Each artifact type can be in the Not Locked state. La tabla siguiente puede usarse para determinar el estado de un recurso:The following table can be used to determine the state of a resource:

ModeMode Tipo de recurso de artefactoArtifact Resource Type StateState DESCRIPCIÓNDescription
No bloquearDon't Lock * Sin bloquearNot Locked Los recursos no están protegidos por planos técnicos.Resources aren't protected by Blueprints. Este estado también se usa para los recursos que se agregan a un artefacto del grupo de recursos de Solo lectura o No eliminar a partir de fuera de una asignación de plano técnico.This state is also used for resources added to a Read Only or Do Not Delete resource group artifact from outside a blueprint assignment.
Solo lecturaRead Only Resource groupResource group No se puede editar o eliminarCannot Edit / Delete El grupo de recursos es de solo lectura, y no se pueden modificar las etiquetas en el grupo de recursos.The resource group is read only and tags on the resource group can't be modified. Los recursos Sin bloquear se pueden agregar, mover, cambiar o elimina de este grupo de recursos.Not Locked resources can be added, moved, changed, or deleted from this resource group.
Solo lecturaRead Only Grupo que no son de recursosNon-resource group Solo lecturaRead Only El recurso no se puede modificar de ninguna manera, no se puede cambiar ni eliminar.The resource can't be altered in any way -- no changes and it can't be deleted.
No eliminarDo Not Delete * No se puede eliminarCannot Delete Los recursos se pueden modificar, pero no se pueden eliminar.The resources can be altered, but can't be deleted. Los recursos Sin bloquear se pueden agregar, mover, cambiar o elimina de este grupo de recursos.Not Locked resources can be added, moved, changed, or deleted from this resource group.

Sustitución de los estados de bloqueoOverriding locking states

Es típico que alguien con elcontrol de acceso basado en roles (RBAC) adecuado en la suscripción, como el rol "Propietario", pueda modificar o eliminar cualquier recurso.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. Este acceso no es el caso cuando se aplican planos de bloqueo como parte de una asignación implementada.This access isn't the case when Blueprints applies locking as part of a deployed assignment. Si la asignación se estableció con la opción Solo lectura o No eliminar, ni siquiera el propietario de la suscripción puede realizar la acción bloqueada en el recurso protegido.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.

Esta medida de seguridad protege la coherencia del plano técnico definido y el entorno en el que se ha diseñado para crear a partir de una eliminación o modificación accidental o mediante programación.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.

Eliminación de los estados de bloqueoRemoving locking states

Si es necesario modificar o eliminar un recurso protegido por una asignación, hay dos maneras de hacerlo.If it becomes necessary to modify or delete a resource protected by an assignment, there are two ways to do so.

  • Actualizar la asignación de plano técnico a un modo de bloqueo de No bloquearUpdating the blueprint assignment to a locking mode of Don't Lock
  • Eliminar la asignación de plano técnicoDelete the blueprint assignment

Cuando se quita la asignación, se quitan los bloqueos creados por los planos técnicos.When the assignment is removed, the locks created by Blueprints are removed. Sin embargo, el recurso se queda atrás y deberá eliminarse por medios normales.However, the resource is left behind and would need to be deleted through normal means.

Cómo funcionan los bloqueos de los planos técnicosHow blueprint locks work

Una acción denegación denegar asignaciones de RBAC se aplica a los recursos de artefactos durante la asignación de un plano técnico si la asignación ha seleccionado la opción Solo lectura o No eliminar.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. La identidad administrada de la asignación del plano técnico agrega la acción de denegación, y solo la misma identidad administrada puede eliminar los recursos del artefacto.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. Esta medida de seguridad refuerza el mecanismo de bloqueo y evita que se quite el bloqueo del plano técnico fuera de Blueprint.This security measure enforces the locking mechanism and prevents removing the blueprint lock outside Blueprints.

Asignación de denegación de plano técnico en un grupo de recursos

Las propiedades de asignación de denegación de cada modo son las siguientes:The deny assignment properties of each mode are as follows:

ModeMode Permissions.ActionsPermissions.Actions Permissions.NotActionsPermissions.NotActions Principals[i].TypePrincipals[i].Type ExcludePrincipals[i].IdExcludePrincipals[i].Id DoNotApplyToChildScopesDoNotApplyToChildScopes
Solo lecturaRead Only * */read*/read SystemDefined (Todos)SystemDefined (Everyone) asignación de plano técnico y definición del usuario en excludedPrincipalsblueprint assignment and user-defined in excludedPrincipals Grupo de recursos: true; Recurso: falseResource group - true; Resource - false
No eliminarDo Not Delete */delete*/delete SystemDefined (Todos)SystemDefined (Everyone) asignación de plano técnico y definición del usuario en excludedPrincipalsblueprint assignment and user-defined in excludedPrincipals Grupo de recursos: true; Recurso: falseResource group - true; Resource - false

Importante

Azure Resource Manager almacena en caché los detalles de asignación de roles durante un máximo de 30 minutos.Azure Resource Manager caches role assignment details for up to 30 minutes. Como resultado, la acción de denegación denegar asignaciones puede que no funcione completamente en los recursos de plano técnico.As a result, deny assignments deny action's on blueprint resources may not immediately be in full effect. Durante este período de tiempo es posible eliminar un recurso diseñado para estar protegido por bloqueos de plano técnico.During this period of time, it might be possible to delete a resource intended to be protected by blueprint locks.

Exclusión de una entidad de seguridad en una asignación de denegaciónExclude a principal from a deny assignment

En algunos escenarios de diseño y seguridad, puede que necesite excluir una entidad de seguridad de la asignación de denegación que creó la asignación del plano técnico.In some design or security scenarios, it may be necessary to exclude a principal from the deny assignment the blueprint assignment creates. Esto se hace en la API REST mediante la adición de hasta cinco valores en la matriz excludedPrincipals de la propiedad locks propiedad cuando se crea la asignación.This is done in REST API by adding up to five values to the excludedPrincipals array in the locks property when creating the assignment. Este es un ejemplo de un cuerpo de la solicitud que incluye 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"
      }
    }
  }
}

Pasos siguientesNext steps