-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
google_grpc: add a runtime flag to disable TLSv1.3 #32315
google_grpc: add a runtime flag to disable TLSv1.3 #32315
Conversation
Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Signed-off-by: Kuat Yessenov <kuat@google.com>
…rsion Change-Id: Ie1801869d4470a701dd9e32a2ece3417489d323a
pin myself here @stevenzzzz |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, but I'd like to get @gtcooke94 to also take a quick look.
@yanavlasov This is now complete. Added a test to verify that the connection is closed before the request is cancelled. There is no direct hook to check for a handshake failure:
Both are valid issues, but cannot be fixed in this PR with a limited scope. |
The test failure is real - it appears google_grpc calls do return failures sometimes, but I'm not sure why that doesn't happen locally to me. |
/wait |
The grpc TLS API usage LGTM |
I think I deflaked it, since it passes |
Build failure seems legit: https://source.cloud.google.com/results/invocations/9c6a93e0-adaf-4ba6-8faa-8bbcd7a40c99 Note this is compile_time_options build. |
/wait |
Change-Id: I329279ab04766d92bb6c243e093b74822132db51 Signed-off-by: Kuat Yessenov <kuat@google.com>
…rsion Change-Id: I42b65771d214a3e791fbaf4e1e65eb8e13548e92
@RyanTheOptimist Yan suggested to assign this to you since he's out this week. |
if (Runtime::runtimeFeatureEnabled("envoy.reloadable_features.google_grpc_disable_tls_13")) { | ||
options.set_max_tls_version(grpc_tls_version::TLS1_2); | ||
} | ||
return grpc::experimental::TlsCredentials(options); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code all looks reasonable, but I notice that we are now returning experimental::TlsCredentials
instead of SslCredentials
. Is there any behavior change associated with this new class? (I'm guessing not, but thought I should confirm.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I asked @matthewstevenson88 from gRPC team to confirm the API usage - and they did per #32315 (review). We only need to set a root cert, a private key, and a cert chain in Envoy, and the API seems to be compatible with that and offer more knobs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Sounds good.
Change-Id: I5b5ec42d5b3138060505c74d313d759199083e8d Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kyessenov why can't this be a simple configuration in GoogleGrpcService
? I think for our internal needs we would want something that can be set via xDS.
@htuch We should follow-up with that. We need this for backporting - we have 5 versions of Envoy in use and cannot possibly backport xDS additions. Also, GoogleGrpcService is part of Wasm ABI - that complicates things further. |
* google_grpc: add a runtime flag to disable TLSv1.3 (envoyproxy#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (envoyproxy#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (envoyproxy#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (envoyproxy#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com>
* google_grpc: add a runtime flag to disable TLSv1.3 (envoyproxy#32315) Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4 Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added. Additional Description: Risk Level: low, default false Testing: regression Change-Id: I34daae55ede7c8093b0dac1fa6ff5a5dc8df677d Signed-off-by: Kuat Yessenov <kuat@google.com> Signed-off-by: Sean Killeen <SeanKilleen@gmail.com>
What's the game plan for flipping this? It has no TODO / tracking issue |
@alyssawilk Good question. I believe the game plan is to extend/refresh |
@markdroth - since you are both xDS and gRPC shepherd. |
Can you find someone willing to take this and add a TODO, or take it on yourself? Or make it a non-feature-flag runtime opttion |
@markdroth Can you give some guidance from xDS angle - do we need to extend |
I discussed this with @kyessenov on slack last week. Fleshing out what we discussed there a bit, I think we have the following options:
I think option 4 is the most appealling of these options. |
for (1) I don't know why we'd want to use the google-grpc xds fetch - it feel like as with any other envoy extension point, we could have Envoy config to do an xDS fetch of "arbitrary" (in this case bootstrap) config which would be handed to the gRPC client to do what it wills with. For any of 1-4, do we have anyone planning to work on it or plausible line items in some team's 2025 roadmap? If not I'd like to understand where this knob is used (I assume google3?) and suggest we replace the existing runtime guard (designed for transient features only) to a boolean runtime field (which can hang around indefinitely until the feature is handled) |
@alyssawilk I will take the task to move it to the boolean field. This is used everywhere except google3 for Istio/CSM in FIPS mode, since boringssl cannot use TLSv1.3 in FIPS mode for the certified builds. |
excellent thanks - I was a bit wary to move it myself as I didn't want to break whoever depended on it :-) |
Change-Id: Id88723a81d4b1586bf12be6f4dc7a81ae7b0d9c4
Commit Message: Adds a temporary runtime flag to disable TLSv1.3 by gRPC SDK until a proper xDS extension can be added.
Additional Description:
Risk Level: low, default false
Testing: regression