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.
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
- Siga o tutorial proteger novos recursos .
- Saiba mais sobre o ciclo de vida do esquema.
- Compreenda como utilizar parâmetros estáticos e dinâmicos.
- Aprenda a personalizar a ordem de sequenciação do esquema.
- Saiba como atualizar as atribuições existentes.
- Resolva problemas durante a atribuição de um esquema com a resolução de problemas gerais.