Partilhar via


Estrutura de atribuição de políticas do Azure

As atribuições de políticas definem quais os recursos avaliados por uma definição ou iniciativa de política. Além disso, a atribuição de políticas pode determinar os valores dos parâmetros desse grupo de recursos no momento da atribuição, tornando possível reutilizar definições de políticas que abordam as mesmas propriedades de recursos com diferentes necessidades de conformidade.

Utiliza JavaScript Object Notation (JSON) para criar uma atribuição de política. A atribuição de política contém elementos para:

Por exemplo, o JSON seguinte mostra um exemplo de pedido de atribuição de política em modo DoNotEnforce com parâmetros:

{
  "properties": {
    "displayName": "Enforce resource naming rules",
    "description": "Force resource names to begin with DeptA and end with -LC",
    "definitionVersion": "1.*.*",
    "metadata": {
      "assignedBy": "Cloud Center of Excellence"
    },
    "enforcementMode": "DoNotEnforce",
    "notScopes": [],
    "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
    "nonComplianceMessages": [
      {
        "message": "Resource names must start with 'DeptA' and end with '-LC'."
      }
    ],
    "parameters": {
      "prefix": {
        "value": "DeptA"
      },
      "suffix": {
        "value": "-LC"
      }
    },
    "identity":  {
      "principalId":  "<PrincipalId>",
      "tenantId":  "<TenantId>",
      "identityType":  "SystemAssigned",
      "userAssignedIdentities":  null
    },
    "location":  "westus",
    "resourceSelectors": [],
    "overrides": [],
  }
}

Scope

O âmbito utilizado para o tempo de criação do recurso atribuído é o fator principal da aplicabilidade dos recursos. Para mais informações sobre o âmbito da atribuição, consulte Compreender o âmbito na Política Azure.

ID e versão da definição da política

Este campo deve ser o nome completo do caminho de uma definição de política ou de uma definição de iniciativa. O policyDefinitionId é uma string e não um array. O conteúdo mais recente da definição ou iniciativa de política atribuída é recuperado sempre que a atribuição de política é avaliada. A recomendação é que, se várias políticas forem frequentemente atribuídas em conjunto, se utilize uma iniciativa em vez disso.

Para definições e iniciativas integradas, pode usar especificamente o definitionVersion para avaliar. Por defeito, a versão está definida para a versão principal mais recente e ingere automaticamente alterações menores e de patches.

  • Para ingerir automaticamente quaisquer pequenas alterações na definição, o número de versão seria #.*.*. O Wildcard representa a ingestão automática de atualizações.
  • Para fixar um caminho de versão menor, o formato de versão seria #.#.*.
  • Todas as alterações de patch devem ser automáticas por razões de segurança. Alterações de patch são limitadas a alterações de texto e cenários de emergência.

Nome de exibição e descrição

Utiliza displayName e description para identificar a atribuição de políticas e para fornecer contexto para a utilização destes com o conjunto específico de recursos. displayName tem um comprimento máximo de 128 caracteres e description um comprimento máximo de 512 caracteres.

Metadata

A propriedade opcional metadata armazena informações sobre a atribuição da política. Os clientes podem definir quaisquer propriedades e valores úteis para a sua organização em metadata. No entanto, existem algumas propriedades comuns usadas pelo Azure Policy. Cada metadata propriedade tem um limite de 1.024 caracteres.

Propriedades comuns dos metadados

  • assignedBy (string): O nome amigável do diretor de segurança que criou a missão.
  • createdBy (string): O GUID do principal de segurança que criou a tarefa.
  • createdOn (string): O formato universal ISO 8601 DateTime que representa a hora de criação da tarefa.
  • updatedBy (string): O nome amigável do principal de segurança que atualizou a atribuição, se houver.
  • updatedOn (string): O formato Universal ISO 8601 DateTime da hora de atualização da atribuição, se existir.

Propriedades de metadados específicas do cenário

  • parameterScopes (objeto): Uma coleção de pares-chave-valor onde a chave corresponde a um nome de parâmetro configurado por strongType e o valor define o âmbito de recurso usado no Portal para fornecer a lista de recursos disponíveis correspondendo ao strongType. O portal define este valor se o âmbito for diferente do âmbito da atribuição. Se definido, uma edição da atribuição de políticas no Portal define automaticamente o âmbito do parâmetro para este valor. No entanto, o âmbito não está limitado ao valor e pode ser alterado para outro escopo.

    O exemplo seguinte de parameterScopes é para um parâmetro strongType chamado backupPolicyId que define um âmbito para a seleção de recursos quando a atribuição é editada no portal.

    "metadata": {
        "parameterScopes": {
          "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • evidenceStorages (objeto): A conta de armazenamento padrão recomendada que deve ser usada para guardar provas de comprovações de atribuição de políticas com manual efeito. A displayName propriedade é o nome da conta de armazenamento. A evidenceStorageAccountID propriedade é o ID do recurso da conta de armazenamento. A evidenceBlobContainer propriedade é o nome do recipiente blob onde planeias guardar as provas.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

Seletores de recursos

A propriedade opcional resourceSelectors facilita práticas de implementação segura (SDP) ao permitir-lhe implementar gradualmente atribuições de políticas com base em fatores como localização de recursos, tipo de recurso ou se um recurso tem uma localização. Quando são usados seletores de recursos, o Azure Policy avalia apenas recursos que sejam aplicáveis às especificações feitas nos seletores de recursos. Os seletores de recursos também podem ser usados para restringir o âmbito das isenções da mesma forma.

No seguinte exemplo de cenário, a nova atribuição de política é avaliada apenas se a localização do recurso for a Leste dos EUA ou a Oeste dos EUA.

{
  "properties": {
    "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
    "definitionVersion": "1.1.*",
    "resourceSelectors": [
      {
        "name": "SDPRegions",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "eastus",
              "westus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
  "type": "Microsoft.Authorization/policyAssignments",
  "name": "ResourceLimit"
}

Quando estiver pronto para expandir o âmbito da avaliação da sua política, só tem de atualizar a atribuição. O exemplo seguinte mostra a nossa atribuição de políticas com mais duas regiões Azure adicionadas ao seletor SDPRegions . Note-se, neste exemplo, SDP significa Prática de Implementação Segura:

{
  "properties": {
    "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
    "definitionVersion": "1.1.*",
    "resourceSelectors": [
      {
        "name": "SDPRegions",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "eastus",
              "westus",
              "centralus",
              "southcentralus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
  "type": "Microsoft.Authorization/policyAssignments",
  "name": "ResourceLimit"
}

Os seletores de recursos têm as seguintes propriedades:

  • name: O nome do seletor de recursos.

  • selectors: (Opcional) A propriedade usada para determinar qual subconjunto de recursos aplicável à atribuição de políticas deve ser avaliada quanto à conformidade.

    • kind: A propriedade de um seletor que descreve qual característica reduz o conjunto de recursos avaliados. Cada tipo só pode ser usado uma vez num único seletor de recursos. Os valores permitidos são:

      • resourceLocation: Esta propriedade é usada para selecionar recursos com base no seu tipo. Não pode ser usado no mesmo seletor de recursos que resourceWithoutLocation.

      • resourceType: Esta propriedade é usada para selecionar recursos com base no seu tipo.

      • resourceWithoutLocation: Esta propriedade é usada para selecionar recursos ao nível da subscrição que não têm localização. Atualmente só suporta subscriptionLevelResources. Não pode ser usado no mesmo seletor de recursos que resourceLocation.

    • in: A lista de valores permitidos para o especificado kind. Não pode ser usado com notIn. Pode conter até 50 valores.

    • notIn: A lista de valores não permitidos para o especificado kind. Não pode ser usado com in. Pode conter até 50 valores.

Um seletor de recursos pode conter múltiplos selectors. Para ser aplicável a um seletor de recursos, este deve cumprir os requisitos especificados por todos os seus selecionadores. Além disso, podem ser especificados até 10 resourceSelectors numa única tarefa. Os recursos dentro do âmbito são avaliados quando satisfazem qualquer um destes seletores de recursos.

Overrides

A propriedade opcional overrides permite-lhe alterar o efeito de uma definição de política sem alterar a definição subjacente da política ou sem utilizar um efeito parametrizado na definição da política.

Um caso de uso comum para as sobrescrições de efeito são as iniciativas políticas com um grande número de definições de políticas associadas. Nesta situação, gerir múltiplos efeitos políticos pode consumir um esforço administrativo significativo, especialmente quando o efeito precisa de ser atualizado periodicamente. Os overrides podem ser usados para atualizar simultaneamente os efeitos de múltiplas definições de políticas dentro de uma iniciativa.

Vamos dar uma vista de olhos a um exemplo. Imagine que tem uma iniciativa de política chamada CostManagement que inclui uma definição de política personalizada com policyDefinitionReferenceIdcorpVMSizePolicy e um único efeito de audit. Suponha que quer atribuir a iniciativa Gestão de Custos, mas ainda não pretende ver relatórios de conformidade para esta política. O efeito desta audit política pode ser substituído por disabled uma substituição na atribuição da iniciativa, como mostrado no exemplo seguinte.

{
  "properties": {
    "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
    "overrides": [
      {
        "kind": "policyEffect",
        "value": "disabled",
        "selectors": [
          {
            "kind": "policyDefinitionReferenceId",
            "in": [
              "corpVMSizePolicy"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
  "type": "Microsoft.Authorization/policyAssignments",
  "name": "CostManagement"
}

Outro caso de uso comum para sobrescrições é a implementação de uma nova versão de uma definição. Para passos recomendados para atualizar de forma segura uma versão de atribuição, veja Implementação segura de políticas.

As substituições têm as seguintes propriedades:

  • kind: A propriedade que a atribuição sobrepõe. Os tipos suportados são policyEffect e policyVersion.

  • value: O novo valor que sobrepõe-se ao valor existente. Para kind: policyEffect, os valores suportados são efeitos. Para kind: policyVersion, o número de versão suportado deve ser maior ou igual ao definitionVersion especificado na atribuição.

  • selectors: (Opcional) A propriedade usada para determinar qual o âmbito da atribuição da apólice deve ter na sobreposição.

    • kind: A propriedade de um seletor que descreve qual característica restringe o âmbito da substituição. Valores permitidos para kind: policyEffect:

      • policyDefinitionReferenceId: Esta propriedade especifica que definições de política dentro de uma atribuição de iniciativa devem assumir a sobreposição de efeito.

      • resourceLocation: Esta propriedade é usada para selecionar recursos com base no seu tipo. Não pode ser usado no mesmo seletor de recursos que resourceWithoutLocation.

      Valor permitido para kind: policyVersion:

      • resourceLocation: Esta propriedade é usada para selecionar recursos com base no seu tipo. Não pode ser usado no mesmo seletor de recursos que resourceWithoutLocation.
    • in: A lista de valores permitidos para o especificado kind. Não pode ser usado com notIn. Pode conter até 50 valores.

    • notIn: A lista de valores não permitidos para o especificado kind. Não pode ser usado com in. Pode conter até 50 valores.

Um override pode ser usado para substituir o efeito de muitas políticas, especificando múltiplos valores no policyDefinitionReferenceId array. Uma única substituição pode ser usada para até 50 policyDefinitionReferenceId, e uma única atribuição de política pode conter até 10 substituições, avaliadas na ordem em que são especificadas. Antes de a atribuição ser criada, o efeito escolhido na sobreposição é validado em relação à regra da política e à lista de valores permitidos pelos parâmetros (nos casos em que o efeito é parametrizado).

Modo de imposição

A enforcementMode propriedade oferece aos clientes a capacidade de testar o resultado de uma política sobre recursos existentes sem iniciar o efeito da política ou acionar entradas no registo de Atividade do Azure.

Este cenário é comumente referido como "E se " e está alinhado com práticas de implementação segura. enforcementMode é diferente do efeito Desativado , pois esse efeito impede que a avaliação de recursos aconteça de todo.

Esta propriedade tem os seguintes valores:

Mode Valor JSON Tipo Remediar manualmente Entrada no registo de atividades Description
Enabled Default cadeia (de caracteres) Yes Yes O efeito da política é aplicado durante a criação ou atualização de recursos.
Disabled DoNotEnforce cadeia (de caracteres) Yes No O efeito da política não é aplicado durante a criação ou atualização de recursos.

Se enforcementMode não for especificado numa definição de política ou iniciativa, utiliza-se o valor Default . As tarefas de remediação podem ser iniciadas para as políticas deployIfNotExists , mesmo quando enforcementMode está definida para DoNotEnforce.

Âmbitos excluídos

O âmbito da tarefa inclui todos os contentores de recursos infantis e recursos infantis. Se um contentor de recurso filho ou recurso filho não deverá ter a definição aplicada, cada um pode ser excluído da avaliação ao definir notScopes. Esta propriedade é um array que permite excluir um ou mais contentores de recursos ou recursos da avaliação. notScopes pode ser adicionado ou atualizado após a criação da atribuição inicial.

Note

Um recurso excluído é diferente de um recurso isento . Para mais informações, consulte Compreender o âmbito na Política Azure.

Mensagens de não conformidade

Para definir uma mensagem personalizada que descreva porque é que um recurso não está em conformidade com a definição de política ou iniciativa, definido nonComplianceMessages na definição de atribuição. Este nó é uma matriz de message entradas. Esta mensagem personalizada é adicional à mensagem de erro padrão para não conformidade e é opcional.

Important

Mensagens personalizadas para não conformidade são suportadas apenas em definições ou iniciativas com definições de modos Gestor de Recursos .

"nonComplianceMessages": [
  {
    "message": "Default message"
  }
]

Se a atribuição for para uma iniciativa, podem ser configuradas mensagens diferentes para cada definição de política na iniciativa. As mensagens utilizam o policyDefinitionReferenceId valor configurado na definição da iniciativa. Para mais informações, consulte definições de políticas e propriedades.

"nonComplianceMessages": [
  {
    "message": "Default message"
  },
  {
    "message": "Message for just this policy definition by reference ID",
    "policyDefinitionReferenceId": "10420126870854049575"
  }
]

Parameters

Este segmento da atribuição de políticas fornece os valores para os parâmetros definidos na definição de política ou definição de iniciativa. Este design permite reutilizar uma definição de política ou iniciativa com diferentes recursos, mas verificar diferentes valores ou resultados empresariais.

"parameters": {
  "prefix": {
    "value": "DeptA"
  },
  "suffix": {
    "value": "-LC"
  }
}

Neste exemplo, os parâmetros previamente definidos na definição da política são prefix e suffix. Esta atribuição de política em particular define prefix para DeptA e define suffix para -LC. A mesma definição de política é reutilizável com um conjunto diferente de parâmetros para um departamento diferente, reduzindo a duplicação e complexidade das definições de políticas, ao mesmo tempo que proporciona flexibilidade.

Identity

Atribuições de políticas com efeito definido como deployIfNotExists ou modify devem ter uma propriedade de identidade para corrigir recursos não conformes. Uma única atribuição de política pode ser associada apenas a uma identidade gerida atribuída pelo sistema ou pelo utilizador. No entanto, essa identidade pode ser atribuída a mais do que um papel, se necessário.

As atribuições que utilizam uma identidade gerida atribuída pelo sistema também devem especificar uma propriedade de topo location para determinar onde serão implementadas. A localização não pode ser definida para global, nem pode ser alterada. A location propriedade é especificada apenas nas versões da API Rest de 2018-05-01 e posteriores. Se uma localização for especificada numa atribuição que não usa identidade, então a localização será ignorada.

# System-assigned identity
  "identity":  {
    "principalId":  "<PrincipalId>",
    "tenantId":  "<TenantId>",
    "identityType":  "SystemAssigned",
    "userAssignedIdentities":  null
  },
  "location":  "westus",
  ...

# User-assigned identity
  "identity": {
  "identityType": "UserAssigned",
  "userAssignedIdentities": {
    "/subscriptions/SubscriptionID/resourceGroups/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
  }
},

Note

Para uma deployIfNotExists política, a identidade da atribuição é sempre usada para a implementação do ARM Template. No entanto, quando o recurso alvo é criado ou atualizado, a identidade do requerente é usada para a avaliação.

Por exemplo, imagine uma política que implementa Microsoft.Insights/diagnosticSettings em Microsoft.KeyVault/vaults. Quando um cofre de chaves é criado, a identidade do chamador será usada para obter recursos Microsoft.Insights/diagnosticSettings necessários para avaliar a existência da definição da política. Se as condições forem atendidas, então a identidade da atribuição de política será usada para configurar as definições de diagnóstico no cofre de chaves. Isto significa que o chamador precisaria Microsoft.Insights/diagnosticSettings/read permissions, e a atribuição precisaria Microsoft.Insights/diagnosticSettings/write permissions.

Próximos passos