Share via


Efeito denyAction das definições do Azure Policy

O efeito denyAction é usado para bloquear solicitações com base na ação pretendida para recursos em escala. No momento, a única ação compatível é DELETE. Esse efeito e o nome da ação ajudam a evitar qualquer exclusão acidental de recursos críticos.

Avaliação de DenyAction

Quando uma chamada de solicitação com um nome de ação aplicável e escopo de destino é enviada, denyAction impede que a solicitação seja bem-sucedida. A solicitação é retornada como um 403 (Forbidden). No portal, Forbidden pode ser exibido como um status de implantação que foi impedido pela atribuição de política.

Microsoft.Authorization/policyAssignments, Microsoft.Authorization/denyAssignments, Microsoft.Blueprint/blueprintAssignments, Microsoft.Resources/deploymentStacks, Microsoft.Resources/subscriptions e Microsoft.Authorization/locks são todos isentos da imposição de denyAction para evitar cenários de bloqueio.

Exclusão de assinatura

A política não bloqueará a remoção de recursos que ocorre durante uma exclusão de assinatura.

Exclusão do grupo de recursos

A política avaliará os recursos compatíveis com a localização e as marcas em relação a políticas denyAction durante uma exclusão do grupo de recursos. Somente as políticas que têm o cascadeBehaviors definido como deny na regra de política bloquearão uma exclusão do grupo de recursos. A política não bloqueará a remoção de recursos incompatíveis com a localização e as marcas nem qualquer política com mode:all.

Exclusão em cascata

A exclusão em cascata ocorre quando a exclusão de um recurso pai exclui implicitamente todos os seus recursos filho e de extensão. A política não bloqueará a remoção de recursos filho e de extensão quando uma ação de exclusão for direcionada aos recursos pai. Por exemplo, Microsoft.Insights/diagnosticSettings é um recurso de extensão de Microsoft.Storage/storageaccounts. Se uma política denyAction for direcionada a Microsoft.Insights/diagnosticSettings, uma chamada de exclusão para a configuração de diagnóstico (filho) falhará, mas uma exclusão para a conta de armazenamento (pai) excluirá implicitamente a configuração de diagnóstico (extensão).

Esta tabela descreve se um recurso está protegido contra exclusão, considerando o recurso aplicável à política denyAction atribuída e o escopo de destino da chamada DELETE. No contexto dessa tabela, um recurso indexado dá suporte a marcas e locais, e um recurso não indexado não dá suporte a marcas ou locais. Para obter mais informações sobre recursos indexados e não indexados, acesse modo de definição. Recursos filho são recursos que existem apenas no contexto de outro recurso. Por exemplo, um recurso de extensão de máquinas virtuais é filho da máquina virtual, que é o recurso pai.

Entidade sendo excluída Entidade aplicável às condições de política Ação executada
Recurso Recurso Protegido
Subscription Recurso Excluído
Grupo de recursos Recurso indexado Depende de cascadeBehaviors
Grupo de recursos Recurso não indexado Excluído
Recurso filho Recurso pai O pai está protegido; o filho é excluído
Recurso pai Recurso filho Excluído

Propriedades DenyAction

A propriedade details do efeito denyAction tem todas as subpropriedades que definem a ação e os comportamentos.

  • actionNames (obrigatório)
    • Uma matriz que especifica quais ações impedir que sejam executadas.
    • Os nomes de ação com suporte são: delete.
  • cascadeBehaviors (opcional)
    • Um objeto que define qual comportamento é seguido quando um recurso é excluído implicitamente quando um grupo de recursos é removido.
    • Há suporte apenas para definições de política com o modo definido como indexed.
    • Os valores permitidos são: allow ou deny.
    • O valor padrão é deny.

Exemplo de DenyAction

Exemplo: negar todas as chamadas de exclusão direcionadas a contas de banco de dados que tenham um ambiente de marca que seja igual a prod. Como o comportamento em cascata é definido como deny, bloqueie qualquer chamada DELETE direcionada a um grupo de recursos com uma conta de banco de dados aplicável.

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.DocumentDb/accounts"
      },
      {
        "field": "tags.environment",
        "equals": "prod"
      }
    ]
  },
  "then": {
    "effect": "denyAction",
    "details": {
      "actionNames": [
        "delete"
      ],
      "cascadeBehaviors": {
        "resourceGroup": "deny"
      }
    }
  }
}

Próximas etapas