Estrutura de isenção do Azure Policy

O recurso de isenção do Azure Policy é usado para isentar uma hierarquia de recursos ou um recurso individual da avaliação de iniciativas ou definições. Os recursos isentos são levados em conta para a conformidade geral, mas não podem ser avaliados ou têm uma renúncia temporária. Para obter mais informações, consulte Entender a aplicabilidade no Azure Policy. As isenções do Azure Policy também funcionam com os seguintes modos do Resource Manager: Microsoft.Kubernetes.Data, Microsoft.KeyVault.Data e Microsoft.Network.Data.

Você usa JSON (JavaScript Object Notation) para criar uma isenção de política. A isenção de política contém elementos para:

Uma isenção de política é criada como um objeto filho na hierarquia de recursos ou o recurso individual concede a isenção. As isenções não podem ser criadas no nível do componente do modo de Provedor de recursos. Se o recurso pai ao qual a isenção se aplica for removido, a isenção também será removida.

Por exemplo, o JSON a seguir mostra uma isenção de política na categoria de renúncia de um recurso para uma atribuição de iniciativa chamada resourceShouldBeCompliantInit. O recurso é isento de apenas duas das definições de política na iniciativa: a definição de política personalizada customOrgPolicy (policyDefinitionReferenceId: requiredTags) e a definição de política interna de Locais permitidos (policyDefinitionReferenceId : allowedLocations):

{
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
  "apiVersion": "2020-07-01-preview",
  "name": "resourceIsNotApplicable",
  "type": "Microsoft.Authorization/policyExemptions",
  "properties": {
    "displayName": "This resource is scheduled for deletion",
    "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
    "metadata": {
      "requestedBy": "Storage team",
      "approvedBy": "IA",
      "approvedOn": "2020-07-26T08:02:32.0000000Z",
      "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
    },
    "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
    "policyDefinitionReferenceId": [
      "requiredTags",
      "allowedLocations"
    ],
    "exemptionCategory": "waiver",
    "expiresOn": "2020-12-31T23:59:00.0000000Z",
    "assignmentScopeValidation": "Default"
  }
}

Nome de exibição e descrição

Use displayName e description para identificar a isenção de política e fornecer contexto para seu uso com o recurso específico. displayName tem um comprimento máximo de 128 caracteres e description um comprimento máximo de 512 caracteres.

Metadados

A propriedade metadata permite criar qualquer propriedade filho necessária para armazenar informações relevantes. No exemplo acima, as propriedades requestedBy, approvedBy, approvedOn e ticketRef contêm valores de cliente para fornecer informações sobre quem solicitou e quem aprovou a isenção, quando isso aconteceu, além de um tíquete de acompanhamento interno da solicitação. Essas propriedades metadata são exemplos, mas não são necessárias, e metadata não está limitado a essas propriedades filho.

ID de atribuição de política

Este campo deve conter o nome completo do caminho de uma atribuição de política ou de iniciativa. O policyAssignmentId é uma cadeia de caracteres e não uma matriz. Essa propriedade define de qual atribuição a hierarquia de recursos pai ou o recurso individual está isento.

ID de definição de política

Se policyAssignmentId destinar-se a uma atribuição de iniciativa, a propriedade policyDefinitionReferenceId poderá ser usada para especificar de qual definição de política na iniciativa o recurso em questão está isento. Como o recurso pode estar isento de uma ou mais definições de política incluídas, essa propriedade é uma matriz. Os valores devem corresponder aos contidos na definição de iniciativa nos campos policyDefinitions.policyDefinitionReferenceId.

categoria da isenção

Há duas categorias de isenção que podem ser usadas para agrupar isenções:

  • Mitigado: a isenção é concedida porque a intenção da política é atendida por outro método.
  • Renúncia: a isenção é concedida porque o estado sem conformidade do recurso é aceito temporariamente. Essa categoria também é útil para excluir um recurso ou uma hierarquia de recursos de uma ou mais definições em uma iniciativa, mas não de toda a iniciativa.

Expiração

Para definir quando uma hierarquia de recursos ou um recurso individual não está mais isento de uma atribuição, configure a propriedade expiresOn. Essa propriedade opcional deve estar no formato de data/hora universal ISO 8601 yyyy-MM-ddTHH:mm:ss.fffffffZ.

Observação

As isenções de política não são excluídas quando a data expiresOn é atingida. O objeto é preservado para manutenção de registro, mas a isenção não é mais atendida.

Seletores de recurso

As isenções dão suporte a uma propriedade resourceSelectors opcional que funciona da mesma forma em isenções que em atribuições. Essa propriedade permite a distribuição gradual ou a reversão de uma isenção para determinados subconjuntos de recursos de maneira controlada com base no tipo de recurso, no local do recurso ou se o recurso tem um local. Mais detalhes sobre como usar seletores de recursos podem ser encontrados na estrutura de atribuição. O seguinte JSON é um exemplo de isenção que usa seletores de recursos. Neste exemplo, somente recursos em westcentralus estarão isentos da atribuição de política:

{
  "properties": {
    "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "resourceSelectors": [
      {
        "name": "TemporaryMitigation",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "westcentralus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

As regiões podem ser adicionadas ou removidas da lista resourceLocation no exemplo. Os seletores de recursos permitem maior flexibilidade de onde e como as isenções podem ser criadas e gerenciadas.

Validação de escopo de atribuição (versão prévia)

Na maioria dos cenários, o escopo de isenção é validado para garantir que ele esteja no escopo de atribuição da política ou abaixo dele. A propriedade assignmentScopeValidation opcional pode permitir que uma isenção ignore essa validação e seja criada fora do escopo de atribuição. Essa validação se destina a situações em que uma assinatura precisa ser movida de um MG (grupo de gerenciamento) para outro, mas a movimentação seria impedida pela política devido às propriedades dos recursos dentro da assinatura. Nesse cenário, uma isenção poderia ser criada para que a assinatura em seu MG atual isentasse seus recursos de uma atribuição de política no MG de destino. Dessa forma, quando a assinatura for movida para o MG de destino, a operação não será impedida porque os recursos já estarão isentos da atribuição de política em questão. O uso dessa propriedade é mostrado no exemplo a seguir:

{
  "properties": {
    "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgName}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "assignmentScopeValidation": "DoNotValidate",
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Os valores permitidos para assignmentScopeValidation são Default e DoNotValidate. Se não for especificado, o processo de validação padrão ocorrerá.

Permissões necessárias

As permissões do RBAC (controle de acesso baseado em função) do Azure necessárias para gerenciar objetos de isenção de política estão no grupo de operações Microsoft.Authorization/policyExemptions. As funções internas de Colaborador de política de recurso e Administrador de segurança têm as permissões read e write, enquanto a função de Gravador de dados do Policy Insights (versão prévia) tem a permissão read.

As isenções têm medidas adicionais de segurança por causa do efeito da concessão de uma isenção. Além de precisar da operação Microsoft.Authorization/policyExemptions/write na hierarquia de recursos ou no recurso individual, o criador de uma isenção deve ter o verbo exempt/Action na atribuição de destino.

Criação e gerenciamento de isenção

As isenções são recomendadas para cenários com limite de tempo ou mais específicos em que um recurso ou hierarquia de recursos ainda deve ser rastreado e, de outra forma, seria avaliado, mas há um motivo específico para ele não ser avaliado quanto à conformidade. Por exemplo, se um ambiente tiver a definição interna Storage accounts should disable public network access (ID: b2982f36-99f2-4db5-8eff-283140c09693) atribuída com efeito definido como auditoria. Após a avaliação de conformidade, o recurso StorageAcc1 não está em conformidade, mas StorageAcc1 deve ter o acesso à rede pública habilitado para finalidades comerciais. Nesse momento, uma solicitação deve ser enviada para criar um recurso de isenção destinado a StorageAcc1. Depois que a isenção for criada, StorageAcc1 será mostrado como isento na revisão de conformidade.

Revise regularmente as isenções para garantir que todos os itens qualificados estejam devidamente isentos e remova rapidamente qualquer um que não esteja mais qualificado para ser isento. Nesse momento, os recursos de isenção que expiraram também podem ser excluídos.

Próximas etapas