Security per Listener
- Dominant language
- Python
- Stars
- 1.7k
- Forks
- 778
- Avg merge
- 2h 50m
- Merged PRs (30d)
- 3
Description
In #3288 we allowed the scheduler to listen to multiple Listeners at the same time. This allowed for a single scheduler to accept connections from two different networks at the same time, such as a set of local `inproc://` workers, and a remote set of `tcp://` workers. This seems to have been a relatively painless change, and works smoothly.
However, when we start rolling security into this, we run into issues because we now accept only one security object, which gets uniformly applied to all of our listeners. This is troublesome in the `inproc/tls` case, and in theory you could imagine having a `tls/tls` case that would also be unpleasant.
So what is the right way to handle this? We could accept a list of Security objects (including None in that list for no-security) and apply those objects appropriately to each of the listeners. Even if we did that, it becomes unclear which security object we should use when making new connections. For example if we have workers on two different tls:// networks and we're asked to make a connection to `tls://alice`, which security object should we use?
In this case should we have two `ConnectionPool`s each with its own security and some sort of function to help dispatch between the two? Or should we have a single `ConnectionPool` with a set of Security objects that it tries, one after the other?
cc @jcrist @sodre @mariusvniekerk
Contributor guide
Assessment
This issue has not been assessed yet.