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
ouBase64Encoded
.Se
PublicURL
, emparelhado com a propriedadeurl
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 propriedadecontent
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.
- Não pode ser usado com
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 }}
.
- Não pode ser usado com
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.
- Não pode ser usado com
constraintInfo
(opcional)- Não pode ser usado com
constraint
,constraintTemplate
,apiGroups
oukinds
. - Se
constraintInfo
não for fornecido, a restrição poderá ser gerada a partir detemplateInfo
e da política. sourceType
(obrigatório)Define o tipo de fonte para o modelo de restrição. Valores permitidos:
PublicURL
ouBase64Encoded
.Se
PublicURL
, emparelhado com a propriedadeurl
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.
- Não pode ser usado com
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)- Uma matriz dos namespaces dos Kubernetes a serem excluídos da avaliação de política.
labelSelector
(obrigatório)- Um objeto que inclui propriedades do
matchLabels
(objeto) ematchExpression
(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
.
- Um objeto que inclui propriedades do
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.
- Uma matriz que inclui os grupos da API correspondentes. Uma matriz vazia (
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
- Examine os exemplos em amostras do Azure Policy.
- Revise a estrutura de definição do Azure Policy.
- Entenda como criar políticas de forma programática.
- Saiba como obter dados de conformidade.
- Saiba como corrigir recursos fora de conformidade.
- Examine os grupos de gerenciamento do Azure.