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 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/ExemptRG/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",
        "policyDefinitionReferenceIds": [
            "requiredTags",
            "allowedLocations"
        ],
        "exemptionCategory": "waiver",
        "expiresOn": "2020-12-31T23:59:00.0000000Z",
        "assignmentScopeValidation": "Default"
    }
}

Nome de exibição e descrição

Use displayName e descrição 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 tem um comprimento máximo de 512 caracteres.

Metadados

A propriedade de metadados permite criar qualquer propriedade filha que seja 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, e quando isso aconteceu, além de um tíquete de acompanhamento interno para a solicitação. Essas propriedades filhas de metadados são exemplos, mas não são necessárias, e os metadados não estão limitados a elas.

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. 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 policyDefinitionReferenceIds poderá ser usada para especificar de quais definições 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 quando uma hierarquia de recursos deve ser excluída 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. Essa propriedade funciona da mesma forma em isenções como em atribuições, permitindo 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. Confira este exemplo de isenção JSON, que usa seletores de recursos. Neste exemplo, somente recursos em westcentralus serão isentos da atribuição de política:

{
    "properties": {
        "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "resourceSelectors": [
            {
                "name": "TemporaryMitigation",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "westcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/resourceGroups/demoCluster/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 de política ou no escopo da atribuição de política. A propriedade assignmentScopeValidation opcional pode permitir que uma isenção ignore essa validação e seja criada fora do escopo de atribuição. Isso 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 bloqueada 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á bloqueada porque os recursos já estarão isentos da atribuição de política em questão. O uso dessa propriedade é ilustrado abaixo:

{
    "properties": {
        "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgB}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "assignmentScopeValidation": "DoNotValidate",
    },
    "systemData": { ... },
    "id": "/subscriptions/{subIdA}/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 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 extras de segurança por causa do impacto 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 ele 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 ao StorageAcc1. Depois que a isenção for criada, o StorageAcc1 será mostrado como isento na revisão de conformidade.

Revisite regularmente as isenções para garantir que todos os itens qualificados são devidamente isentos e remova prontamente todo aquele que não está mais qualificado para ser isento. Nesse momento, os recursos de isenção que expiraram também podem ser excluídos.

Próximas etapas