dask / dask/distributed

Security per Listener

Open
#3,339 7 comments 0 reactions 0 assignees View on GitHub
discussion
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.