You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
backends: # Don't look at the Superset CRD structure, we are only interested in the tls stuff here
283
314
- name: my-trino
284
315
trino:
285
-
discoveryConfigName: my-trino
316
+
discovery: my-trino
286
317
# override tls from the global config, OPTIONALLY
287
318
tlsSecretClass: my-second-pki
288
319
----
@@ -295,6 +326,7 @@ backends: # Don't look at the Superset CRD structure, we are only interested in
295
326
==== Cons
296
327
297
328
* The client has to know what pki/secretClass the server is using.
329
+
* Superset TrinoConnection could not only say "Connect this Superset and this Trino", but need to say "using this ca.crt to validate the Trino server"
298
330
299
331
=== [2] TLS: Include caCert in Discovery config
300
332
@@ -318,7 +350,6 @@ endpoint:
318
350
319
351
==== Pros
320
352
321
-
* Assuming DiscoveryConfig is located within a CM, the operator can simply mount the discovery CM to get the ca.crt. Operator does not need to read/look at the DiscoveryConfig.
322
353
* Easier for external clients to use as they don't need to know the concept of SecretClasses and don't even need to run withing k8s.
323
354
* The client has to *not* know what pki/secretClass the server is using.
324
355
@@ -339,11 +370,13 @@ authentication:
339
370
authenticationClass: my-class
340
371
----
341
372
373
+
==== Pros
374
+
* IMPORTANT: This is the only thing the server can know (how he is verifying client identities). He can not recommend an SecretClass used to obtain the client credentials. E.g. he uses an LDAP AuthenticationClass, there is no way it can now what SecretClass provides credentials accepted by LDAP. (Most cases it will be a user logging into a WebUI and the LDAP credentials of the user are not even stored anywhere but just remembered by the user)
375
+
342
376
==== Cons
343
377
344
378
* Operator has to read the AuthenticationClass to determine its type (pw/tls/keytab) and set up the needed volumes and commands.
345
-
* The AuthenticationClass is meant to describe "how should a server verify connecting clients" and re-purpose it to mean "how a client should authenticate itself".
346
-
379
+
// * The AuthenticationClass is meant to describe "how should a server verify connecting clients" and re-purpose it to mean "how a client should authenticate itself". Image a user creates a Secret `trino-users` with *only* a ca.crt and a SecretClass `trino-users` on top. The connecting client than has no way of knowing how to get a client cert.
347
380
348
381
=== [3] Authentication: Add SecretClass to Discovery Config
349
382
@@ -359,7 +392,7 @@ authentication:
359
392
==== Cons
360
393
361
394
* Operator has to read the SecretClass to determine its type (pw/tls/keytab) and set up the needed volumes and commands.
362
-
395
+
* Image then SecretClass is of type `k8sSearch`. The connection client (e.g. controlled via superset-operator) than has no idea if he should expect a tls.crd or a keytab when mounting the SecretClass.
363
396
364
397
=== [3] Authentication: Add needed details
365
398
@@ -372,11 +405,9 @@ authentication:
372
405
none: {}
373
406
password: {}
374
407
tls:
375
-
secretClass: client-tls # Use this SecretClass to obtain a *client* cert
408
+
secretClass: client-tls # Use this SecretClass to obtain a *client* cert tls.crt
376
409
kerberos:
377
410
secretClass: client-kerberos # Use this SecretClass to obtain a keytab
378
-
oauth:
379
-
secretClass: client-oauth # Use this SecretClass to obtain whatever it needs
380
411
----
381
412
382
413
==== Pros
@@ -385,13 +416,19 @@ authentication:
385
416
386
417
==== Cons
387
418
388
-
* Operator has read the Discovery CM it wants to connect to
419
+
=== [3] Authentication: Don't add information how to authenticate
420
+
421
+
Trino discovery does not provide any information on how to authenticate
422
+
423
+
==== Cons
424
+
425
+
* Not viable, as users need to know how to connect, and are not expected to try 50 different auth methods. We need to give them a AuthenticationClass, that says them e.g. what LDAP or PKI is used.
389
426
390
427
== Decision Outcome
391
428
392
-
[1] Discovery Object: TODO
393
-
[2] TLS: TODO
394
-
[3] Authentication: TODO
429
+
[1] Discovery Object: `Discovery Object: Use dedicated CRD object for every product - in combination with ConfigMap`
430
+
[2] Server tls cert: TODO
431
+
[3] Authentication: `Authentication: Add AuthenticationClass to Discovery Config`
395
432
396
433
=== Appendix A
397
434
Let's model a kerberos secured HDFS with the Options "TLS: Include caCert in Discovery config" and "Authentication: Add needed details"
0 commit comments