Project

General

Profile

Authentication for a multi-cluster workflow » History » Version 4

Tom Clegg, 06/25/2018 09:49 PM

1 1 Tom Clegg
h1. Authentication for a multi-cluster workflow
2
3
(work in progress)
4
5
Scenarios:
6
7
| user uuid      | workflow uuid       | cluster running parent workflow  | cluster running child container  ||
8
| uuuuu          | uuuuu               | uuuuu                            | uuuuu                            |degenerate case (no federation)|
9
| uuuuu          | wwwww               | uuuuu                            | uuuuu                            |A|
10 2 Tom Clegg
| uuuuu          | uuuuu               | rrrrr                            | rrrrr                            |B|
11
| uuuuu          | wwwww               | rrrrr                            | rrrrr                            |C|
12
| uuuuu          | wwwww               | rrrrr                            | ccccc                            |D|
13 1 Tom Clegg
14 4 Tom Clegg
In all cases the client (arvados-cwl-runner) connects to "cluster running parent workflow" -- it uses the same env/config to fetch workflow records and create container requests.
15
16 1 Tom Clegg
h2. A: Proxy "GET workflow" request on behalf of local user
17 4 Tom Clegg
18
* token issued by uuuuu
19
* workflow hosted by wwwww
20
* a-c-r connects to uuuuu
21 1 Tom Clegg
22 2 Tom Clegg
Cluster uuuuu makes a salted token for wwwww when proxying the client's "GET workflow wwwww-*" request.
23 1 Tom Clegg
24 2 Tom Clegg
Cluster wwwww calls back to uuuuu to verify the salted token.
25
26
h2. B: Proxy "GET workflow" request on behalf of remote user (authenticated by same remote cluster that hosts workflow)
27
28
* token issued by uuuuu
29
* workflow hosted by uuuuu
30
* a-c-r connects to rrrrr
31
32
Client (arvados-cwl-runner) uses original token (issued by uuuuu) instead of an rrrrr-salted token.
33 3 Tom Clegg
* Todo: during login, uuuuu asks the user to choose between single-cluster and all-clusters token.
34 2 Tom Clegg
35
Cluster rrrrr calls back to cluster uuuuu to verify the token for rrrrr-local transactions.
36
* Todo: uuuuu issues v2 tokens, so rrrrr knows where to perform the verify callback.
37
* Todo: v2 tokens indicate whether or not they are salted (e.g., len(secret)==40 iff salted).
38
* Todo: rrrrr salts the supplied token when doing the verify callback, if it's not already salted.
39
40
Cluster rrrrr makes a salted token for uuuuu when proxying the client's "GET workflow uuuuu-*" request.
41
* Todo: uuuuu accepts self-issued tokens that have been uuuuu-salted (for regular requests, not verify callbacks).
42
43
(Alternatively, cluster rrrrr, when proxying a "GET workflow uuuuu-*" request with a token issued by uuuuu, passes through the supplied token without salting it -- but this needlessly sends a more powerful token over the network.)
44
45
h2. C: Proxy "GET workflow" request on behalf of user authenticated by different remote cluster
46
47
* token issued by uuuuu
48
* workflow hosted by wwwww
49
* a-c-r connects to rrrrr
50
51
Client (arvados-cwl-runner) uses original token (issued by uuuuu) instead of an rrrrr-salted token.
52
* (as in scenario B)
53
54
Cluster rrrrr makes a salted token for wwwww when proxying the "GET workflow wwwww-*" request.
55
56
Cluster wwwww calls back to uuuuu to verify the token.
57
58
h2. D: Parent (workflow) container submits child container to a fourth cluster
59
60
(tbd)