Project

General

Profile

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

Tom Clegg, 06/25/2018 07:25 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
h2. A: Proxy "GET workflow" request on behalf of local user
15
16 2 Tom Clegg
Cluster uuuuu makes a salted token for wwwww when proxying the client's "GET workflow wwwww-*" request.
17 1 Tom Clegg
18 2 Tom Clegg
Cluster wwwww calls back to uuuuu to verify the salted token.
19
20
h2. B: Proxy "GET workflow" request on behalf of remote user (authenticated by same remote cluster that hosts workflow)
21
22
* token issued by uuuuu
23
* workflow hosted by uuuuu
24
* a-c-r connects to rrrrr
25
26
Client (arvados-cwl-runner) uses original token (issued by uuuuu) instead of an rrrrr-salted token.
27 3 Tom Clegg
* Todo: during login, uuuuu asks the user to choose between single-cluster and all-clusters token.
28 2 Tom Clegg
29
Cluster rrrrr calls back to cluster uuuuu to verify the token for rrrrr-local transactions.
30
* Todo: uuuuu issues v2 tokens, so rrrrr knows where to perform the verify callback.
31
* Todo: v2 tokens indicate whether or not they are salted (e.g., len(secret)==40 iff salted).
32
* Todo: rrrrr salts the supplied token when doing the verify callback, if it's not already salted.
33
34
Cluster rrrrr makes a salted token for uuuuu when proxying the client's "GET workflow uuuuu-*" request.
35
* Todo: uuuuu accepts self-issued tokens that have been uuuuu-salted (for regular requests, not verify callbacks).
36
37
(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.)
38
39
h2. C: Proxy "GET workflow" request on behalf of user authenticated by different remote cluster
40
41
* token issued by uuuuu
42
* workflow hosted by wwwww
43
* a-c-r connects to rrrrr
44
45
Client (arvados-cwl-runner) uses original token (issued by uuuuu) instead of an rrrrr-salted token.
46
* (as in scenario B)
47
48
Cluster rrrrr makes a salted token for wwwww when proxying the "GET workflow wwwww-*" request.
49
50
Cluster wwwww calls back to uuuuu to verify the token.
51
52
h2. D: Parent (workflow) container submits child container to a fourth cluster
53
54
(tbd)