Skip to content

Conversation

@howardjohn
Copy link
Member

As part of istio/istio#33210

Basically envoy made the defaults very restrictive, so if users want to to connect to legacy services the only current option is envoyfilter. I think adding this to DR opens up some usages

@google-cla google-cla bot added the cla: yes Set by the Google CLA bot to indicate the author of a PR has signed the Google CLA. label Jun 1, 2021
@istio-testing istio-testing added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 1, 2021
@istio-testing
Copy link
Collaborator

@howardjohn: The following test failed, say /retest to rerun all failed tests:

Test name Commit Details Rerun command
release-notes_api 3c8b7a6 link /test release-notes_api

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

string sni = 6;

// Optional: If specified, only support the specified cipher list.
// Otherwise default to the default cipher list supported by Envoy.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we default the the list supported by Istio ( == what 1.8, 1.9, etc support ) ?

And I know I usually argue the opposite side - but is this something we want users to configure
for each DR ? Most users don't even know the names of the cipher suites.
I think this is one of the cases where a 'global' setting in istiod (MeshConfig) may have a better UX -
I can see a case where for a very specific destination you need to enable an extra cipher, but
in that case you would add it - not replace. And even for this a 'supportWeakCiphes' bool may
be better than typing the strange names.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I originally argued for that, but there were some concerns about reverting our security posture. I can see both arguments.. generally we favor backwards compat over security but in this case we already broke it so it seems a bit like a sunk cost to some extent.

Regarding your other comments - this does seem reasonable, I was mostly favoring similarities with Gateway api (literally copy+paste), but maybe its better to move it into mesh config (or append)...

@nrjpoddar any thoughts?

@costinm
Copy link
Contributor

costinm commented Jun 1, 2021 via email

@nrjpoddar
Copy link
Member

@costinm @howardjohn I don't think we broke a lot of users as evident from the fact that just 1 user has complained so far and the fact that most external servers support better ciphers. I think we are more or less agreeing that we should continue down this path of better secure defaults with some knob for users to still downgrade to less secure ciphers as needed.

My reasonings for adding in DR APIs are:

  1. As most services will have support for stronger ciphers, I anticipate a user only requiring this option for few hosts at which point we shouldn't force them to lower the security posture globally by only providing a mesh config option.
  2. If a user still wants to configure this globally, they can always enable DR merging, and add a DR with no host and a custom cipher list in config root namespace.

@costinm
Copy link
Contributor

costinm commented Jun 2, 2021 via email

@nrjpoddar
Copy link
Member

I like it!

Basically setting it to insecure gets you back to old defaults. If cipher configurability is desired we can add this array field that @howardjohn has in future.

@costinm
Copy link
Contributor

costinm commented Jun 2, 2021 via email

@nrjpoddar
Copy link
Member

Cipher suites names come from openssl so it can be different in other runtimes not based on openssl derivatives.

@howardjohn
Copy link
Member Author

@ramaraochavali WDYT of "allow insecure mode"? Do you have a need for specific ciphers?

@ramaraochavali
Copy link
Contributor

No we do not have need for specific ciphers as of now. But we never know - our security might enforce it. I agree listing all ciphers for regular use is problematic. How about this?

Introduce a new cipher_validation_mode : DEFAULT|INSECURE|CONFIGURED
DEFAULT - Current Default Cipher Suites (Default value that Envoy provides)
INSECURE - Earlier cipher suites it used to Allow
CONFIGURED- when this set, user has to specify list of ciphers?

@hzxuzhonghu
Copy link
Member

I do think most users not want to config the ciphers, secure cipher suites should satisfy most users. If this is for the very little percentage of users, how about adding a global api, which allows only operator to set.

@istio-testing istio-testing added the needs-rebase Indicates a PR needs to be rebased before being merged label Jul 29, 2021
@istio-testing
Copy link
Collaborator

@howardjohn: PR needs rebase.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla: yes Set by the Google CLA bot to indicate the author of a PR has signed the Google CLA. needs-rebase Indicates a PR needs to be rebased before being merged size/XS Denotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants