Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Esta é uma documentação não divulgada para Admission Controller 1.34-dev.

Escrevendo políticas brutas

Políticas brutas são políticas que podem avaliar documentos JSON arbitrários. Para mais informações sobre políticas brutas, consulte a página de políticas brutas.

Exemplo

Os seguintes exemplos devem parecer familiares se você completou a página de validação deste tutorial.

Lembre-se de marcar a política como raw, usando o campo policyType na configuração metadata.yml. Consulte a especificação de metadados para mais informações.

Validação

Você vai escrever uma política que aceita uma solicitação no seguinte formato:

{
  "request": {
    "user": "alice",
    "action": "read",
    "resource": "products"
  }
}

Ela valida que apenas o usuário admin pode excluir recursos.

Comece criando uma política usando o modelo de política OPA.

Primeiro, você precisa alterar o arquivo policy.rego para ficar assim:

package validation

deny[msg] {
    input.request.action == "delete"
    input.request.user != "admin"
    msg := sprintf("user %v is not allowed to delete resources", [input.request.user])
}

O módulo utility/policy.rego precisa ser modificado para remover o código específico do Kubernetes:

package policy

import data.validation

main = {
    "response": response,
}

# OPA policy responses need the uid field to be set.
# If the request doesn't contain a uid, set it to an empty string.
default uid = ""

uid = input.request.uid

response = {
    "uid": uid,
    "allowed": false,
    "status": {"message": reason},
} {
    reason = concat(", ", validation.deny)
    reason != ""
} else = {
    "uid": uid,
    "allowed": true,
} {
    true
}