Share via


Efeito deny das definições do Azure Policy

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

Avaliação de deny

Ao criar ou atualizar um recurso com correspondência em um modo do Resource Manager, o efeito deny impede a solicitação antes de ser enviada 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. Em um modo do provedor de recursos, o provedor de recursos gerencia a avaliação do recurso.

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

Propriedades de deny

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 é obrigatório para definições de política novas ou atualizadas, pois constraintTemplate é obrigatório.

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

      • Se PublicURL, emparelhado com a propriedade url para 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.

      • Se Base64Encoded, emparelhado com a propriedade content para fornecer o modelo de restrição codificado em base 64. Consulte Criar definição de política do modelo de restrição para criar uma definição personalizada de um modelo de restrição Gatekeeper v3 do OPA (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 por meio de 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 por ao templateInfo criar ou atualizar uma definição de política.
    • O modelo de restrição CRD (CustomResourceDefinition) 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, acesse Restrições de 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 a partir de templateInfo e da política.
    • sourceType (obrigatório)
      • Define o tipo de fonte para o modelo de restrição. Valores permitidos: PublicURL ou Base64Encoded.

      • Se PublicURL, emparelhado com a propriedade url para fornecer 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)
    • Uma matriz dos namespaces dos Kubernetes a serem limitados da avaliação de política.
    • Um valor vazio ou ausente faz com que a avaliação de política inclua todos os namespaces, exceto aqueles 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 de política inclua todos as etiquetas e seletores, exceto os namespaces definidos em excludedNamespaces.
  • apiGroups (obrigatório ao usar templateInfo)
    • Uma matriz que inclui os grupos da API correspondentes. Uma matriz vazia ([""]) é o grupo de API principal.
    • A definição ["*"] de apiGroups não é permitida.
  • kinds (obrigatório ao usar templateInfo)
    • Uma matriz que inclui o tipo de objeto de Kubernetes para limitar a avaliação.
    • A definição ["*"] de tipos não é permitida.
  • values (opcional)
    • Define quaisquer parâmetros e valores a ser passados para a restrição. Cada valor deve existir no modelo de restrição CRD.

Exemplo de deny

Exemplo 1: uso do efeito deny nos modos do Resource Manager.

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

Exemplo 2: uso do efeito deny em um modo Microsoft.Kubernetes.Data do provedor de recursos. As informações adicionais em details.templateInfo declaram o uso de PublicURL e definem url para a localização do modelo de restrição 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