Compartilhar via


Efeito deny das definições do Azure Policy

O deny efeito é usado para impedir uma solicitação de recurso que não corresponde aos padrões definidos por meio de uma definição de política e falha na solicitação.

Negar avaliação

Ao criar ou atualizar um recurso correspondente no modo do Resource Manager, negar impede que a solicitação seja enviada antes ao Provedor de Recursos. 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. Para um modo provedor de recursos, o provedor de recursos gerencia a avaliação do recurso.

Durante a avaliação dos recursos existentes, os recursos que correspondem a uma deny definição de política são marcados como não compatíveis.

Negar propriedades

No modo do Resource Manager, o efeito deny não tem propriedades adicionais para uso na condição then da definição de política.

No modo provedor de recursos de Microsoft.Kubernetes.Data, o efeito deny tem as subpropriedades de details a seguir. O uso de templateInfo é necessário para novas definições de política ou para definições de política atualizadas, pois constraintTemplate está obsoleto.

  • templateInfo (obrigatório)
    • Não pode ser usado com constraintTemplate.
    • sourceType (obrigatório)
      • Define o tipo de origem para o modelo de restrição. Valores permitidos: PublicURL ou Base64Encoded.

      • Se PublicURL estiver associado à propriedade url, ele fornecerá a localização do modelo de restrição. A localização deve ser acessível publicamente.

        Aviso

        Não use URIs de SAS ou tokens em url ou qualquer outra coisa que possa expor um segredo.

      • Caso Base64Encoded esteja emparelhado com a propriedade content, fornecerá o modelo de restrição codificado em base 64. Consulte Criar definição de política a partir do modelo de restrição para criar uma definição personalizada de um modelo de restrição do Gatekeeper V3 (Open Policy Agent) existente.

  • constraint (opcional)
    • Não pode ser usado com templateInfo.
    • A implementação de CRD do modelo de restrição. Usa parâmetros passados via values como {{ .Values.<valuename> }}. No exemplo 2 abaixo, esses valores são {{ .Values.excludedNamespaces }} e {{ .Values.allowedContainerImagesRegex }}.
  • constraintTemplate (preterido)
    • Não pode ser usado com templateInfo.
    • Deve ser substituído templateInfo ao criar ou atualizar uma definição de política.
    • O modelo de restrição CustomResourceDefinition (CRD) que define novas restrições. O modelo define a lógica Rego, o esquema de restrição e os parâmetros de restrição que são passados por meio de values do Azure Policy. Para obter mais informações, vá para restrições do Gatekeeper.
  • constraintInfo (opcional)
    • Não pode ser usado com constraint, constraintTemplate, apiGroups ou kinds.
    • Se constraintInfo não for fornecido, a restrição poderá ser gerada de templateInfo e política.
    • sourceType (obrigatório)
      • Define o tipo de fonte para o modelo de restrição. Valores permitidos: PublicURL ou Base64Encoded.

      • Caso PublicURL esteja emparelhado com a propriedade url, fornece a localização da restrição. A localização deve ser acessível publicamente.

        Aviso

        Não use URIs de SAS ou tokens em url ou qualquer outra coisa que possa expor um segredo.

  • namespaces (opcional)
    • Um conjunto de namespaces do Kubernetes para o qual limitar a avaliação de política.
    • Um valor vazio ou ausente faz com que a avaliação da política inclua todos os namespaces, exceto os definidos em excludedNamespaces.
  • excludedNamespaces (obrigatório)
  • labelSelector (obrigatório)
    • Um objeto que inclui propriedades do matchLabels (objeto) e matchExpression (matriz) para permitir a especificação de quais recursos do Kubernetes devem ser incluídos na avaliação de política que correspondeu às etiquetas e seletores fornecidos.
    • Um valor vazio ou ausente faz com que a avaliação da política inclua todos os rótulos e seletores, exceto namespaces definidos em excludedNamespaces.
  • apiGroups (necessário ao usar templateInfo)
    • Uma matriz que inclui os grupos da API correspondentes. Uma matriz vazia ([""]) é o grupo de API principal.
    • A definição ["*"] para apiGroups não é permitida.
  • kinds (necessário ao usar templateInfo)
    • Uma matriz que inclui o tipo de objeto Kubernetes ao qual limitar a avaliação.
    • A definição ["*"] de tipos não é permitida.
  • values (opcional)
    • Define todos os parâmetros e valores a serem passados para a Restrição. Cada valor deve existir no template de restrição CRD.

Exemplo de negação

Exemplo 1: usando o deny efeito para modos do Resource Manager.

"then": {
  "effect": "deny"
}

Exemplo 2: Usando o efeito deny para um modo de provedor de recursos de Microsoft.Kubernetes.Data. As informações adicionais em details.templateInfo declaram o uso de PublicURL e definem url para o local do modelo de constraint a ser usado no Kubernetes para limitar as imagens de contêiner permitidas.

"then": {
  "effect": "deny",
  "details": {
    "templateInfo": {
      "sourceType": "PublicURL",
      "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
    },
    "values": {
      "imageRegex": "[parameters('allowedContainerImagesRegex')]"
    },
    "apiGroups": [
      ""
    ],
    "kinds": [
      "Pod"
    ]
  }
}

Próximas etapas