Compreender o bloqueio de recursos no Azure Blueprints

Importante

Em 11 de julho de 2026, os Blueprints (Preview) serão preteridos. Migre suas definições e atribuições de blueprint existentes para Especificações de modelo e Pilhas de implantação. Os artefatos do Blueprint devem ser convertidos em modelos JSON ARM ou arquivos Bicep usados para definir pilhas de implantação. Para saber como criar um artefato como um recurso ARM, consulte:

A criação de ambientes consistentes em escala só é verdadeiramente valiosa se houver um mecanismo para manter essa consistência. Este artigo explica como o bloqueio de recursos funciona no Azure Blueprints. Para ver um exemplo de bloqueio de recursos e aplicação de atribuições de negação, consulte o tutorial de proteção de novos recursos.

Nota

Os bloqueios de recursos implantados pelo Azure Blueprints são aplicados apenas a recursos que não sejam de extensão implantados pela atribuição de blueprint. Os recursos existentes, como aqueles em grupos de recursos que já existem, não têm bloqueios adicionados a eles.

Modos e estados de bloqueio

O Modo de Bloqueio aplica-se à atribuição do blueprint e tem três opções: Não Bloquear, Somente Leitura ou Não Excluir. O modo de bloqueio é configurado durante a implantação do artefato durante uma atribuição de blueprint. Um modo de bloqueio diferente pode ser definido atualizando a atribuição do blueprint. Os modos de bloqueio, no entanto, não podem ser alterados fora dos Azure Blueprints.

Os recursos criados por artefatos em uma atribuição de blueprint têm quatro estados: Não bloqueado, Somente leitura, Não é possível editar/excluir ou Não é possível excluir. Cada tipo de artefato pode estar no estado Não bloqueado . A tabela a seguir pode ser usada para determinar o estado de um recurso:

Modo Tipo de recurso de artefato Condição Description
Não bloqueie * Não bloqueado Os recursos não são protegidos pelos Azure Blueprints. Esse estado também é usado para recursos adicionados a um artefato de grupo de recursos Somente Leitura ou Não Excluir de fora de uma atribuição do blueprint.
Só de Leitura Grupo de recursos Não é possível editar / excluir O grupo de recursos é somente leitura e todas as suas propriedades, exceto as tags , não podem ser modificadas. Os recursos não bloqueados podem ser adicionados, movidos, alterados ou excluídos desse grupo de recursos.
Só de Leitura Grupo sem recursos Só de Leitura Com exceção das tags, o recurso permanece inalterável e não pode ser excluído ou modificado.
Não excluir * Não é possível excluir Os recursos podem ser alterados, mas não podem ser excluídos. Os recursos não bloqueados podem ser adicionados, movidos, alterados ou excluídos desse grupo de recursos.

Substituindo estados de bloqueio

Normalmente, é possível que alguém com o controle de acesso baseado em função do Azure (Azure RBAC) apropriado na assinatura, como a função 'Proprietário', tenha permissão para alterar ou excluir qualquer recurso. Esse acesso não é o caso quando o Azure Blueprints aplica o bloqueio como parte de uma atribuição implantada. Se a atribuição foi definida com a opção Somente leitura ou Não excluir, nem mesmo o proprietário da assinatura pode executar a ação bloqueada no recurso protegido.

Esta medida de segurança protege a consistência do plano definido e do ambiente para o qual foi concebido a partir de eliminação ou alteração acidental ou programática.

Atribuir no grupo de gerenciamento

A única opção para impedir que os proprietários de assinaturas removam uma atribuição de blueprint é atribuir o blueprint a um grupo de gerenciamento. Nesse cenário, somente os proprietários do grupo de gerenciamento têm as permissões necessárias para remover a atribuição de blueprint.

Para atribuir o esquema a um grupo de gerenciamento em vez de uma assinatura, a chamada da API REST muda para ter esta aparência:

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{assignmentMG}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}?api-version=2018-11-01-preview

O grupo de gerenciamento definido por {assignmentMG} deve estar dentro da hierarquia do grupo de gerenciamento ou ser o mesmo grupo de gerenciamento onde a definição do blueprint é salva.

O corpo da solicitação da atribuição de blueprint tem esta aparência:

{
    "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"
            }
        }
    }
}

A principal diferença entre este corpo de solicitação e um que está sendo atribuído a uma assinatura é a properties.scope propriedade. Essa propriedade necessária deve ser definida como a assinatura à qual a atribuição de blueprint se aplica. A assinatura deve ser um filho direto da hierarquia do grupo de gerenciamento onde a atribuição de blueprint está armazenada.

Nota

Um blueprint atribuído ao escopo do grupo de gerenciamento ainda funciona como uma atribuição de blueprint de nível de assinatura. A única diferença é onde a atribuição de blueprint é armazenada para impedir que os proprietários da assinatura removam a atribuição e os bloqueios associados.

Remoção de estados de bloqueio

Se for necessário modificar ou excluir um recurso protegido por uma atribuição, há duas maneiras de fazê-lo.

  • Atualizando a atribuição de blueprint para um modo de bloqueio de Não Bloquear
  • Excluir a atribuição de blueprint

Quando a atribuição é removida, os bloqueios criados pelos Azure Blueprints são removidos. No entanto, o recurso é deixado para trás e precisaria ser excluído por meios normais.

Como funcionam os bloqueios de blueprint

Uma ação de negação de atribuições do RBAC do Azure é aplicada a recursos de artefato durante a atribuição de um blueprint se a atribuição selecionou a opção Somente leitura ou Não excluir. A ação de negação é adicionada pela identidade gerenciada da atribuição de blueprint e só pode ser removida dos recursos de artefato pela mesma identidade gerenciada. Esta medida de segurança impõe o mecanismo de bloqueio e impede a remoção do bloqueio de blueprint fora dos Azure Blueprints.

Screenshot of the Access control (I A M) page and the Deny assignments tab for a resource group.

As propriedades de atribuição de negação de cada modo são as seguintes:

Modo Permissões.Ações Permissões.NotActions Princípios[i]. Tipo ExcludePrincipals[i]. Id DoNotApplyToChildScopes
Só de Leitura * */ler
Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (Todos) atribuição de blueprint e definido pelo usuário em excludedPrincipals Grupo de recursos - true; Recurso - false
Não excluir */suprimir Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (Todos) atribuição de blueprint e definido pelo usuário em excludedPrincipals Grupo de recursos - true; Recurso - false

Importante

O Azure Resource Manager armazena em cache detalhes da atribuição de função por até 30 minutos. Como resultado, negar atribuições negar ações em recursos do blueprint pode não estar imediatamente em pleno vigor. Durante esse período de tempo, pode ser possível excluir um recurso destinado a ser protegido por bloqueios de blueprint.

Excluir uma entidade de segurança de uma atribuição de negação

Em alguns cenários de design ou segurança, pode ser necessário excluir uma entidade de segurança da atribuição de negação criada pela atribuição de blueprint. Esta etapa é feita na API REST adicionando até cinco valores à matriz excludedPrincipals na propriedade locks ao criar a atribuição. A definição de atribuição a seguir é um exemplo de um corpo de solicitação que inclui 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"
      }
    }
  }
}

Excluir uma ação de uma atribuição de negação

Semelhante à exclusão de uma entidade de segurança em uma atribuição de negação em uma atribuição de blueprint, você pode excluir operações específicas do provedor de recursos do Azure. Dentro do bloco properties.locks, no mesmo lugar que excludedPrincipals, um excludedActions pode ser adicionado:

"locks": {
    "mode": "AllResourcesDoNotDelete",
    "excludedPrincipals": [
        "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
        "38833b56-194d-420b-90ce-cff578296714"
    ],
    "excludedActions": [
        "Microsoft.ContainerRegistry/registries/push/write",
        "Microsoft.Authorization/*/read"
    ]
},

Embora excludedPrincipals deva ser explícito, as entradas excludedActions podem ser usadas para correspondência curinga * de operações do provedor de recursos.

Próximos passos