Commit Graph

346 Commits

Author SHA1 Message Date
Divya Sri Sanaganapalli 956f1b4799 Incorporating feedback on 119341
Kubernetes-commit: 24877f96fbb60f34c1c808e7ac76870019eee86b
2023-08-21 15:20:30 +00:00
Stephen Kitt 7fb4ad7511 api-machinery: stop using deprecated io/ioutil
This replaces deprecated ioutil functions as follows:

* ioutil.ReadAll -> io.ReadAll
* ioutil.ReadFile -> os.ReadFile
* ioutil.TempDir -> os.MkdirTemp
* ioutil.TempFile -> os.CreateTemp
* ioutil.WriteFile -> os.WriteFile

Signed-off-by: Stephen Kitt <skitt@redhat.com>

Kubernetes-commit: b60a3a58df2791ae67764f6325be31aea5eca5a0
2023-05-02 15:08:18 +02:00
Alexander Zielenski 09a47412b5 bugfix: use matched resource for AdmissionRequest.resource, not the resource it was converted from
use existing admission request for audit annotation eval

populate matchResource in empty rules case

Kubernetes-commit: e1b0bc3d0a7fb89a1e60f4ec1ee34b10de22d00a
2023-07-21 18:13:24 -07:00
Alexander Zielenski a690957dd1 update codegen
Kubernetes-commit: d6479587445a5a6fa736ee7fb3012a29f4e6e5e7
2023-07-19 16:21:22 -07:00
Alexander Zielenski df86e524c7 refactor: replace usage of v1alpha1 with v1beta1
v1alpha -> v1beta

fill in DenyAction where there is no ParameterNotFoundAction

Kubernetes-commit: ef8670c946d53fda523341658919f9d8bd242d40
2023-07-19 15:53:31 -07:00
Alexander Zielenski d501de662c feature: add multiple params capability to VAP controller
Kubernetes-commit: b5e9e0168cf9383dacbd730893c6bc426581e64b
2023-07-10 18:40:45 -07:00
Alexander Zielenski 1f9118f187 refactor: make scope of ParamKind available to vap controller
Kubernetes-commit: 3f63a2d17d4f70dc3ac191a52ad36897086efa7c
2023-07-11 12:04:07 -07:00
Alexander Zielenski 6a8d8652f7 refactor: use the provided sharedInformerFactory for params
Kubernetes-commit: 6323c106e9b5b0edd452a2a223d569a5dae8a832
2023-06-12 18:19:33 -07:00
Divya Sri Sanaganapalli e613190aba Skip apiserver_admission_webhook_request_total during context-canceled
Kubernetes-commit: d3c506133f1d5da6b8681423fc855d0513e8647e
2023-07-17 19:52:43 +00:00
Divya Sri Sanaganapalli 437ae54e84 Ignore context canceled from validate and mutate webhook failopen metric
Kubernetes-commit: 1732b23a343bc0cedbab3dd1df3b7eee4d280036
2023-07-14 20:20:33 +00:00
Cici Huang 04b26c4697 ValidatingAdmissionPolicy: support namespace access (#118267)
* Support namespace access from cel expression in validatingadmissionpolicy.

* Whitelist the exposed fields in namespace object and add test

* better handling of cluster-scoped resources.

* [API REVIEW] namespaceObject in Expression doc.

* compatibility with composition.

* generated: ./hack/update-codegen.sh && ./hack/update-openapi-spec.sh

* workaround namespace of namespace is unexpectedly set.

* basic test coverage for namespaceObject.

---------

Co-authored-by: Jiahui Feng <jhf@google.com>

Kubernetes-commit: 13172cba5c0e1c6a076dbda4aeebbccaf658c7f1
2023-07-15 01:33:59 +00:00
Igor Velichkovich a541a7b473 remove todo/spelling
Kubernetes-commit: 8a4a29d59177699a78f6194861f83789763aac25
2023-07-14 11:08:00 -05:00
Igor Velichkovich c0cd27c353 update histogram
Kubernetes-commit: bef43788fc01775ea156be26d6731c87efbd7b37
2023-07-14 10:10:56 -05:00
Igor Velichkovich 496cd9c142 matchCondition metrics
Kubernetes-commit: 01b9f4b6eb819e4cd4a6d192d703961b34841f18
2023-07-13 19:59:27 -05:00
Amine 4f6b63aa11 Pre-allocate webhook accessors arrays for mutating and validating
webhooks

Kubernetes-commit: 49d03468021e24434171fde5458df34f6a753a32
2023-07-13 23:43:12 +01:00
Amine 408cf7b500 Improve naming and code comments
Kubernetes-commit: 0695853a3061ece0f602c1f267c82ced3f8c880d
2023-07-12 16:20:14 +01:00
Amine a4fba6de9b Move DeleteFunc logging to level 2
Kubernetes-commit: 28b6c90696680c87cab04b539c0bca6af7d66bac
2023-05-24 13:50:50 -05:00
Amine 278cd016a7 Properly setup mutatingWebhookConfigurationManager{}
Kubernetes-commit: 761016482da9e3febbbfe5ab3cf6c2b31692c1b0
2023-05-17 22:44:18 -05:00
Amine 907129f4f1 run `./hack/verify-gofmt.sh`
Kubernetes-commit: 747dbd9b6b72c21c94ddd17bd2c82bbb2ff583ad
2023-05-17 18:52:37 -05:00
Amine eb8a96cae5 Add smart reload for `MutatingWebhooks`
Kubernetes-commit: 1eb60939fe5eb4c1394e5d93ee2d00b5894e9e73
2023-05-17 18:44:01 -05:00
Amine 83bf64e6cc Properly handle parameter in `shareInformer.DeleteFunc`
Kubernetes-commit: aeefb762ece0f866e99def259d6714aa4deb6d31
2023-05-17 18:42:56 -05:00
Amine daa816b27c Fix webhook accessors caching pattern
Kubernetes-commit: a01a8cb07e7bfe6dacadc51206ae4ef93d5f4352
2023-05-17 10:54:17 -05:00
Amine dbf21ae38a Add webhookAccessors smart reloads unit tests
This patch adds few unit tests to assert that the webhook accessors are
only recreate when they are update in the api-server.

In order to test this feature we had to make few changes to wb manager
that allows us to mock `NewValidatingWebhookAccessor` external function.

Kubernetes-commit: 7d3d44af77679ed488b28dc839d02a8258fd3adc
2023-05-12 20:32:20 -05:00
Amine c0d0aad2b4 Fix deadlock issue
This patch fixes the deadlock issue by using a map to cache already
initiated Webhooks instead of using `needRefresh` map.

Kubernetes-commit: c6f36e8702a9e90350c585298f1fc6e908699b12
2023-05-10 15:09:15 -05:00
Amine d886c0446d Webhook Accessors Smart Recompilation
Addresses https://github.com/kubernetes/kubernetes/issues/116588

This is an WIP patch trying to avoid recompiling CELs expressions when
recreation Validating/Mutating WebhookAccessors.

Maybe we should also concider using generatic.Controller from
5f59f44983/staging/src/k8s.io/apiserver/pkg/admission/plugin/validatingadmissionpolicy/internal/generic/controller.go

Kubernetes-commit: 99875b3fb73728caad3efb62556428b555ce02f4
2023-05-09 16:47:11 -05:00
Jiahui Feng 7eadaa66c4 ValidatingAdmissionPolicy: Variable Composition (#118642)
* [API REVIEW] Variable Composition

* lazy map.

* variable composition implementation.

* check variables during VAP validation.

* generated: ./hack/update-vendor.sh

* generated: UPDATE_COMPATIBILITY_FIXTURE_DATA

(cd staging/src/k8s.io/api/ && env UPDATE_COMPATIBILITY_FIXTURE_DATA=true go test)

* cost calucation.

* tests for cost calculations.

* e2e test for variables.

* fix doc for Validation.Expression.

* generated: ./hack/update-codegen.sh

* fix missing utilruntime import.

* generated: ./hack/update-openapi-spec.sh

Kubernetes-commit: b635f2a401fd03715f6a33c4a19f11c509c0ce03
2023-07-14 01:49:55 +00:00
Jiahui Feng 36de07c4e7 ValidatingAdmissionPolicy controller for Type Checking (#117377)
* [API REVIEW] ValidatingAdmissionPolicyStatucController config.

worker count.

* ValidatingAdmissionPolicyStatus controller.

* remove CEL typechecking from API server.

* fix initializer tests.

* remove type checking integration tests

from API server integration tests.

* validatingadmissionpolicy-status options.

* grant access to VAP controller.

* add defaulting unit test.

* generated: ./hack/update-codegen.sh

* add OWNERS for VAP status controller.

* type checking test case.

Kubernetes-commit: 049614f884e61d87fc5e277cf9fd7cb2e6571217
2023-07-13 13:41:50 -07:00
Joe Betz e04cbed587 CEL lib: Expose errors on authz decisions instead of raising them from check().
Co-authored-by: Ben Luddy <bluddy@redhat.com>

Kubernetes-commit: 1053d1bbcf581f20300a821a951a14ae77915246
2023-03-10 22:38:21 -05:00
Jiahui Feng ef6545eca1 expended type checking.
Kubernetes-commit: e655931274f91a7023fc2d5a26d8fe8ecaa1fa39
2023-07-09 19:41:44 -07:00
Jiahui Feng 9eebea091a add test for authorizer type checking.
Kubernetes-commit: 7ccc23178396fb7c50cd59a16a62e7d79ba973a9
2023-06-08 15:51:05 -07:00
Jiahui Feng c85cef6cc3 add support for authorizer to type checking.
Kubernetes-commit: 04fa4184ed349d6ccce5be4daa7561356eebeea3
2023-06-07 10:11:30 -07:00
Ben Luddy 330dca5753 Cache authz decisions within validating policy admission.
This avoids the surprise of identical authorization checks within a
policy evaluating to different decisions during the same admission
pass, and reduces the overhead of repeatedly referencing the same
authorization check.

Kubernetes-commit: f1700e4b95b404b37312084800ab8022f7069fee
2023-03-09 14:52:09 -05:00
Mskxn 2595ae0416 use stopCh to avoid goroutine leak in tests
Kubernetes-commit: 132d477cb7aa323c0eae6dd9a09f9c93fb570b83
2023-07-06 16:24:58 +08:00
Tim Allclair 2a8bc69060 Initialize the AuditEvent with the AuditContext (#113611)
* Initialize the AuditEvent with the AuditContext

* Squash: Address PR feedback

* Squash: address PR feedback

Kubernetes-commit: 2b03f04ce589a57cf80b2153c7e5056c53c374d3
2023-07-03 18:28:13 +00:00
Joe Betz f32e391a45 Introduce CEL EnvSets for managing safe rollout of new CEL features, libraries and expression variables
Kubernetes-commit: e740f8340eedc89baccd120329b454a860385e2d
2023-04-28 14:16:56 -04:00
Tim Hockin 6fa34a3ae5 Clean up brace whitespace in **/validation_test.go
This was making my eyes bleed as I read over code.

I used the following in vim.  I made them up on the fly, but they seemed
to pass manual inspection.

:g/},\n\s*{$/s//}, {/
:w
:g/{$\n\s*{$/s//{{/
:w
:g/^\(\s*\)},\n\1},$/s//}},/
:w
:g/^\(\s*\)},$\n\1}$/s//}}/
:w

Kubernetes-commit: d55b67b349021b6c46fc6ce78f2a36bd4217145f
2023-05-02 00:36:15 -07:00
Tim Hockin 0165503c5a Replace uses of ObjectReflectDiff with cmp.Diff
ObjectReflectDiff is already a shim over cmp.Diff, so no actual output
or behavior changes

Kubernetes-commit: bc302fa4144d21a338683cd83701661f97be4aba
2023-03-23 11:34:03 -07:00
Ben Luddy 83b0e6192f Remove vestigal err check from CEL admission controller.
Validate no longer returns an error.

Kubernetes-commit: 13192176002ae4fd31bdaaff6083deb9e6256880
2023-03-09 16:13:12 -05:00
Max Smythe 41adff8c93 Custom match criteria (#116350)
* Add custom match conditions for CEL admission

This PR is based off of, and dependent on the following PR:

https://github.com/kubernetes/kubernetes/pull/116261

Signed-off-by: Max Smythe <smythe@google.com>

* run `make update`

Signed-off-by: Max Smythe <smythe@google.com>

* Fix unit tests

Signed-off-by: Max Smythe <smythe@google.com>

* Fix unit tests

Signed-off-by: Max Smythe <smythe@google.com>

* Update compatibility test data

Signed-off-by: Max Smythe <smythe@google.com>

* Revert "Update compatibility test data"

This reverts commit 312ba7f9e74e0ec4a7ac1f07bf575479c608af28.

* Allow params during validation; make match conditions optional

Signed-off-by: Max Smythe <smythe@google.com>

* Add conditional ignoring of matcher CEL expression validation on update

Signed-off-by: Max Smythe <smythe@google.com>

* Run codegen

Signed-off-by: Max Smythe <smythe@google.com>

* Add more validation tests

Signed-off-by: Max Smythe <smythe@google.com>

* Short-circuit CEL matcher when no matchers specified

Signed-off-by: Max Smythe <smythe@google.com>

* Run codegen

Signed-off-by: Max Smythe <smythe@google.com>

* Address review comments

Signed-off-by: Max Smythe <smythe@google.com>

---------

Signed-off-by: Max Smythe <smythe@google.com>

Kubernetes-commit: e5fd204c33e90a7e8f5a0ee70242f1296a5ec7af
2023-03-16 04:20:31 +00:00
Igor Velichkovich 05d2078e68 Matchconditions admission webhooks alpha implementation for kep-3716 (#116261)
* api changes adding match conditions

* feature gate and registry strategy to drop fields

* matchConditions logic for admission webhooks

* feedback

* update test

* import order

* bears.com

* update fail policy ignore behavior

* update docs and matcher to hold fail policy as non-pointer

* update matcher error aggregation, fix early fail failpolicy ignore, update docs

* final cleanup

* openapi gen

Kubernetes-commit: 5e5b3029f3bbfc93c3569f07ad300a5c6057fc58
2023-03-15 07:36:02 +00:00
Jiahui Feng fc16fc2926 implmementing type checking
with multi-type support.

Kubernetes-commit: feb18b3f5f9d443c27dd8cccb6358f271f887744
2023-03-07 15:49:19 -08:00
Jiahui Feng 52ca13e6fc implement message expression.
Kubernetes-commit: d8be7aa9ca99070e42cdef37b8c4af07b754520e
2023-03-08 17:36:11 -08:00
guiyong.ou d3acecc57c code cleanup
Signed-off-by: guiyong.ou <guiyong.ou@daocloud.io>

Kubernetes-commit: aa6d0f5bb0b5cf9aae239b6a439302fc11c4a89e
2022-07-24 21:16:21 +08:00
Igor Velichkovich 9608de14c4 migrate versionedattr to avoid circular dependency
Kubernetes-commit: 64c426a90232e34853d9b9cfdaad5409371c191a
2023-03-03 14:04:29 -06:00
Cici Huang 19b3ccef1c Rebase changes.
Kubernetes-commit: 1445e0371f83895c19b740bead95d1cd1c81f5a2
2023-03-07 06:50:33 +00:00
Joe Betz 0670e5fe76 Add test for context cancellation.
Kubernetes-commit: 92e5b09471933bcdd6836c725939896c1d0cc0e6
2023-03-06 23:32:29 +00:00
Cici Huang f58819aa69 Apply context cancellation to ValidatingAdmissionPolicy.
Kubernetes-commit: c400002facd01a8b0fc10ca4f5a66c8b8abd94c4
2023-03-03 00:18:47 +00:00
Joe Betz 265820879d Implement validationActions and auditAnnotations
Kubernetes-commit: d221ddb89a5dde5a6f55674dc38aa71cc842d481
2023-03-06 17:29:28 -05:00
Cici Huang e7c00895a3 Fix CI
Kubernetes-commit: 6d082116520ad96a4406f90383513551b7caaa68
2023-03-06 22:37:52 +00:00
Cici Huang c4a92f1b65 Apply resource constraints to ValidatingAdmissionPolicy.
Kubernetes-commit: 244c63a2e6c8d859be8f4c6c23fbe1263dbfab0a
2023-02-14 06:37:57 +00:00