Validating Admission Policy
Kasten introduces support for Kubernetes ValidatingAdmissionPolicies (VAP) to deliver more robust user permission controls and secure data operations across clusters. This new feature helps minimize administrative overhead, empowers namespace and application owners, and maintains strict compliance with organizational standards. The result is a more secure, flexible, and efficient workflow that aligns with modern Kubernetes best practices. For more details, visit the Kubernetes VAP documentation.
By implementing VAP, Kasten enables namespace owners and application-scoped
users to securely manage critical workflows such as disaster recovery (DR),
development/testing, and general data migrations. VAPs are configurable using
the Helm values under the vap
section of the Kasten Helm Chart.
Validating admission policies use Common Expression Language (CEL) to declare the validation rules of a policy.
Common Expression Language (CEL)
The spec.validations[i].expression
in the VAP represents the expression that
will be evaluated by CEL. For more details on CEL syntax, refer to the
Kubernetes documentation
on Validation Expressions.
Prerequisites and Restrictions
Kubernetes 1.31
Full GA support for VAP without additional configuration.
Kasten VAPs
It is not recommended to modify the existing CEL rules in the VAPs installed by Kasten. Modifying the rules will change the security posture of Kasten.
Kasten Policy Permissions VAP
The kasten.policy.permissions
VAP evaluates permissions for a non-admin user
while creating a Kasten policy. This prevents unauthorized access to sensitive
resources and maintains a high level of security compliance across all
Kasten-driven data operations.
The kasten.policy.permissions.binding
VAP binding narrows the scope of the
VAP to non-admin users who are creating policies outside of the kasten-io
namespace.
To enable installation of the VAP and VAP binding, set the
vap.kastenPolicyPermissions.enabled
value in the Kasten Helm chart to true
.
The VAP ensures that the following requirements are maintained for any policy created by such a user:
- The user has access to every Kasten resource (e.g. blueprints, location profiles, transform sets, etc) referenced in any policy.
- The policy has no in-line transforms.
- The Import and Restore policy restores only to the application namespace where it is run.
- The Import and Restore policy does not set the flag to restore cluster resources.
For more information on Import and Restore application-scoped policies created by non-admin users, refer to the Imports section under Application-Scoped Policies.
To view the complete set of the CELs in the VAP and the referenced resources which they protect, admin users can run the following command:
kubectl describe validatingadmissionpolicy kasten.policy.permissions
Similarly, to view the logic for the VAP binding, run the following command:
kubectl describe validatingadmissionpolicybinding kasten.policy.permissions.binding