generated from kubernetes/kubernetes-template-project
-
Notifications
You must be signed in to change notification settings - Fork 597
docs: add provisional GEP for extending TLS Validation in BackendTLSPolicy #4153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+80
−0
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# GEP-4152: Extending TLS Validation in BackendTLSPolicy | ||
|
||
* Issue: [#4152](https://github.com/kubernetes-sigs/gateway-api/issues/4152) | ||
* Status: Provisional | ||
|
||
## TLDR | ||
|
||
The ability for the `BackendTLSPolicy` to skip TLS verification or to validate | ||
certificates based on their fingerprint or public key hash. | ||
|
||
## Motivation | ||
|
||
The current `BackendTLSPolicy` follows a secure-by-default approach that requires | ||
users to provide a trusted CA certificate bundle or rely on the system’s default | ||
certificate store (which typically includes root CAs) to validate backend server | ||
certificates. However, real-world deployments include cases where strict | ||
certificate validation may not be possible or practical, e.g., Development and | ||
testing environments that use self-signed certificates generated dynamically at | ||
runtime. | ||
|
||
In such scenarios, users may need the flexibility to disable certificate | ||
verification or to use certificate pinning. Certificate pinning offers a safer | ||
and more controlled alternative, instead of bypassing TLS validation, the gateway | ||
verifies that the backend’s certificate matches a known fingerprint or public key | ||
hash. This preserves the confidentiality and integrity guarantees of TLS while | ||
removing the operational overhead of managing full certificate chains or trusted | ||
CA bundles. | ||
|
||
### User Stories | ||
|
||
* As an application developer, I want the option to disable backend TLS | ||
certificate verification on a per-backend basis, so I can connect to services | ||
using dynamically generated or self-signed certificates during development or | ||
testing. | ||
* As an application developer, I want secure-by-default behavior, ensuring that | ||
certificate verification is always enabled unless I explicitly opt out, to | ||
prevent accidentally deploying insecure configurations to production. | ||
* As an application developer, I want an alternative to disabling verification, | ||
such as certificate or SPKI pinning, so I can securely communicate with | ||
backends using self-signed certificates without managing CA bundles. | ||
* As a gateway operator, I want to control whether skipping TLS validation is | ||
permitted for specific Gateways. | ||
* As a security officer, I want transparency and auditability into where TLS | ||
verification has been disabled. | ||
|
||
## Goals | ||
|
||
* Enable connecting to backends over TLS without requiring certificate | ||
verification. | ||
* Support certificate and SPKI pinning as alternatives to disabling verification | ||
or relying on CA trust chains. | ||
* Maintain a secure-by-default approach, with certificate verification enabled | ||
unless explicitly opted out. | ||
* Provide operator-level controls so Gateway constraints can restrict or permit | ||
the use of skip-verify. | ||
snorwin marked this conversation as resolved.
Show resolved
Hide resolved
|
||
* Provide clear runtime indicators that security is degraded when TLS validation | ||
is disabled. | ||
|
||
## API | ||
|
||
**TODO**: First PR will not include any implementation details, in favor of | ||
building consensus on the motivation, goals and non-goals first. _"How?"_ we | ||
implement shall be left open-ended until _"What?"_ and _"Why?"_ are solid. | ||
|
||
## References | ||
|
||
* [GEP-1897: BackendTLSPolicy - Explicit Backend TLS Connection Configuration](https://gateway-api.sigs.k8s.io/geps/gep-1897/) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
apiVersion: internal.gateway.networking.k8s.io/v1alpha1 | ||
kind: GEPDetails | ||
number: 4152 | ||
name: Extending TLS Validation in BackendTLSPolicy | ||
status: Provisional | ||
authors: | ||
- snorwin | ||
extends: | ||
- number: 1897 | ||
name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.