From 4ea1126fce1f2781d46530fe42cc1d66251307fe Mon Sep 17 00:00:00 2001 From: Jim Bugwadia Date: Wed, 14 Oct 2020 17:39:45 -0700 Subject: [PATCH] remove docs and update README.md --- README.md | 166 +- .../images/Kyverno-Policy-Structure.png | Bin 81774 -> 0 bytes documentation/images/Kyverno.png | Bin 253748 -> 0 bytes documentation/index.html | 2081 ----------------- documentation/installation.md | 333 --- documentation/kyverno-cli.md | 216 -- documentation/policy-violations.md | 31 - documentation/testing-policies.md | 30 - documentation/writing-policies-autogen.md | 24 - documentation/writing-policies-background.md | 20 - .../writing-policies-configmap-reference.md | 93 - documentation/writing-policies-generate.md | 135 -- .../writing-policies-match-exclude.md | 142 -- documentation/writing-policies-mutate.md | 326 --- .../writing-policies-preconditions.md | 48 - documentation/writing-policies-validate.md | 299 --- documentation/writing-policies-variables.md | 35 - documentation/writing-policies.md | 16 - pkg/api/kyverno/v1/types.go | 35 +- pkg/engine/generation.go | 1 + pkg/engine/mutation.go | 6 + pkg/engine/utils.go | 16 +- pkg/policy/validate.go | 50 +- 23 files changed, 90 insertions(+), 4013 deletions(-) delete mode 100644 documentation/images/Kyverno-Policy-Structure.png delete mode 100644 documentation/images/Kyverno.png delete mode 100644 documentation/index.html delete mode 100644 documentation/installation.md delete mode 100644 documentation/kyverno-cli.md delete mode 100644 documentation/policy-violations.md delete mode 100644 documentation/testing-policies.md delete mode 100644 documentation/writing-policies-autogen.md delete mode 100644 documentation/writing-policies-background.md delete mode 100644 documentation/writing-policies-configmap-reference.md delete mode 100644 documentation/writing-policies-generate.md delete mode 100644 documentation/writing-policies-match-exclude.md delete mode 100644 documentation/writing-policies-mutate.md delete mode 100644 documentation/writing-policies-preconditions.md delete mode 100644 documentation/writing-policies-validate.md delete mode 100644 documentation/writing-policies-variables.md delete mode 100644 documentation/writing-policies.md diff --git a/README.md b/README.md index c9223a5d6c..73eb439f67 100644 --- a/README.md +++ b/README.md @@ -4,176 +4,22 @@ ![logo](documentation/images/Kyverno_Horizontal.png) -Kyverno is a policy engine built for Kubernetes: -* policies as Kubernetes resources (no new language to learn!) -* validate, mutate, or generate any resource -* match resources using label selectors and wildcards -* validate and mutate using overlays (like Kustomize!) -* generate and synchronize defaults across namespaces -* block or report violations -* test using kubectl -Watch a 3 minute video review of Kyverno on Coffee and Cloud Native with Adrian Goins: +
-[![Kyyverno review on Coffee and Cloud Native](https://img.youtube.com/vi/DW2u6LhNMh0/0.jpg)](https://www.youtube.com/watch?v=DW2u6LhNMh0&feature=youtu.be&t=116) - - -## Quick Start - -**NOTE** : Your Kubernetes cluster version must be above v1.14 which adds webhook timeouts. -To check the version, enter `kubectl version`. - -Install Kyverno: -```console -kubectl create -f https://raw.githubusercontent.com/kyverno/kyverno/master/definitions/release/install.yaml -``` - -You can also install Kyverno using a [Helm chart](https://github.com/kyverno/kyverno/blob/master/documentation/installation.md#install-kyverno-using-helm). - -Add the policy below. It contains a single validation rule that requires that all pods have -a `app.kubernetes.io/name` label. Kyverno supports different rule types to validate, -mutate, and generate configurations. The policy attribute `validationFailureAction` is set -to `enforce` to block API requests that are non-compliant (using the default value `audit` -will report violations but not block requests.) - -```yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: require-labels -spec: - validationFailureAction: enforce - rules: - - name: check-for-labels - match: - resources: - kinds: - - Pod - validate: - message: "label `app.kubernetes.io/name` is required" - pattern: - metadata: - labels: - app.kubernetes.io/name: "?*" -``` - -Try creating a deployment without the required label: - -```console -kubectl create deployment nginx --image=nginx -``` - -You should see an error: -```console -Error from server: admission webhook "nirmata.kyverno.resource.validating-webhook" denied the request: - -resource Deployment/default/nginx was blocked due to the following policies - -require-labels: - autogen-check-for-labels: 'Validation error: label `app.kubernetes.io/name` is required; - Validation rule autogen-check-for-labels failed at path /spec/template/metadata/labels/app.kubernetes.io/name/' -``` - -Create a pod with the required label. For example from this YAML: -```yaml -kind: "Pod" -apiVersion: "v1" -metadata: - name: nginx - labels: - app.kubernetes.io/name: nginx -spec: - containers: - - name: "nginx" - image: "nginx:latest" -``` - -This pod configuration complies with the policy rules, and is not blocked. - -Clean up by deleting all cluster policies: - -```console -kubectl delete cpol --all -``` - -As a next step, browse the [sample policies](https://github.com/kyverno/kyverno/blob/master/samples/README.md) -and learn about [writing policies](https://github.com/kyverno/kyverno/blob/master/documentation/writing-policies.md). -You can test policies using the [Kyverno cli](https://github.com/kyverno/kyverno/blob/master/documentation/kyverno-cli.md). -See [docs](https://github.com/kyverno/kyverno/#documentation) for complete details. +> Kyverno is a policy engine designed for Kubernetes. It can validate, mutate, and generate configurations using admission controls and background scans. Kyverno policies are Kubernetes resources and do not require learning a new language. Kyverno is designed to work nicely with tools you already use like `kubectl`, `kustomize`, and `Git`. ## Documentation -- [Getting Started](documentation/installation.md) -- [Writing Policies](documentation/writing-policies.md) - - [Selecting Resources](/documentation/writing-policies-match-exclude.md) - - [Validating Resources](documentation/writing-policies-validate.md) - - [Mutating Resources](documentation/writing-policies-mutate.md) - - [Generating Resources](documentation/writing-policies-generate.md) - - [Variable Substitution](documentation/writing-policies-variables.md) - - [Preconditions](documentation/writing-policies-preconditions.md) - - [Auto-Generation of Pod Controller Policies](documentation/writing-policies-autogen.md) - - [Background Processing](documentation/writing-policies-background.md) - - [Using ConfigMaps for variables](documentation/writing-policies-configmap-reference.md) -- [Testing Policies](documentation/testing-policies.md) -- [Policy Violations](documentation/policy-violations.md) -- [Kyverno CLI](documentation/kyverno-cli.md) -- [Sample Policies](/samples/README.md) -- [API Documentation](https://htmlpreview.github.io/?https://github.com/kyverno/kyverno/blob/master/documentation/index.html) +Kyverno guides and reference documents are available at: kyverno.io. -## License +## Contributing -[Apache License 2.0](https://github.com/kyverno/kyverno/blob/master/LICENSE) +Checkout out the Kyverno Community page for ways to get involved and details on joining our next community meeting. -## Community - -### Community Meetings - -To attend our next monthly community meeting join the [Kyverno group](https://groups.google.com/g/kyverno). You will then be sent a meeting invite and get access to the [agenda and meeting notes](https://docs.google.com/document/d/10Hu1qTip1KShi8Lf_v9C5UVQtp7vz_WL3WVxltTvdAc/edit#). - -### Getting Help +## Getting Help - For feature requests and bugs, file an [issue](https://github.com/kyverno/kyverno/issues). - For discussions or questions, join the **#kyverno** channel on the [Kubernetes Slack](https://kubernetes.slack.com/) or the [mailing list](https://groups.google.com/g/kyverno). -### Contributing - -Thanks for your interest in contributing! - -- Please review and agree to abide with the [Code of Conduct](/CODE_OF_CONDUCT.md) before contributing. -- We encourage all contributions and encourage you to read our [contribution guidelines](./CONTRIBUTING.md). -- See the [Wiki](https://github.com/kyverno/kyverno/wiki) for developer documentation. -- Browse through the [open issues](https://github.com/kyverno/kyverno/issues) - -## Presentations and Articles - -- [Coffee and Cloud Native Video Review](https://www.youtube.com/watch?v=DW2u6LhNMh0&feature=youtu.be&t=116) -- [CNCF Webinar Video and Slides](https://www.cncf.io/webinars/how-to-keep-your-clusters-safe-and-healthy/) -- [VMware Code Meetup Video](https://www.youtube.com/watch?v=mgEmTvLytb0) -- [Virtual Rejekts Video](https://www.youtube.com/watch?v=caFMtSg4A6I) -- [TGIK Video](https://www.youtube.com/watch?v=ZE4Zu9WQET4&list=PL7bmigfV0EqQzxcNpmcdTJ9eFRPBe-iZa&index=18&t=0s) -- [10 Kubernetes Best Practices - blog post](https://thenewstack.io/10-kubernetes-best-practices-you-can-easily-apply-to-your-clusters/) -- [Introducing Kyverno - blog post](https://nirmata.com/2019/07/11/managing-kubernetes-configuration-with-policies/) - - -## Alternatives - -### Open Policy Agent - -[Open Policy Agent (OPA)](https://www.openpolicyagent.org/) is a general-purpose policy engine that can be used as a Kubernetes admission controller. It supports a large set of use cases. Policies are written using [Rego](https://www.openpolicyagent.org/docs/latest/how-do-i-write-policies#what-is-rego) a custom query language. - -### k-rail - -[k-rail](https://github.com/cruise-automation/k-rail/) provides several ready to use policies for security and multi-tenancy. The policies are written in Golang. Several of the [Kyverno sample policies](/samples/README.md) were inspired by k-rail policies. - -### Polaris - -[Polaris](https://github.com/reactiveops/polaris) validates configurations for best practices. It includes several checks across health, networking, security, etc. Checks can be assigned a severity. A dashboard reports the overall score. - -### External configuration management tools - -Tools like [Kustomize](https://github.com/kubernetes-sigs/kustomize) can be used to manage variations in configurations outside of clusters. There are several advantages to this approach when used to produce variations of the same base configuration. However, such solutions cannot be used to validate or enforce configurations. - -## Roadmap - -See [Milestones](https://github.com/kyverno/kyverno/milestones) and [Issues](https://github.com/kyverno/kyverno/issues). diff --git a/documentation/images/Kyverno-Policy-Structure.png b/documentation/images/Kyverno-Policy-Structure.png deleted file mode 100644 index afd6ac6c6505aa528257ebd07f7257a1086bfeb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81774 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:#;ji&)p@dn$z$n!6JEu#s7IG8&T(cP6!e`xGm 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 z zDuWPumx{^JnyYMzh>t31KLo*h=t|YVWCQ67GWx%MdXAH&9(aYU3Fqg@k2;^f@ot(^ zr6^3yJ(CbQPXpk3<2Ed~ai#kGcqIg_CM03J0dj*|;~$-h^9{m52a6H-0c+P-bP;Ft>Bm22oxaY7Vv~OSSF+=LlswIV>0En)?iZtv<)lQnu%oe?U%uDJjxE1sMm->Q5)aT55t<|G;rS`Nem5dv+;D0ra8dh8bI!##>lt)}K|=a*g%XsmH?HDVd;g*) z^H{e8Z!2NcynpYLiB!6Y^U<9sMQzyO#cE1s4^?0?{Zj8v^c2R|Pg z4O8&F(?74b9orRxe_hV9hBreb1QwE_yv=YDIEPQE8al$DyqPnikotV9@;nLUR�U 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%0A7OL!bJT&w?}-(%l!$nqXTxgTQ=4Os}? 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 - - - - - -Kyverno API - - - - - - - - - diff --git a/documentation/installation.md b/documentation/installation.md deleted file mode 100644 index 4db03c5822..0000000000 --- a/documentation/installation.md +++ /dev/null @@ -1,333 +0,0 @@ -*[documentation](/README.md#documentation) / Installation* - -# Installation - -You can install Kyverno using the Helm chart or YAML files in this repository. - -## Install Kyverno using Helm - -Add the nirmata Helm repository -```sh -helm repo add kyverno https://kyverno.github.io/kyverno/ -``` - -Create a namespace and then install the kyverno helm chart. -```sh -# Create a namespace -kubectl create ns - -# Install the kyverno helm chart -helm install kyverno --namespace kyverno/kyverno -``` -For installing in kyverno namespace: -```sh -kubectl create ns kyverno - -helm install kyverno --namespace kyverno kyverno/kyverno -``` - -## Install Kyverno using YAMLs - -The Kyverno policy engine runs as an admission webhook and requires a CA-signed certificate and key to setup secure TLS communication with the kube-apiserver (the CA can be self-signed). There are 2 ways to configure the secure communications link between Kyverno and the kube-apiserver. - -### Option 1: Use kube-controller-manager to generate a CA-signed certificate - -Kyverno can request a CA signed certificate-key pair from `kube-controller-manager`. To install Kyverno in a cluster that supports certificate signing, run the following command on a host with kubectl `cluster-admin` access: - -```sh -## Install Kyverno -kubectl create -f https://github.com/kyverno/kyverno/raw/master/definitions/install.yaml -``` - -This method requires that the kube-controller-manager is configured to act as a certificate signer. To verify that this option is enabled for your cluster, check the command-line args for the kube-controller-manager. If `--cluster-signing-cert-file` and `--cluster-signing-key-file` are passed to the controller manager with paths to your CA's key-pair, then you can proceed to install Kyverno using this method. - -**Deploying on EKS requires enabling a command-line argument `--fqdn-as-cn` in the 'kyverno' container in the deployment, due to a current limitation with the certificates returned by EKS for CSR(bug: https://github.com/awslabs/amazon-eks-ami/issues/341)** - -Note that the above command will install the last released (stable) version of Kyverno. If you want to install the latest version, you can edit the [install.yaml] and update the image tag. - -Also, by default kyverno is installed in "kyverno" namespace. To install in different namespace, you can edit the [install.yaml] and update the namespace. - -To check the Kyverno controller status, run the command: - -```sh -## Check pod status -kubectl get pods -n -```` - -If the Kyverno controller is not running, you can check its status and logs for errors: - -````sh -kubectl describe pod -n -```` - -````sh -kubectl logs -n -```` - - -### Option 2: Use your own CA-signed certificate - -You can install your own CA-signed certificate, or generate a self-signed CA and use it to sign a certifcate. Once you have a CA and X.509 certificate-key pair, you can install these as Kubernetes secrets in your cluster. If Kyverno finds these secrets, it uses them. Otherwise it will request the kube-controller-manager to generate a certificate (see Option 1 above). - -#### 2.1. Generate a self-signed CA and signed certificate-key pair - -**Note: using a separate self-signed root CA is difficult to manage and not recommeded for production use.** - -If you already have a CA and a signed certificate, you can directly proceed to Step 2. - -Here are the commands to create a self-signed root CA, and generate a signed certificate and key using openssl (you can customize the certificate attributes for your deployment): - -1. Create a self-signed CA - -````bash -openssl genrsa -out rootCA.key 4096 -openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt -subj "/C=US/ST=test/L=test /O=test /OU=PIB/CN=*.kyverno.svc/emailAddress=test@test.com" -```` - -2. Create a keypair - -````bash -openssl genrsa -out webhook.key 4096 -openssl req -new -key webhook.key -out webhook.csr -subj "/C=US/ST=test /L=test /O=test /OU=PIB/CN=kyverno-svc.kyverno.svc/emailAddress=test@test.com" -```` - -3. Create a **webhook.ext file** with the Subject Alternate Names (SAN) to use. This is required with Kubernetes 1.19+ and Go 1.15+. - -```` -subjectAltName = DNS:kyverno-svc,DNS:kyverno-svc.kyverno,DNS:kyverno-svc.kyverno.svc -```` - -4. Sign the keypair with the CA passing in the extension - -````bash -openssl x509 -req -in webhook.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out webhook.crt -days 1024 -sha256 -extfile webhook.ext -```` - -5. Verify the contents of the certificate - -````bash - openssl x509 -in webhook.crt -text -noout -```` - -The certificate must contain the SAN information in the X509v3 extensions section: - -```` -X509v3 extensions: - X509v3 Subject Alternative Name: - DNS:kyverno-svc, DNS:kyverno-svc.kyverno, DNS:kyverno-svc.kyverno.svc -```` - - -#### 2.2. Configure secrets for the CA and TLS certificate-key pair - -You can now use the following files to create secrets: -- rootCA.crt -- webhooks.crt -- webhooks.key - -To create the required secrets, use the following commands (do not change the secret names): - -````bash -kubectl create ns -kubectl create secret tls kyverno-svc.kyverno.svc.kyverno-tls-pair --cert=webhook.crt --key=webhook.key -n -kubectl annotate secret kyverno-svc.kyverno.svc.kyverno-tls-pair self-signed-cert=true -n -kubectl create secret generic kyverno-svc.kyverno.svc.kyverno-tls-ca --from-file=rootCA.crt -n -```` - -**NOTE: The annotation on the TLS pair secret is used by Kyverno to identify the use of self-signed certificates and checks for the required root CA secret** - -Secret | Data | Content ------------- | ------------- | ------------- -`kyverno-svc.kyverno.svc.kyverno-tls-pair` | rootCA.crt | root CA used to sign the certificate -`kyverno-svc.kyverno.svc.kyverno-tls-ca` | tls.key & tls.crt | key and signed certificate - -Kyverno uses secrets created above to setup TLS communication with the kube-apiserver and specify the CA bundle to be used to validate the webhook server's certificate in the admission webhook configurations. - -#### 2.3. Install Kyverno - -You can now install kyverno by downloading and updating the [install.yaml], or using the command below (assumes that the namespace is **kyverno**): - -```sh -kubectl create -f https://github.com/kyverno/kyverno/raw/master/definitions/install.yaml -``` - - -# Configure Kyverno permissions -Kyverno, in `foreground` mode, leverages admission webhooks to manage incoming api-requests, and `background` mode applies the policies on existing resources. It uses ServiceAccount `kyverno-service-account`, which is bound to multiple ClusterRole, which defines the default resources and operations that are permitted. - -ClusterRoles used by kyverno: -- kyverno:webhook -- kyverno:userinfo -- kyverno:customresources -- kyverno:policycontroller -- kyverno:generatecontroller - -The `generate` rule creates a new resource, and to allow kyverno to create resource kyverno ClusterRole needs permissions to create/update/delete. This can be done by adding the resource to the ClusterRole `kyverno:generatecontroller` used by kyverno or by creating a new ClusterRole and a ClusterRoleBinding to kyverno's default ServiceAccount. - -```yaml -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - name: kyverno:generatecontroller -rules: -- apiGroups: - - "*" - resources: - - namespaces - - networkpolicies - - secrets - - configmaps - - resourcequotas - - limitranges - - ResourceA # new Resource to be generated - - ResourceB - verbs: - - create # generate new resources - - get # check the contents of exiting resources - - update # update existing resource, if required configuration defined in policy is not present - - delete # clean-up, if the generate trigger resource is deleted -``` -```yaml -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1beta1 -metadata: - name: kyverno-admin-generate -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: kyverno:generatecontroller # clusterRole defined above, to manage generated resources -subjects: -- kind: ServiceAccount - name: kyverno-service-account # default kyverno serviceAccount - namespace: kyverno -``` - -# Custom installations - -To install a specific version, download [install.yaml] and then change the image tag. - -e.g., change image tag from `latest` to the specific tag `v1.0.0`. ->>> - spec: - containers: - - name: kyverno - # image: nirmata/kyverno:latest - image: nirmata/kyverno:v1.0.0 - -To install in a specific namespace replace the namespace "kyverno" with your namespace. - -Example: -````sh -apiVersion: v1 -kind: Namespace -metadata: - name: -```` -````sh -apiVersion: v1 -kind: Service -metadata: - labels: - app: kyverno - name: kyverno-svc - namespace: -```` -and in other places (ServiceAccount, ClusterRoles, ClusterRoleBindings, ConfigMaps, Service, Deployment) where namespace is mentioned. - -To run kyverno: -````sh -kubectl create -f ./install.yaml -```` - -To check the Kyverno controller status, run the command: - -````sh -kubectl get pods -n -```` - -If the Kyverno controller is not running, you can check its status and logs for errors: - -````sh -kubectl describe pod -n -```` - -````sh -kubectl logs -n -```` - -Here is a script that generates a self-signed CA, a TLS certificate-key pair, and the corresponding kubernetes secrets: [helper script](/scripts/generate-self-signed-cert-and-k8secrets.sh) - -# Configure Kyverno flags - -1. `excludeGroupRole` : excludeGroupRole role expected string with Comma seperated group role. It will exclude all the group role from the user request. Default we are using `system:serviceaccounts:kube-system,system:nodes,system:kube-scheduler`. -2. `excludeUsername` : excludeUsername expected string with Comma seperated kubernetes username. In generate request if user enable `Synchronize` in generate policy then only kyverno can update/delete generated resource but admin can exclude specific username who have access of delete/update generated resource. -3. `filterK8Resources`: k8s resource in format [kind,namespace,name] where policy is not evaluated by the admission webhook. For example --filterKind "[Deployment, kyverno, kyverno]" --filterKind "[Deployment, kyverno, kyverno],[Events, *, *]. - - -# Configure access to policy violations - -During Kyverno installation, it creates a ClusterRole `kyverno:policyviolations` which has the `list,get,watch` operations on resource `policyviolations`. To grant access to a namespace admin, configure the following YAML file then apply to the cluster. - -- Replace `metadata.namespace` with namespace of the admin -- Configure `subjects` field to bind admin's role to the ClusterRole `policyviolation` - -````yaml -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: RoleBinding -metadata: - name: policyviolation - # change namespace below to create rolebinding for the namespace admin - namespace: default -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: policyviolation -subjects: -# configure below to access policy violation for the namespace admin -- kind: ServiceAccount - name: default - namespace: default -# - apiGroup: rbac.authorization.k8s.io -# kind: User -# name: -# - apiGroup: rbac.authorization.k8s.io -# kind: Group -# name: -```` - -# Filter resources that Kyverno should not process -The admission webhook checks if a policy is applicable on all admission requests. The Kubernetes kinds that are not be processed can be filtered by adding a `ConfigMap` in namespace `kyverno` and specifying the resources to be filtered under `data.resourceFilters`. The default name of this `ConfigMap` is `init-config` but can be changed by modifying the value of the environment variable `INIT_CONFIG` in the kyverno deployment dpec. `data.resourceFilters` must be a sequence of one or more `[,,]` entries with `*` as wildcard. Thus, an item `[Node,*,*]` means that admissions of `Node` in any namespace and with any name will be ignored. - -By default we have specified Nodes, Events, APIService & SubjectAccessReview as the kinds to be skipped in the default configuration [install.yaml]. - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: init-config - namespace: kyverno -data: - # resource types to be skipped by kyverno policy engine - resourceFilters: "[Event,*,*][*,kube-system,*][*,kube-public,*][*,kube-node-lease,*][Node,*,*][APIService,*,*][TokenReview,*,*][SubjectAccessReview,*,*][*,kyverno,*]" -``` - -To modify the `ConfigMap`, either directly edit the `ConfigMap` `init-config` in the default configuration [install.yaml] and redeploy it or modify the `ConfigMap` use `kubectl`. Changes to the `ConfigMap` through `kubectl` will automatically be picked up at runtime. - - - -# Installing outside of the cluster (debug mode) - -To build Kyverno in a development environment see: https://github.com/kyverno/kyverno/wiki/Building - -To run controller in this mode you should prepare a TLS key/certificate pair for debug webhook, then start controller with kubeconfig and the server address. - -1. Run `sudo scripts/deploy-controller-debug.sh --service=localhost --serverIP=`, where is the IP address of the host where controller runs. This scripts will generate a TLS certificate for debug webhook server and register this webhook in the cluster. It also registers a CustomResource policy. - -2. Start the controller using the following command: `sudo KYVERNO_NAMESPACE= KYVERNO_SVC= go run ./cmd/kyverno/main.go --kubeconfig=~/.kube/config --serverIP=`. In case environment variable "KYVERNO_NAMESPACE" and "KYVERNO_SVC" is not passed kyverno will run in its default namespace "kyverno" and with default service name "kyverno-svc". - - - ---- -*Read Next >> [Writing Policies](/documentation/writing-policies.md)* - -[install.yaml]: https://github.com/kyverno/kyverno/raw/master/definitions/install.yaml diff --git a/documentation/kyverno-cli.md b/documentation/kyverno-cli.md deleted file mode 100644 index 8dc2e8cbb7..0000000000 --- a/documentation/kyverno-cli.md +++ /dev/null @@ -1,216 +0,0 @@ -*[documentation](/README.md#documentation) / kyverno-cli* - - -# Kyverno CLI - -The Kyverno Command Line Interface (CLI) is designed to validate policies and test the behavior of applying policies to resources before adding the policy to a cluster. It can be used as a kubectl plugin and as a standalone CLI. - -## Build the CLI - -You can build the CLI binary locally, then move the binary into a directory in your PATH. - -```bash -git clone https://github.com/kyverno/kyverno.git -cd github.com/kyverno/kyverno -make cli -mv ./cmd/cli/kubectl-kyverno/kyverno /usr/local/bin/kyverno -``` - -You can also use [Krew](https://github.com/kubernetes-sigs/krew) -```bash -# Install kyverno using krew plugin manager -kubectl krew install kyverno - -#example -kubectl kyverno version - -``` - -## Install via AUR (archlinux) - -You can install the kyverno cli via your favourite AUR helper (e.g. [yay](https://github.com/Jguer/yay)) - -``` -yay -S kyverno-git -``` - -## Commands - -### Version - -Prints the version of kyverno used by the CLI. - -Example: - -``` -kyverno version -``` - -### Validate -Validates a policy, can validate multiple policy resource description files or even an entire folder containing policy resource description -files. Currently supports files with resource description in yaml. The policies can also be passed from stdin. - -Example: -``` -kyverno validate /path/to/policy1.yaml /path/to/policy2.yaml /path/to/folderFullOfPolicies -``` -Passing policy from stdin: -``` -kustomize build nginx/overlays/envs/prod/ | kyverno validate - -``` - -Use the -o flag to display the mutated policy. - -Example: -``` -kyverno validate /path/to/policy1.yaml /path/to/policy2.yaml /path/to/folderFullOfPolicies -o yaml -``` - -Policy can also be validated with CRDs. Use -c flag to pass the CRD, can pass multiple CRD files or even an entire folder containin CRDs. - -Example: -``` -kyverno validate /path/to/policy1.yaml -c /path/to/crd.yaml -c /path/to/folderFullOfCRDs -``` - -### Apply -Applies policies on resources, and supports applying multiple policies on multiple resources in a single command. -Also supports applying the given policies to an entire cluster. The current kubectl context will be used to access the cluster. - -Displays mutate results to stdout, by default. Use the -o flag to save mutated resources to a file or directory. - -Apply to a resource: -``` -kyverno apply /path/to/policy.yaml --resource /path/to/resource.yaml -``` - -Apply to all matching resources in a cluster: -``` -kyverno apply /path/to/policy.yaml --cluster > policy-results.txt -``` - -The resources can also be passed from stdin: -``` -kustomize build nginx/overlays/envs/prod/ | kyverno apply /path/to/policy.yaml --resource - -``` - -Apply multiple policies to multiple resources: -``` -kyverno apply /path/to/policy1.yaml /path/to/folderFullOfPolicies --resource /path/to/resource1.yaml --resource /path/to/resource2.yaml --cluster -``` - -Saving the mutated resource in a file/directory: -``` -kyverno apply /path/to/policy.yaml --resource /path/to/resource.yaml -o -``` - -Apply policy with variables: - -Use --set flag to pass the values for variables in a policy while applying on a resource. - -``` -kyverno apply /path/to/policy.yaml --resource /path/to/resource.yaml --set =,= -``` - -Use --values_file for applying multiple policies on multiple resources and pass a file containing variables and its values. - -``` -kyverno apply /path/to/policy1.yaml /path/to/policy2.yaml --resource /path/to/resource1.yaml --resource /path/to/resource2.yaml -f /path/to/value.yaml -``` - -Format of value.yaml : - -``` -policies: - - name: - resources: - - name: - values: - : - : - - name: - values: - : - : - - name: - resources: - - name: - values: - : - : - - name: - values: - : - : -``` - -Example: - -Policy file(add_network_policy.yaml): - -``` -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: add-networkpolicy - annotations: - policies.kyverno.io/category: Workload Management - policies.kyverno.io/description: By default, Kubernetes allows communications across - all pods within a cluster. Network policies and, a CNI that supports network policies, - must be used to restrict communinications. A default NetworkPolicy should be configured - for each namespace to default deny all ingress traffic to the pods in the namespace. - Application teams can then configure additional NetworkPolicy resources to allow - desired traffic to application pods from select sources. -spec: - rules: - - name: default-deny-ingress - match: - resources: - kinds: - - Namespace - name: "*" - generate: - kind: NetworkPolicy - name: default-deny-ingress - namespace: "{{request.object.metadata.name}}" - synchronize : true - data: - spec: - # select all pods in the namespace - podSelector: {} - policyTypes: - - Ingress -``` -Resource file(required_default_network_policy.yaml) : - -``` -kind: Namespace -apiVersion: v1 -metadata: - name: "devtest" -``` -Applying policy on resource using set/-s flag: - -``` -kyverno apply /path/to/add_network_policy.yaml --resource /path/to/required_default_network_policy.yaml -s request.object.metadata.name=devtest -``` - -Applying policy on resource using --values_file/-f flag: - -yaml file with variables(value.yaml) : - -``` -policies: - - name: default-deny-ingress - resources: - - name: devtest - values: - request.namespace: devtest -``` - -``` -kyverno apply /path/to/add_network_policy.yaml --resource /path/to/required_default_network_policy.yaml -f /path/to/value.yaml -``` - - -*Read Next >> [Sample Policies](/samples/README.md)* diff --git a/documentation/policy-violations.md b/documentation/policy-violations.md deleted file mode 100644 index c390d4e3ae..0000000000 --- a/documentation/policy-violations.md +++ /dev/null @@ -1,31 +0,0 @@ -*[documentation](/README.md#documentation) / Policy Violations* - -# Policy Violations - -Policy Violations are created to: -1. Report resources that do not comply with validation rules with `validationFailureAction` set to `audit`. -2. Report existing resources (i.e. resources created before the policy was created) that do not comply with validation or mutation rules. - -Policy Violation objects are created in the resource namespace. Policy Violation resources are automatically removed when the resource is updated to comply with the policy rule, or when the policy rule is deleted. - -You can view all existing policy violations as shown below: - -```` -λ kubectl get polv --all-namespaces -NAMESPACE NAME POLICY RESOURCEKIND RESOURCENAME AGE -default disallow-root-user-56j4t disallow-root-user Deployment nginx-deployment 5m7s -default validation-example2-7snmh validation-example2 Deployment nginx-deployment 5m7s -docker disallow-root-user-2kl4m disallow-root-user Pod compose-api-dbbf7c5db-kpnvk 43m -docker disallow-root-user-hfxzn disallow-root-user Pod compose-7b7c5cbbcc-xj8f6 43m -docker disallow-root-user-s5rjp disallow-root-user Deployment compose 43m -docker disallow-root-user-w58kp disallow-root-user Deployment compose-api 43m -docker validation-example2-dgj9j validation-example2 Deployment compose 5m28s -docker validation-example2-gzfdf validation-example2 Deployment compose-api 5m27s -```` - -# Cluster Policy Violations - -Cluster Policy Violations are like Policy Violations but created for cluster-wide resources. - - -*Read Next >> [Kyverno CLI](/documentation/kyverno-cli.md)* diff --git a/documentation/testing-policies.md b/documentation/testing-policies.md deleted file mode 100644 index e97ee2ea64..0000000000 --- a/documentation/testing-policies.md +++ /dev/null @@ -1,30 +0,0 @@ -*[documentation](/README.md#documentation) / Testing Policies* - - -# Testing Policies - -The resources definitions for testing are located in the [test](/test) directory. Each test contains a pair of files: one is the resource definition, and the second is the Kyverno policy for this definition. - -## Test using kubectl - -To do this you should [install Kyverno to the cluster](installation.md). - -For example, to test the simplest Kyverno policy for `ConfigMap`, create the policy and then the resource itself via `kubectl`: - -````bash -cd test -kubectl create -f policy/policy-CM.yaml -kubectl create -f resources/CM.yaml -```` -Then compare the original resource definition in `CM.yaml` with the actual one: - -````bash -kubectl get -f resources/CM.yaml -o yaml -```` - -## Test using Kyverno CLI - -The Kyverno CLI allows testing policies before they are applied to a cluster. It is documented at [Kyverno CLI](kyverno-cli.md) - - -*Read Next >> [Policy Violations](/documentation/policy-violations.md)* diff --git a/documentation/writing-policies-autogen.md b/documentation/writing-policies-autogen.md deleted file mode 100644 index 58b32a3807..0000000000 --- a/documentation/writing-policies-autogen.md +++ /dev/null @@ -1,24 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Auto-Generation for Pod Controllers* - -# Auto Generating Rules for Pod Controllers - -**Note: The auto-gen feature is only supported for validation rules with patterns and mutation rules with overlay. Validate - Deny rules and Generate rules are not supported.** - -Writing policies on pods helps address all pod creation flows. - -However, when pod controllers are used, pod-level policies result in errors not being reported when the pod controller object is created. - -Kyverno solves this issue by supporting automatic generation of policy rules for pod controllers from a rule written for a pod. - -This auto-generation behavior is controlled by the `pod-policies.kyverno.io/autogen-controllers` annotation. - -By default, Kyverno inserts an annotation `pod-policies.kyverno.io/autogen-controllers=DaemonSet,Deployment,Job,StatefulSet,CrobJob`, to generate additional rules that are applied to these pod controllers. - -You can change the annotation `pod-policies.kyverno.io/autogen-controllers` to customize the target pod controllers for the auto-generated rules. For example, Kyverno generates a rule for a `Deployment` if the annotation of policy is defined as `pod-policies.kyverno.io/autogen-controllers=Deployment`. - -When a `name` or `labelSelector` is specified in the match / exclude block, Kyverno skips generating pod controllers rule as these filters may not be applicable to pod controllers. - -To disable auto-generating rules for pod controllers set `pod-policies.kyverno.io/autogen-controllers` to the value `none`. - -*Read Next >> [Background Processing](/documentation/writing-policies-background.md)* - diff --git a/documentation/writing-policies-background.md b/documentation/writing-policies-background.md deleted file mode 100644 index 53f7704569..0000000000 --- a/documentation/writing-policies-background.md +++ /dev/null @@ -1,20 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Background Processing* - -# Background processing - -Kyverno applies policies during admission control and to existing resources in the cluster that may have been created before a policy was created. The application of policies to existing resources is referred to as `background` processing. - -Note, that Kyverno does not mutate existing resources, and will only report policy violation for existing resources that do not match mutation, validation, or generation rules. - -A policy is always enabled for processing during admission control. However, policy rules that rely on request information (e.g. `{{request.userInfo}}`) cannot be applied to existing resource in the `background` mode as the user information is not available outside of the admission controller. Hence, these rules must use the boolean flag `{spec.background}` to disable `background` processing. - -``` -spec: - background: true - rules: - - name: default-deny-ingress -``` - -The default value of `background` is `true`. When a policy is created or modified, the policy validation logic will report an error if a rule uses `userInfo` and does not set `background` to `false`. - -*Read Next >> [Configmap Lookup](/documentation/writing-policies-configmap-reference.md)* diff --git a/documentation/writing-policies-configmap-reference.md b/documentation/writing-policies-configmap-reference.md deleted file mode 100644 index b4b1eff749..0000000000 --- a/documentation/writing-policies-configmap-reference.md +++ /dev/null @@ -1,93 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Configmap Lookup* - -# Using ConfigMaps for Variables - -There are many cases where the values that are passed into Kyverno policies are dynamic or need to be vary based on the execution environment. - -Kyverno supports using Kubernetes [ConfigMaps](https://kubernetes.io/docs/concepts/configuration/configmap/) to manage variable values outside of a policy definition. - -# Defining ConfigMaps in a Rule Context - -To refer to values from a ConfigMap inside any Rule, define a context inside the rule with one or more ConfigMap declarations. - -````yaml - rules: - - name: example-configmap-lookup - # added context to define the configmap information which will be referred - context: - # unique name to identify configmap - - name: dictionary - configMap: - # configmap name - name of the configmap which will be referred - name: mycmap - # configmap namepsace - namespace of the configmap which will be referred - namespace: test -```` - -Sample ConfigMap Definition - -````yaml -apiVersion: v1 -data: - env: production -kind: ConfigMap -metadata: - name: mycmap -```` - -# Looking up values - -A ConfigMap that is defined in a rule context can be referred to using its unique name within the context. ConfigMap values can be referenced using a JMESPATH style expression `{{..}}`. - -For the example above, we can refer to a ConfigMap value using `{{dictionary.data.env}}`. The variable will be substituted with the value `production` during policy execution. - -# Handling Array Values - -The ConfigMap value can be an array of string values in JSON format. Kyverno will parse the JSON string to a list of strings, so set operations like In and NotIn can then be applied. - -For example, a list of allowed roles can be stored in a ConfigMap, and the Kyverno policy can refer to this list to deny the requests where the role does not match one of the values in the list. - -Here are the allowed roles in the ConfigMap: - -````yaml -apiVersion: v1 -data: - allowed-roles: "[\"cluster-admin\", \"cluster-operator\", \"tenant-admin\"]" -kind: ConfigMap -metadata: - name: roles-dictionary - namespace: test -```` - -Here is a rule to block a Deployment if the value of annotation `role` is not in the allowed list: - -````yaml -spec: - validationFailureAction: enforce - rules: - - name: validate-role-annotation - context: - - name: roles-dictionary - configMap: - name: roles-dictionary - namespace: test - match: - resources: - kinds: - - Deployment - preconditions: - - key: "{{ request.object.metadata.annotations.role }}" - operator: NotEquals - value: "" - validate: - message: "role {{ request.object.metadata.annotations.role }} is not in the allowed list {{ \"roles-dictionary\".data.\"allowed-roles\" }}" - deny: - conditions: - - key: "{{ request.object.metadata.annotations.role }}" - operator: NotIn - value: "{{ \"roles-dictionary\".data.\"allowed-roles\" }}" -```` - - - -*Read Next >> [Testing Policies](/documentation/testing-policies.md)* diff --git a/documentation/writing-policies-generate.md b/documentation/writing-policies-generate.md deleted file mode 100644 index b4affcb174..0000000000 --- a/documentation/writing-policies-generate.md +++ /dev/null @@ -1,135 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Generate Resources* - -# Generating Resources - -The ```generate``` rule can used to create additional resources when a new resource is created. This is useful to create supporting resources, such as new role bindings for a new namespace. - -The `generate` rule supports `match` and `exclude` blocks, like other rules. Hence, the trigger for applying this rule can be the creation of any resource and its possible to match or exclude API requests based on subjects, roles, etc. - -The generate rule is triggered during a API CREATE operation. To keep resources synchronized across changes you can use the `synchronize` property. When `synchronize` is set to `true` the generated resource is kept in-sync with the source resource (which can be defined as part of the policy or may be an existing resource), and generated resources cannot be modified by users. If `synchronize` is set to `false` then users can update or delete the generated resource directly. - -This policy sets the Zookeeper and Kafka connection strings for all namespaces. - -```yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: "zk-kafka-address" -spec: - rules: - - name: "zk-kafka-address" - match: - resources: - kinds: - - Namespace - exclude: - namespaces: - - "kube-system" - - "default" - - "kube-public" - - "kyverno" - generate: - synchronize: true - kind: ConfigMap - name: zk-kafka-address - # generate the resource in the new namespace - namespace: "{{request.object.metadata.name}}" - data: - kind: ConfigMap - data: - ZK_ADDRESS: "192.168.10.10:2181,192.168.10.11:2181,192.168.10.12:2181" - KAFKA_ADDRESS: "192.168.10.13:9092,192.168.10.14:9092,192.168.10.15:9092" -``` - -## Example 1 - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: basic-policy -spec: - rules: - - name: "Generate ConfigMap" - match: - resources: - kinds: - - Namespace - exclude: - namespaces: - - "kube-system" - - "default" - - "kube-public" - - "kyverno" - generate: - kind: ConfigMap # Kind of resource - name: default-config # Name of the new Resource - namespace: "{{request.object.metadata.name}}" # namespace that triggers this rule - synchronize : true - clone: - namespace: default - name: config-template - - name: "Generate Secret (insecure)" - match: - resources: - kinds: - - Namespace - generate: - kind: Secret - name: mongo-creds - namespace: "{{request.object.metadata.name}}" # namespace that triggers this rule - data: - data: - DB_USER: YWJyYWthZGFicmE= - DB_PASSWORD: YXBwc3dvcmQ= - metadata: - labels: - purpose: mongo -```` - -In this example each namespaces will receive 2 new resources: - * A `ConfigMap` cloned from `default/config-template`. - * A `Secret` with values `DB_USER` and `DB_PASSWORD`, and label `purpose: mongo`. - - -## Example 2 -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: "default" -spec: - rules: - - name: "deny-all-traffic" - match: - resources: - kinds: - - Namespace - name: "*" - exclude: - namespaces: - - "kube-system" - - "default" - - "kube-public" - - "kyverno" - generate: - kind: NetworkPolicy - name: deny-all-traffic - namespace: "{{request.object.metadata.name}}" # namespace that triggers this rule - data: - spec: - # select all pods in the namespace - podSelector: {} - policyTypes: - - Ingress - metadata: - labels: - policyname: "default" -```` - -In this example new namespaces will receive a `NetworkPolicy` that by default denies all inbound and outbound traffic. - ---- - -*Read Next >> [Variables](/documentation/writing-policies-variables.md)* - diff --git a/documentation/writing-policies-match-exclude.md b/documentation/writing-policies-match-exclude.md deleted file mode 100644 index d941a03c31..0000000000 --- a/documentation/writing-policies-match-exclude.md +++ /dev/null @@ -1,142 +0,0 @@ -*[documentation](/README.md#documentation) / Writing Policies / Match & Exclude * - -# Match & Exclude - -The `match` and `exclude` filters control which resources policies are applied to. - -The match / exclude clauses have the same structure, and can each contain the following elements: -* resources: select resources by name, namespaces, kinds, label selectors and annotations. -* subjects: select users, user groups, and service accounts -* roles: select namespaced roles -* clusterroles: select cluster wide roles - -At least one element must be specified in a `match` block. The `kind` attribute is optional, but if it's not specified the policy rule will only be applicable to metatdata that is common across all resources kinds. - -When Kyverno receives an admission controller request, i.e. a validation or mutation webhook, it first checks to see if the resource and user information matches or should be excluded from processing. If both checks pass, then the rule logic to mutate, validate, or generate resources is applied. - -The following YAML provides an example for a match clause. - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: policy -spec: - # 'enforce' to block resource request if any rules fail - # 'audit' to allow resource request on failure of rules, but create policy violations to report them - validationFailureAction: enforce - # Each policy has a list of rules applied in declaration order - rules: - # Rules must have a unique name - - name: "check-pod-controller-labels" - # Each rule matches specific resource described by "match" field. - match: - resources: - kinds: # Required, list of kinds - - Deployment - - StatefulSet - name: "mongo*" # Optional, a resource name is optional. Name supports wildcards (* and ?) - namespaces: # Optional, list of namespaces. Supports wildcards (* and ?) - - "dev*" - - test - selector: # Optional, a resource selector is optional. Values support wildcards (* and ?) - matchLabels: - app: mongodb - matchExpressions: - - {key: tier, operator: In, values: [database]} - # Optional, subjects to be matched - subjects: - - kind: User - name: mary@somecorp.com - # Optional, roles to be matched - roles: - # Optional, clusterroles to be matched - clusterroles: cluster-admin - - ... - -```` - -All`match` and `exclude` element must be satisfied for the resource to be selected as a candidate for the policy rule. In other words, the match and exclude conditions are evaluated using a logical AND operation. - -Here is an example of a rule that matches all pods, excluding pods created by using the `cluster-admin` cluster role. - -````yaml -spec: - rules: - name: "match-pods-except-admin" - match: - resources: - kinds: - - Pod - exclude: - clusterroles: cluster-admin -```` - -This rule that matches all pods, excluding pods in the `kube-system` namespace. - -````yaml -spec: - rules: - name: "match-pods-except-admin" - match: - resources: - kinds: - - Pod - exclude: - namespaces: - - "kube-system" -```` - -Condition checks inside the `resources` block follow the logic "**AND across types but an OR inside list types**". For example, if a rule match contains a list of kinds and a list of namespaces, the rule will be evaluated if the request contains any one (OR) of the kinds AND any one (OR) of the namespaces. Conditions inside `clusterRoles`, `roles` and `subjects` are always evaluated using a logical OR operation, as each request can only have a single instance of these values. - -This is an example that select Deployment **OR** StatefulSet that has label `app=critical`. - -````yaml -spec: - rules: - - name: match-critical-app - match: - resources: # AND across types but an OR inside types that take a list - kinds: - - Deployment,StatefulSet - selector: - matchLabels: - app: critical -```` - -The following example matches all resources with label `app=critical` excluding the resource created by clusterRole `cluster-admin` **OR** by the user `John`. - -````yaml -spec: - rules: - - name: match-criticals-except-given-rbac - match: - resources: - selector: - matchLabels: - app: critical - exclude: - clusterRoles: - - cluster-admin - subjects: - - kind: User - name: John -```` - -Here is an example of a rule that matches all pods, having 'imageregistry: "https://hub.docker.com/"' annotations. - -````yaml -spec: - rules: - - name: match-pod-annotations - match: - resources: - annotations: - imageregistry: "https://hub.docker.com/" - kinds: - - Pod - name: "*" -```` ---- -*Read Next >> [Validate Resources](/documentation/writing-policies-validate.md)* diff --git a/documentation/writing-policies-mutate.md b/documentation/writing-policies-mutate.md deleted file mode 100644 index 0eee0d2e55..0000000000 --- a/documentation/writing-policies-mutate.md +++ /dev/null @@ -1,326 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Mutate Resources* - -# Mutating Resources - -The ```mutate``` rule can be used to add, replace, or delete elements in matching resources. A mutate rule can be written as a JSON Patch or as an overlay. - -By using a ```patch``` in the [JSONPatch - RFC 6902](http://jsonpatch.com/) format, you can make precise changes to the resource being created. Using an ```overlay``` is convenient for describing the desired state of the resource. - -Resource mutation occurs before validation, so the validation rules should not contradict the changes performed by the mutation section. - -This policy sets the imagePullPolicy to Always if the image tag is latest: - -```yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: set-image-pull-policy -spec: - rules: - - name: set-image-pull-policy - match: - resources: - kinds: - - Pod - mutate: - overlay: - spec: - containers: - # match images which end with :latest - - (image): "*:latest" - # set the imagePullPolicy to "Always" - imagePullPolicy: "Always" -``` - -## JSONPatch - RFC 6902 - -A JSON Patch rule provides an alternate way to mutate resources. - -[JSONPatch](http://jsonpatch.com/) supports the following operations (in the 'op' field): -* **add** -* **replace** -* **remove** - -With Kyverno, the add and replace have the same behavior i.e. both operations will add or replace the target element. - -This patch policy adds, or replaces, entries in a `ConfigMap` with the name `config-game` in any namespace. - -````yaml -apiVersion : kyverno.io/v1 -kind : ClusterPolicy -metadata : - name : policy-generate-cm -spec : - rules: - - name: pCM1 - match: - resources: - name: "config-game" - kinds : - - ConfigMap - mutate: - patchesJson6902: |- - - path: "/data/ship.properties" - op: add - value: | - type=starship - owner=utany.corp - - path : "/data/newKey1" - op : add - value : newValue1 -```` - -If your ConfigMap has empty data, the following policy adds an entry to `config-game`. -````yaml -apiVersion : kyverno.io/v1 -kind : ClusterPolicy -metadata : - name : policy-generate-cm -spec : - rules: - - name: pCM1 - match: - resources: - name: "config-game" - kinds : - - ConfigMap - mutate: - patchesJson6902: |- - - path: "/data" - op: add - value: {"ship.properties": "{\"type\": \"starship\", \"owner\": \"utany.corp\"}"} -```` - -Here is the example of a patch that removes a label from the secret: - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: policy-remove-label -spec: - rules: - - name: "Remove unwanted label" - match: - resources: - kinds: - - Secret - mutate: - patchesJson6902: |- - - path: "/metadata/labels/purpose" - op: remove -```` - -This policy adds elements to list: - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: insert-container -spec: - rules: - - name: insert-container - match: - resources: - kinds: - - Pod - mutate: - patchesJson6902: |- - - op: add - path: /spec/containers/1 - value: {"name":"busyboxx","image":"busybox:latest"} - - op: add - path: /spec/containers/0/command - value: - - ls -```` - -Note, that if **remove** operation cannot be applied, then this **remove** operation will be skipped with no error. - - - -## Strategic Merge Patch - -A `patchStrategicMerge` patch is [stategic-merge](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md)-style patch. The `patchStrategicMerge` overlay resolves to a partial resource definition. - -This policy sets the imagePullPolicy, adds command to container `nginx`: -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: strategic-merge-patch -spec: - rules: - - name: set-image-pull-policy-add-command - match: - resources: - kinds: - - Pod - mutate: - patchStrategicMerge: - metadata: - labels: - name: "{{request.object.metadata.name}}" - spec: - containers: - - name: "nginx" - image: "nginx:latest" - imagePullPolicy: "Never" - command: - - ls -```` - -## Mutate Overlay - -A mutation overlay describes the desired form of resource. The existing resource values are replaced with the values specified in the overlay. If a value is specified in the overlay but not present in the target resource, then it will be added to the resource. - -The overlay cannot be used to delete values in a resource: use **patches** for this purpose. - -The following mutation overlay will add (or replace) the memory request and limit to 10Gi for every Pod with a label `memory: high`: - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: policy-change-memory-limit -spec: - rules: - - name: "Set hard memory limit to 2Gi" - match: - resources: - kinds: - - Pod - selector: - matchLabels: - memory: high - mutate: - overlay: - spec: - containers: - # the wildcard * will match all containers in the list - - (name): "*" - resources: - requests: - memory: "10Gi" - limits: - memory: "10Gi" - -```` - -### Working with lists - -Applying overlays to a list type is fairly straightforward: new items will be added to the list, unless they already exist. For example, the next overlay will add IP "192.168.10.172" to all addresses in all Endpoints: - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: policy-endpoints -spec: - rules: - - name: "Add IP to subsets" - match: - resources: - kinds: - - Endpoints - mutate: - overlay: - subsets: - - addresses: - - ip: 192.168.42.172 -```` - - - -### Conditional logic using anchors - -An **anchor** field, marked by parentheses and an optional preceeding character, allows conditional processing for mutations. - -The mutate overlay rules support two types of anchors: - -| Anchor | Tag | Behavior | -|--------------------|----- |----------------------------------------------------- | -| Conditional | () | Use the tag and value as an "if" condition | -| Add if not present | +() | Add the tag value, if the tag is not already present | - - -The **anchors** values support **wildcards**: -1. `*` - matches zero or more alphanumeric characters -2. `?` - matches a single alphanumeric character - -#### Conditional anchor - -A `conditional anchor` evaluates to `true` if the anchor tag exists and if the value matches the specified value. Processing stops if a tag does not exist or when the value does not match. Once processing stops, any child elements or any remaining siblings in a list, will not be processed. - - For example, this overlay will add or replace the value `6443` for the `port` field, for all ports with a name value that starts with "secure": - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: policy-set-port -spec: - rules: - - name: "Set port" - match: - resources: - kinds : - - Endpoints - mutate: - overlay: - subsets: - - ports: - - (name): "secure*" - port: 6443 -```` - -If the anchor tag value is an object or array, the entire object or array must match. In other words, the entire object or array becomes part of the "if" clause. Nested `conditional anchor` tags are not supported. - -### Add if not present anchor - -A variation of an anchor, is to add a field value if it is not already defined. This is done by using the `add anchor` (short for `add if not present anchor`) with the notation `+(...)` for the tag. - -An `add anchor` is processed as part of applying the mutation. Typically, every non-anchor tag-value is applied as part of the mutation. If the `add anchor` is set on a tag, the tag and value are only applied if they do not exist in the resource. - -For example, this policy matches and mutates pods with `emptyDir` volume, to add the `safe-to-evict` annotation if it is not specified. - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: add-safe-to-evict - annotations: - pod-policies.kyverno.io/autogen-controllers: none -spec: - rules: - - name: "annotate-empty-dir" - match: - resources: - kinds: - - Pod - mutate: - overlay: - metadata: - annotations: - +(cluster-autoscaler.kubernetes.io/safe-to-evict): true - spec: - volumes: - - (emptyDir): {} -```` - -#### Anchor processing flow - -The anchor processing behavior for mutate conditions is as follows: - -1. First, all conditional anchors are processed. Processing stops when the first conditional anchor return a `false`. Mutation proceeds only of all conditional anchors return a `true`. Note that for `conditional anchor` tags with complex (object or array) values the entire value (child) object is treated as part of the condition, as explained above. - -2. Next, all tag-values without anchors and all `add anchor` tags are processed to apply the mutation. - - -## Additional Details - -Additional details on mutation overlay behaviors are available on the wiki: [Mutation Overlay](https://github.com/kyverno/kyverno/wiki/Mutation-Overlay) - ---- -*Read Next >> [Generate Resources](/documentation/writing-policies-generate.md)* diff --git a/documentation/writing-policies-preconditions.md b/documentation/writing-policies-preconditions.md deleted file mode 100644 index 15809dac7b..0000000000 --- a/documentation/writing-policies-preconditions.md +++ /dev/null @@ -1,48 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Preconditions* - -# Preconditions - -Preconditions allow controlling policy rule execution based on variable values. - -While `match` & `exclude` conditions allow filtering requests based on resource and user information, `preconditions` can be used to define custom filters for more granular control. - -The following operators are currently supported for preconditon evaluation: -- Equal -- Equals -- NotEqual -- NotEquals -- In -- NotIn - -## Example - -```yaml - - name: generate-owner-role - match: - resources: - kinds: - - Namespace - preconditions: - - key: "{{serviceAccountName}}" - operator: NotEqual - value: "" -``` - -In the above example, the rule is only applied to requests from service accounts i.e. when the `{{serviceAccountName}}` is not empty. - -```yaml - - name: generate-default-build-role - match: - resources: - kinds: - - Namespace - preconditions: - - key: "{{serviceAccountName}}" - operator: In - value: ["build-default", "build-base"] -``` - -In the above example, the rule is only applied to requests from service account with name `build-default` and `build-base`. - - -*Read Next >> [Auto-Generation for Pod Controllers](/documentation/writing-policies-autogen.md)* diff --git a/documentation/writing-policies-validate.md b/documentation/writing-policies-validate.md deleted file mode 100644 index 2757ab55ba..0000000000 --- a/documentation/writing-policies-validate.md +++ /dev/null @@ -1,299 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Validate Resources* - - -# Validating Resources and Requests - -A validation rule can be used to validate resources or to deny API requests based on other information. - -To validate resource data, define a [pattern](#patterns) in the validation rule. To deny certain API requests define a [deny](#deny-rules) element in the validation rule along a set of conditions that control when to allow or deny the request. - -This policy requires that all pods have CPU and memory resource requests and limits: - -```yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: check-cpu-memory -spec: - # `enforce` blocks the request. `audit` reports violations - validationFailureAction: enforce - rules: - - name: check-pod-resources - match: - resources: - kinds: - - Pod - validate: - message: "CPU and memory resource requests and limits are required" - pattern: - spec: - containers: - # 'name: *' selects all containers in the pod - - name: "*" - resources: - limits: - # '?' requires 1 alphanumeric character and '*' means that - # there can be 0 or more characters. Using them together - # e.g. '?*' requires at least one character. - memory: "?*" - cpu: "?*" - requests: - memory: "?*" - cpu: "?*" -``` - -This policy prevents users from changing default network policies: - -```yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: deny-netpol-changes -spec: - validationFailureAction: enforce - background: false - rules: - - name: check-netpol-updates - match: - resources: - kinds: - - NetworkPolicy - name: - - *-default - exclude: - clusterRoles: - - cluster-admin - validate: - message: "Changing default network policies is not allowed" - deny: {} -``` - -## Patterns - -A validation rule that checks resource data is defined as an overlay pattern that provides the desired configuration. Resource configurations must match fields and expressions defined in the pattern to pass the validation rule. The following rules are followed when processing the overlay pattern: - -1. Validation will fail if a field is defined in the pattern and if the field does not exist in the configuration. -2. Undefined fields are treated as wildcards. -3. A validation pattern field with the wildcard value '*' will match zero or more alphanumeric characters. Empty values are matched. Missing fields are not matched. -4. A validation pattern field with the wildcard value '?' will match any single alphanumeric character. Empty or missing fields are not matched. -5. A validation pattern field with the wildcard value '?*' will match any alphanumeric characters and requires the field to be present with non-empty values. -6. A validation pattern field with the value `null` or "" (empty string) requires that the field not be defined or has no value. -7. The validation of siblings is performed only when one of the field values matches the value defined in the pattern. You can use the parenthesis operator to explictly specify a field value that must be matched. This allows writing rules like 'if fieldA equals X, then fieldB must equal Y'. -8. Validation of child values is only performed if the parent matches the pattern. - - -### Wildcards -1. `*` - matches zero or more alphanumeric characters -2. `?` - matches a single alphanumeric character - -### Operators - -| Operator | Meaning | -|------------|---------------------------| -| `>` | greater than | -| `<` | less than | -| `>=` | greater than or equals to | -| `<=` | less than or equals to | -| `!` | not equals | -| \| | logical or | - -There is no operator for `equals` as providing a field value in the pattern requires equality to the value. - -### Anchors - -Anchors allow conditional processing (i.e. "if-then-else) and other logical checks in validation patterns. The following types of anchors are supported: - - -| Anchor | Tag | Behavior | -|------------- |----- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Conditional | () | If tag with the given value (including child elements) is specified, then peer elements will be processed.
e.g. If image has tag latest then imagePullPolicy cannot be IfNotPresent.
    (image): "*:latest"
    imagePullPolicy: "!IfNotPresent"
| -| Equality | =() | If tag is specified, then processing continues. For tags with scalar values, the value must match. For tags with child elements, the child element is further evaluated as a validation pattern.
e.g. If hostPath is defined then the path cannot be /var/lib
    =(hostPath):
        path: "!/var/lib"
| -| Existence | ^() | Works on the list/array type only. If at least one element in the list satisfies the pattern. In contrast, a conditional anchor would validate that all elements in the list match the pattern.
e.g. At least one container with image nginx:latest must exist.
    ^(containers):
    - image: nginx:latest
| -| Negation | X() | The tag cannot be specified. The value of the tag is not evaulated.
e.g. Hostpath tag cannot be defined.
    X(hostPath):
| - -### Anchors and child elements - -Child elements are handled differently for conditional and equality anchors. - -For conditional anchors, the child element is considered to be part of the "if" clause, and all peer elements are considered to be part of the "then" clause. For example, consider the pattern: - -````yaml - pattern: - metadata: - labels: - allow-docker: "true" - spec: - (volumes): - - (hostPath): - path: "/var/run/docker.sock" -```` - -This reads as "If a hostPath volume exists and the path equals /var/run/docker.sock, then a label "allow-docker" must be specified with a value of true." - -For equality anchors, a child element is considered to be part of the "then" clause. Consider this pattern: - -````yaml - pattern: - spec: - =(volumes): - =(hostPath): - path: "!/var/run/docker.sock" -```` - -This is read as "If a hostPath volume exists, then the path must not be equal to /var/run/docker.sock". - - -### Validation Pattern Examples - -The following rule prevents the creation of Deployment, StatefuleSet and DaemonSet resources without label 'app' in selector: - -````yaml - -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: validation-example -spec: - rules: - - name: check-label - match: - resources: - # Kind specifies one or more resource types to match - kinds: - - Deployment - - StatefuleSet - - DaemonSet - # Name is optional and can use wildcards - name: "*" - # Selector is optional - selector: - validate: - # Message is optional, used to report custom message if the rule condition fails - message: "The label app is required" - pattern: - spec: - template: - metadata: - labels: - app: "?*" - -```` - -#### Existence anchor: at least one - -A variation of an anchor, is to check that in a list of elements at least one element exists that matches the patterm. This is done by using the ^(...) notation for the field. - -For example, this pattern will check that at least one container has memory requests and limits defined and that the request is less than the limit: - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: validation-example2 -spec: - rules: - - name: check-memory_requests_link_in_yaml_relative - match: - resources: - # Kind specifies one or more resource types to match - kinds: - - Deployment - # Name is optional and can use wildcards - name: "*" - validate: - pattern: - spec: - template: - spec: - ^(containers): - - resources: - requests: - memory: "$(<=./../../limits/memory)" - limits: - memory: "2048Mi" -```` - -#### Logical OR across validation patterns - -In some cases content can be defined at a different level. For example, a security context can be defined at the Pod or Container level. The validation rule should pass if either one of the conditions is met. - -The `anyPattern` tag can be used to check if any one of the patterns in the list match. - -*Note: either one of `pattern` or `anyPattern` is allowed in a rule, they both can't be declared in the same rule.* - -````yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: check-container-security-context -spec: - rules: - - name: check-root-user - exclude: - resources: - namespaces: - - kube-system - match: - resources: - kinds: - - Pod - validate: - message: "Root user is not allowed. Set runAsNonRoot to true." - anyPattern: - - spec: - securityContext: - runAsNonRoot: true - - spec: - containers: - - name: "*" - securityContext: - runAsNonRoot: true -```` - -Additional examples are available in [samples](/samples/README.md) - -## Validation Failure Action - -The `validationFailureAction` attribute controls processing behaviors when the resource is not compliant with the policy. If the value is set to `enforce` resource creation or updates are blocked when the resource does not comply, and when the value is set to `audit` a policy violation is reported but the resource creation or update is allowed. - -## Deny rules - -In addition to applying patterns to check resources, a validate rule can `deny` a request based on a set of conditions. This is useful for applying fine grained access controls that cannot be performed using Kubernetes RBAC. - -For example, the policy below denies `delete requests` for objects with the label `app.kubernetes.io/managed-by: kyverno` and for all users who do not have the `cluster-admin` role. - -As the example shows, you can use `match` and `exclude` to select when the rule should be applied and then use additional conditions in the `deny` declaration to apply fine-grained controls. - -Note that the `validationFailureAction` must be set to `enforce` to block the request. - -```yaml -apiVersion: kyverno.io/v1 -kind: ClusterPolicy -metadata: - name: multi-tenancy -spec: - validationFailureAction: enforce - background: false - rules: - - name: block-deletes-for-kyverno-resources - match: - resources: - selector: - matchLabels: - app.kubernetes.io/managed-by: kyverno - exclude: - clusterRoles: - - cluster-admin - validate: - message: "Deleting {{request.oldObject.kind}}/{{request.oldObject.metadata.name}} is not allowed" - deny: - conditions: - - key: "{{request.operation}}" - operator: Equals - value: "DELETE" -``` - -Learn more about using [variables](writing-policies-variables.md) and [conditions](writing-policies-preconditions.md) in upcoming sections. - ---- -*Read Next >> [Mutate Resources](/documentation/writing-policies-mutate.md)* diff --git a/documentation/writing-policies-variables.md b/documentation/writing-policies-variables.md deleted file mode 100644 index 3cbcb3833b..0000000000 --- a/documentation/writing-policies-variables.md +++ /dev/null @@ -1,35 +0,0 @@ -*[documentation](/README.md#documentation) / [Writing Policies](/documentation/writing-policies.md) / Variables* - -# Variables - -Sometimes it is necessary to vary the contents of a mutated or generated resource based on request data. To achieve this, variables can be used to reference attributes that are loaded in the rule processing context using a [JMESPATH](http://jmespath.org/) notation. - -The policy engine will substitute any values with the format `{{}}` with the variable value before processing the rule. - -The following data is available for use in context: -- Resource: `{{request.object}}` -- UserInfo: `{{request.userInfo}}` - -## Pre-defined Variables - -Kyverno automatically creates a few useful variables: - -- `serviceAccountName` : the "userName" which is last part of a service account i.e. without the prefix `system:serviceaccount::`. For example, when processing a request from `system:serviceaccount:nirmata:user1` Kyverno will store the value `user1` in the variable `serviceAccountName`. - -- `serviceAccountNamespace` : the "namespace" part of the serviceAccount. For example, when processing a request from `system:serviceaccount:nirmata:user1` Kyverno will store `nirmata` in the variable `serviceAccountNamespace`. - -## Examples - -1. Reference a resource name (type string) - -`{{request.object.metadata.name}}` - -2. Build name from multiple variables (type string) - -`"ns-owner-{{request.object.metadata.namespace}}-{{request.userInfo.username}}-binding"` - -3. Reference the metadata (type object) - -`{{request.object.metadata}}` - -*Read Next >> [Preconditions](/documentation/writing-policies-preconditions.md)* diff --git a/documentation/writing-policies.md b/documentation/writing-policies.md deleted file mode 100644 index 1f2e2c2cb3..0000000000 --- a/documentation/writing-policies.md +++ /dev/null @@ -1,16 +0,0 @@ -*[documentation](/README.md#documentation) / Writing Policies* - -# Writing Policies - -The following picture shows the structure of a Kyverno Policy: - -![KyvernoPolicy](images/Kyverno-Policy-Structure.png) - -Each Kyverno policy contains one or more rules. Each rule has a `match` clause, an optional `exclude` clause, and one of a `mutate`, `validate`, or `generate` clause. - -Each rule can validate, mutate, or generate configurations of matching resources. A rule definition can contain only a single **mutate**, **validate**, or **generate** child node. - -These actions are applied to the resource in described order: mutation, validation and then generation. - ---- -*Read Next >> [Selecting Resources](/documentation/writing-policies-match-exclude.md)* diff --git a/pkg/api/kyverno/v1/types.go b/pkg/api/kyverno/v1/types.go index 20f89bdfe8..675c8e6cd6 100644 --- a/pkg/api/kyverno/v1/types.go +++ b/pkg/api/kyverno/v1/types.go @@ -156,39 +156,48 @@ type Spec struct { Background *bool `json:"background,omitempty" yaml:"background,omitempty"` } -// Rule is set of mutation, validation and generation actions +// Rule contains a mutation, validation, or generation action // for the single resource description type Rule struct { - // Specifies rule name + // A unique label for the rule Name string `json:"name,omitempty" yaml:"name,omitempty"` - // Specifies resources for which the rule has to be applied. - // If it's defined, "kind" inside MatchResources block is required. + + // Defines variables that can be used during rule execution. + // +optional + Context []ContextEntry `json:"context,omitempty" yaml:"context,omitempty"` + + // Selects resources for which the policy rule should be applied. + // If it's defined, "kinds" inside MatchResources block is required. // +optional MatchResources MatchResources `json:"match,omitempty" yaml:"match,omitempty"` - // Specifies resources for which rule can be excluded + + // Selects resources for which the policy rule should not be applied. // +optional ExcludeResources ExcludeResources `json:"exclude,omitempty" yaml:"exclude,omitempty"` - // Allows controlling policy rule execution + + // Allows condition-based control of the policy rule execution. // +optional Conditions []Condition `json:"preconditions,omitempty" yaml:"preconditions,omitempty"` - // Specifies patterns to mutate resources + + // Modifies matching resources. // +optional Mutation Mutation `json:"mutate,omitempty" yaml:"mutate,omitempty"` - // Specifies patterns to validate resources + + // Checks matching resources. // +optional Validation Validation `json:"validate,omitempty" yaml:"validate,omitempty"` - // Specifies patterns to create additional resources + + // Generates new resources. // +optional Generation Generation `json:"generate,omitempty" yaml:"generate,omitempty"` - - // Context - Context []ContextEntry `json:"context,omitempty" yaml:"context,omitempty"` } type ContextEntry struct { Name string `json:"name,omitempty" yaml:"name,omitempty"` - ConfigMap ConfigMapReference `json:"configMap,omitempty" yaml:"configMap,omitempty"` + Path string `json:"path,omitempty" yaml:"path,omitempty"` + ConfigMap *ConfigMapReference `json:"configMap,omitempty" yaml:"configMap,omitempty"` } + type ConfigMapReference struct { Name string `json:"name,omitempty" yaml:"name,omitempty"` Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` diff --git a/pkg/engine/generation.go b/pkg/engine/generation.go index 37819e463d..dc226c61c2 100644 --- a/pkg/engine/generation.go +++ b/pkg/engine/generation.go @@ -48,6 +48,7 @@ func filterRule(rule kyverno.Rule, resource unstructured.Unstructured, admission }, } } + // add configmap json data to context if err := AddResourceToContext(log, rule.Context, resCache, jsonContext); err != nil { log.Info("cannot add configmaps to context", "reason", err.Error()) diff --git a/pkg/engine/mutation.go b/pkg/engine/mutation.go index 2fa358e33e..c1ceebe3d1 100644 --- a/pkg/engine/mutation.go +++ b/pkg/engine/mutation.go @@ -28,6 +28,9 @@ func Mutate(policyContext PolicyContext) (resp response.EngineResponse) { patchedResource := policyContext.NewResource ctx := policyContext.Context + result := policyContext.Client.GetDiscoveryCache().RESTClient().Get().Do() + result. + resCache := policyContext.ResourceCache jsonContext := policyContext.JSONContext logger := log.Log.WithName("EngineMutate").WithValues("policy", policy.Name, "kind", patchedResource.GetKind(), @@ -62,6 +65,9 @@ func Mutate(policyContext PolicyContext) (resp response.EngineResponse) { logger.V(3).Info("resource not matched", "reason", err.Error()) continue } + + + // add configmap json data to context if err := AddResourceToContext(logger, rule.Context, resCache, jsonContext); err != nil { logger.V(4).Info("cannot add configmaps to context", "reason", err.Error()) diff --git a/pkg/engine/utils.go b/pkg/engine/utils.go index 6b471f6bb8..0647a928e3 100644 --- a/pkg/engine/utils.go +++ b/pkg/engine/utils.go @@ -286,35 +286,40 @@ func SkipPolicyApplication(policy kyverno.ClusterPolicy, resource unstructured.U } // AddResourceToContext - Add the Configmap JSON to Context. -// it will read configmaps (can be extended to get other type of resource like secrets, namespace etc) from the informer cache -// and add the configmap data to context -func AddResourceToContext(logger logr.Logger, contexts []kyverno.ContextEntry, resCache resourcecache.ResourceCacheIface, ctx *context.Context) error { - if len(contexts) == 0 { +// it will read configmaps (can be extended to get other type of resource like secrets, namespace etc) +// from the informer cache and add the configmap data to context +func AddResourceToContext(logger logr.Logger, contextEntries []kyverno.ContextEntry, resCache resourcecache.ResourceCacheIface, ctx *context.Context) error { + if len(contextEntries) == 0 { return nil } + // get GVR Cache for "configmaps" // can get cache for other resources if the informers are enabled in resource cache gvrC := resCache.GetGVRCache("configmaps") + if gvrC != nil { lister := gvrC.GetLister() - for _, context := range contexts { + for _, context := range contextEntries { contextData := make(map[string]interface{}) name := context.ConfigMap.Name namespace := context.ConfigMap.Namespace if namespace == "" { namespace = "default" } + key := fmt.Sprintf("%s/%s", namespace, name) obj, err := lister.Get(key) if err != nil { logger.Error(err, fmt.Sprintf("failed to read configmap %s/%s from cache", namespace, name)) continue } + unstructuredObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj) if err != nil { logger.Error(err, "failed to convert context runtime object to unstructured") continue } + // extract configmap data contextData["data"] = unstructuredObj["data"] contextData["metadata"] = unstructuredObj["metadata"] @@ -325,6 +330,7 @@ func AddResourceToContext(logger logr.Logger, contexts []kyverno.ContextEntry, r logger.Error(err, "failed to unmarshal context data") continue } + // add data to context err = ctx.AddJSON(jdata) if err != nil { diff --git a/pkg/policy/validate.go b/pkg/policy/validate.go index af1b980983..8e85abcef7 100644 --- a/pkg/policy/validate.go +++ b/pkg/policy/validate.go @@ -32,11 +32,11 @@ func Validate(policyRaw []byte, client *dclient.Client, mock bool, openAPIContro var p kyverno.ClusterPolicy err = json.Unmarshal(policyRaw, &p) if err != nil { - return fmt.Errorf("failed to unmarshal policy admission request err %v", err) + return fmt.Errorf("failed to unmarshal policy: %v", err) } if common.PolicyHasVariables(p) && common.PolicyHasNonAllowedVariables(p) { - return fmt.Errorf("policy contains non allowed variables") + return fmt.Errorf("policy contains reserved variables (serviceAccountName, serviceAccountNamespace)") } if path, err := validateUniqueRuleName(p); err != nil { @@ -49,16 +49,25 @@ func Validate(policyRaw []byte, client *dclient.Client, mock bool, openAPIContro } for i, rule := range p.Spec.Rules { + // validate resource description if path, err := validateResources(rule); err != nil { return fmt.Errorf("path: spec.rules[%d].%s: %v", i, path, err) } + // validate rule types // only one type of rule is allowed per rule if err := validateRuleType(rule); err != nil { // as there are more than 1 operation in rule, not need to evaluate it further return fmt.Errorf("path: spec.rules[%d]: %v", i, err) } + + if err := validateRuleContext(rule); err != nil { + return fmt.Errorf("path: spec.rules[%d]: %v", i, err) + } + + + // validate Cluster Resources in namespaced cluster policy // For namespaced cluster policy, ClusterResource type field and values are not allowed in match and exclude if !mock && p.ObjectMeta.Namespace != "" { @@ -86,7 +95,7 @@ func Validate(policyRaw []byte, client *dclient.Client, mock bool, openAPIContro return checkClusterResourceInMatchAndExclude(rule, clusterResources) } - if doesMatchAndExcludeConflict(rule) { + if doMatchAndExcludeConflict(rule) { return fmt.Errorf("path: spec.rules[%v]: rule is matching an empty set", rule.Name) } @@ -147,16 +156,17 @@ func checkInvalidFields(policyRaw []byte) error { break } } + if !ok { - return fmt.Errorf("unknown field \"%s\" in policy admission request", requestField) + return fmt.Errorf("unknown field \"%s\" in policy", requestField) } } return nil } -// doesMatchAndExcludeConflict checks if the resultant +// doMatchAndExcludeConflict checks if the resultant // of match and exclude block is not an empty set -func doesMatchAndExcludeConflict(rule kyverno.Rule) bool { +func doMatchAndExcludeConflict(rule kyverno.Rule) bool { if reflect.DeepEqual(rule.ExcludeResources, kyverno.ExcludeResources{}) { return false @@ -439,6 +449,34 @@ func validateRuleType(r kyverno.Rule) error { return nil } +func validateRuleContext(rule kyverno.Rule) (error) { + if rule.Context == nil || len(rule.Context) == 0 { + return nil + } + + for _, entry := range rule.Context { + if entry.Name == ""{ + return fmt.Errorf("a name is required for context entries") + } + + if entry.Path == "" && entry.ConfigMap == nil { + return fmt.Errorf("path or configMap required for context entries") + } + + if entry.ConfigMap != nil { + if entry.ConfigMap.Name == "" { + return fmt.Errorf("a name is required for configMap context entry") + } + + if entry.ConfigMap.Namespace == "" { + return fmt.Errorf("a namespace is required for configMap context entry") + } + } + } + + return nil +} + // validateResourceDescription checks if all necesarry fields are present and have values. Also checks a Selector. // field type is checked through openapi // Returns error if
- -

kyverno.io/v1

-Resource Types: - -
-

ClusterPolicy -

-

-

ClusterPolicy …

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -kyverno.io/v1 - -
-kind
-string -
ClusterPolicy
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -Spec - - -
-

Spec is the information to identify the policy

-
-
- - - - - - - - - - - - - -
-rules
- - -[]Rule - - -
-

Rules contains the list of rules to be applied to resources

-
-validationFailureAction
- -string - -
-

ValidationFailureAction provides choice to enforce rules to resources during policy violations. -Default value is “audit”.

-
-background
- -bool - -
-

Background provides choice for applying rules to existing resources. -Default value is “true”.

-
-
-status
- - -PolicyStatus - - -
-

Status contains statistics related to policy

-
-
-

ClusterPolicyViolation -

-

-

ClusterPolicyViolation represents cluster-wide violations

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -kyverno.io/v1 - -
-kind
-string -
ClusterPolicyViolation
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -PolicyViolationSpec - - -
-
-
- - - - - - - - - - - - - -
-policy
- -string - -
-

Specifies name of the policy

-
-resource
- - -ResourceSpec - - -
-
-rules
- - -[]ViolatedRule - - -
-

Specifies list of violated rule

-
-
-status
- - -PolicyViolationStatus - - -
-
-
-

GenerateRequest -

-

-

GenerateRequest is a request to process generate rule

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -kyverno.io/v1 - -
-kind
-string -
GenerateRequest
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -GenerateRequestSpec - - -
-

Spec is the information to identify the generate request

-
-
- - - - - - - - - - - - - -
-policy
- -string - -
-

Specifies the name of the policy

-
-resource
- - -ResourceSpec - - -
-

ResourceSpec is the information to identify the generate request

-
-context
- - -GenerateRequestContext - - -
-

Context …

-
-
-status
- - -GenerateRequestStatus - - -
-

Status contains statistics related to generate request

-
-
-

PolicyViolation -

-

-

PolicyViolation represents namespaced violations

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -kyverno.io/v1 - -
-kind
-string -
PolicyViolation
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -PolicyViolationSpec - - -
-
-
- - - - - - - - - - - - - -
-policy
- -string - -
-

Specifies name of the policy

-
-resource
- - -ResourceSpec - - -
-
-rules
- - -[]ViolatedRule - - -
-

Specifies list of violated rule

-
-
-status
- - -PolicyViolationStatus - - -
-
-
-

CloneFrom -

-

-(Appears on: -Generation) -

-

-

CloneFrom - location of the resource -which will be used as source when applying ‘generate’

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-namespace
- -string - -
-

Specifies resource namespace

-
-name
- -string - -
-

Specifies name of the resource

-
-
-

Condition -

-

-(Appears on: -Deny, -Rule) -

-

-

Condition defines the evaluation condition

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-key
- -interface{} - -
-

Key contains key to compare

-
-operator
- - -ConditionOperator - - -
-

Operator to compare against value

-
-value
- -interface{} - -
-

Value to be compared

-
-
-

ConditionOperator -(string alias)

-

-(Appears on: -Condition) -

-

-

ConditionOperator defines the type for condition operator

-

-

Deny -

-

-(Appears on: -Validation) -

-

-

- - - - - - - - - - - - - -
FieldDescription
-conditions
- - -[]Condition - - -
-

Specifies set of condition to deny validation

-
-
-

ExcludeResources -

-

-(Appears on: -Rule) -

-

-

ExcludeResources container resource description of the resources that are to be excluded from the applying the policy rule

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-UserInfo
- - -UserInfo - - -
-

Specifies user information

-
-resources
- - -ResourceDescription - - -
-

Specifies resources to which rule is excluded

-
-
-

GenerateRequestContext -

-

-(Appears on: -GenerateRequestSpec) -

-

-

GenerateRequestContext stores the context to be shared

-

- - - - - - - - - - - - - -
FieldDescription
-userInfo
- - -RequestInfo - - -
-

UserRequestInfo …

-
-
-

GenerateRequestSpec -

-

-(Appears on: -GenerateRequest) -

-

-

GenerateRequestSpec stores the request specification

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-policy
- -string - -
-

Specifies the name of the policy

-
-resource
- - -ResourceSpec - - -
-

ResourceSpec is the information to identify the generate request

-
-context
- - -GenerateRequestContext - - -
-

Context …

-
-
-

GenerateRequestState -(string alias)

-

-(Appears on: -GenerateRequestStatus) -

-

-

GenerateRequestState defines the state of

-

-

GenerateRequestStatus -

-

-(Appears on: -GenerateRequest) -

-

-

GenerateRequestStatus stores the status of generated request

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-state
- - -GenerateRequestState - - -
-

State represents state of the generate request

-
-message
- -string - -
-(Optional) -

Specifies request status message

-
-generatedResources
- - -[]ResourceSpec - - -
-

This will track the resources that are generated by the generate Policy -Will be used during clean up resources

-
-
-

Generation -

-

-(Appears on: -Rule) -

-

-

Generation describes which resources will be created when other resource is created

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-ResourceSpec
- - -ResourceSpec - - -
-
-synchronize
- -bool - -
-

To keep resources synchronized with source resource

-
-data
- -interface{} - -
-

Data …

-
-clone
- - -CloneFrom - - -
-

To clone resource from other resource

-
-
-

MatchResources -

-

-(Appears on: -Rule) -

-

-

MatchResources contains resource description of the resources that the rule is to apply on

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-UserInfo
- - -UserInfo - - -
-

Specifies user information

-
-resources
- - -ResourceDescription - - -
-

Specifies resources to which rule is applied

-
-
-

Mutation -

-

-(Appears on: -Rule) -

-

-

Mutation describes the way how Mutating Webhook will react on resource creation

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-overlay
- -interface{} - -
-

Specifies overlay patterns

-
-patches
- - -[]Patch - - -
-

Specifies JSON Patch

-
-
-

Patch -

-

-(Appears on: -Mutation) -

-

-

Patch declares patch operation for created object according to RFC 6902

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-path
- -string - -
-

Specifies path of the resource

-
-op
- -string - -
-

Specifies operations supported by JSON Patch. -i.e:- add, replace and delete

-
-value
- -interface{} - -
-

Specifies the value to be applied

-
-
-

Policy -

-

-

Policy contains rules to be applied to created resources

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -Spec - - -
-

Spec is the information to identify the policy

-
-
- - - - - - - - - - - - - -
-rules
- - -[]Rule - - -
-

Rules contains the list of rules to be applied to resources

-
-validationFailureAction
- -string - -
-

ValidationFailureAction provides choice to enforce rules to resources during policy violations. -Default value is “audit”.

-
-background
- -bool - -
-

Background provides choice for applying rules to existing resources. -Default value is “true”.

-
-
-status
- - -PolicyStatus - - -
-

Status contains statistics related to policy

-
-
-

PolicyStatus -

-

-(Appears on: -ClusterPolicy, -Policy) -

-

-

PolicyStatus mostly contains statistics related to policy

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-averageExecutionTime
- -string - -
-

average time required to process the policy rules on a resource

-
-violationCount
- -int - -
-

number of violations created by this policy

-
-rulesFailedCount
- -int - -
-

Count of rules that failed

-
-rulesAppliedCount
- -int - -
-

Count of rules that were applied

-
-resourcesBlockedCount
- -int - -
-

Count of resources that were blocked for failing a validate, across all rules

-
-resourcesMutatedCount
- -int - -
-

Count of resources that were successfully mutated, across all rules

-
-resourcesGeneratedCount
- -int - -
-

Count of resources that were successfully generated, across all rules

-
-ruleStatus
- - -[]RuleStats - - -
-
-
-

PolicyViolationSpec -

-

-(Appears on: -ClusterPolicyViolation, -PolicyViolation, -PolicyViolationTemplate) -

-

-

PolicyViolationSpec describes policy behavior by its rules

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-policy
- -string - -
-

Specifies name of the policy

-
-resource
- - -ResourceSpec - - -
-
-rules
- - -[]ViolatedRule - - -
-

Specifies list of violated rule

-
-
-

PolicyViolationStatus -

-

-(Appears on: -ClusterPolicyViolation, -PolicyViolation, -PolicyViolationTemplate) -

-

-

PolicyViolationStatus provides information regarding policyviolation status -status: -LastUpdateTime : the time the policy violation was updated

-

- - - - - - - - - - - - - -
FieldDescription
-lastUpdateTime
- - -Kubernetes meta/v1.Time - - -
-

LastUpdateTime : the time the policy violation was updated

-
-
-

PolicyViolationTemplate -

-

-

PolicyViolationTemplate stores the information regarinding the resources for which a policy failed to apply

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -PolicyViolationSpec - - -
-
-
- - - - - - - - - - - - - -
-policy
- -string - -
-

Specifies name of the policy

-
-resource
- - -ResourceSpec - - -
-
-rules
- - -[]ViolatedRule - - -
-

Specifies list of violated rule

-
-
-status
- - -PolicyViolationStatus - - -
-
-
-

RequestInfo -

-

-(Appears on: -GenerateRequestContext) -

-

-

RequestInfo contains permission info carried in an admission request

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-roles
- -[]string - -
-

Roles is a list of possible role send the request

-
-clusterRoles
- -[]string - -
-

ClusterRoles is a list of possible clusterRoles send the request

-
-userInfo
- - -Kubernetes authentication/v1.UserInfo - - -
-

UserInfo is the userInfo carried in the admission request

-
-
-

ResourceDescription -

-

-(Appears on: -ExcludeResources, -MatchResources) -

-

-

ResourceDescription describes the resource to which the PolicyRule will be applied.

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-kinds
- -[]string - -
-

Specifies list of resource kind

-
-name
- -string - -
-

Specifies name of the resource

-
-namespaces
- -[]string - -
-

Specifies list of namespaces

-
-selector
- - -Kubernetes meta/v1.LabelSelector - - -
-

Specifies the set of selectors

-
-
-

ResourceSpec -

-

-(Appears on: -GenerateRequestSpec, -GenerateRequestStatus, -Generation, -PolicyViolationSpec) -

-

-

ResourceSpec information to identify the resource

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-kind
- -string - -
-(Optional) -

Specifies resource kind

-
-namespace
- -string - -
-(Optional) -

Specifies resource namespace

-
-name
- -string - -
-

Specifies resource name

-
-
-

Rule -

-

-(Appears on: -Spec) -

-

-

Rule is set of mutation, validation and generation actions -for the single resource description

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-name
- -string - -
-

Specifies rule name

-
-match
- - -MatchResources - - -
-(Optional) -

Specifies resources for which the rule has to be applied. -If it’s defined, “kind” inside MatchResources block is required.

-
-exclude
- - -ExcludeResources - - -
-(Optional) -

Specifies resources for which rule can be excluded

-
-preconditions
- - -[]Condition - - -
-(Optional) -

Allows controlling policy rule execution

-
-mutate
- - -Mutation - - -
-(Optional) -

Specifies patterns to mutate resources

-
-validate
- - -Validation - - -
-(Optional) -

Specifies patterns to validate resources

-
-generate
- - -Generation - - -
-(Optional) -

Specifies patterns to create additional resources

-
-
-

RuleStats -

-

-(Appears on: -PolicyStatus) -

-

-

RuleStats provides status per rule

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-ruleName
- -string - -
-

Rule name

-
-averageExecutionTime
- -string - -
-

average time require to process the rule

-
-violationCount
- -int - -
-

number of violations created by this rule

-
-failedCount
- -int - -
-

Count of rules that failed

-
-appliedCount
- -int - -
-

Count of rules that were applied

-
-resourcesBlockedCount
- -int - -
-

Count of resources for whom update/create api requests were blocked as the resource did not satisfy the policy rules

-
-resourcesMutatedCount
- -int - -
-

Count of resources that were successfully mutated

-
-resourcesGeneratedCount
- -int - -
-

Count of resources that were successfully generated

-
-
-

Spec -

-

-(Appears on: -ClusterPolicy, -Policy) -

-

-

Spec describes policy behavior by its rules

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-rules
- - -[]Rule - - -
-

Rules contains the list of rules to be applied to resources

-
-validationFailureAction
- -string - -
-

ValidationFailureAction provides choice to enforce rules to resources during policy violations. -Default value is “audit”.

-
-background
- -bool - -
-

Background provides choice for applying rules to existing resources. -Default value is “true”.

-
-
-

UserInfo -

-

-(Appears on: -ExcludeResources, -MatchResources) -

-

-

UserInfo filter based on users

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-roles
- -[]string - -
-

Specifies list of namespaced role names

-
-clusterRoles
- -[]string - -
-

Specifies list of cluster wide role names

-
-subjects
- - -[]Kubernetes rbac/v1.Subject - - -
-

Specifies list of subject names like users, user groups, and service accounts

-
-
-

Validation -

-

-(Appears on: -Rule) -

-

-

Validation describes the way how Validating Webhook will check the resource on creation

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-message
- -string - -
-

Specifies message to be displayed on validation policy violation

-
-pattern
- -interface{} - -
-

Specifies validation pattern

-
-anyPattern
- -[]interface{} - -
-

Specifies list of validation patterns

-
-deny
- - -Deny - - -
-

Specifies conditions to deny validation

-
-
-

ViolatedRule -

-

-(Appears on: -PolicyViolationSpec) -

-

-

ViolatedRule stores the information regarding the rule

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-name
- -string - -
-

Specifies violated rule name

-
-type
- -string - -
-

Specifies violated rule type

-
-message
- -string - -
-

Specifies violation message

-
-
-