|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
|
Esta es documentación inédita para Admission Controller 1.34-dev. |
Escribiendo directivas en bruto
Las directivas en bruto son directivas que pueden evaluar documentos JSON arbitrarios. Para más información sobre las directivas en bruto, consulta la página de directivas en bruto.
Ejemplo
Los siguientes ejemplos deberían parecerte familiares si completaste la página de validación de este tutorial.
|
Recuerda marcar la directiva como |
Validación
Vas a escribir una directiva que acepte una solicitud en el siguiente formato:
{
"request": {
"user": "alice",
"action": "read",
"resource": "products"
}
}
Valida que solo el usuario admin puede eliminar recursos.
Comienza por estructurar una directiva utilizando la plantilla de directiva OPA.
Primero necesitas cambiar el archivo policy.rego para que se vea así:
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])
}
El módulo utility/policy.rego necesita modificación para eliminar el código específico de 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
}