Saltar para o conteúdo principal
Versão 3.0

Segurança — JupyterLab

ChartVersion3.0.1TypeapplicationAppVersion5.3.0
CompatibilidadeKubernetes1.32+OpenShift4.19+Rancher2.10.x+
Suporte a recursosLDAPsuportado

O chart tdp-jupyter usa por omissão autenticação DummyAuthenticator (utilizador e palavra-passe definidos nos valores) e permite LDAP opcional via ldapauthenticator.LDAPAuthenticator.

Autenticação por omissão

tdp-jupyter:
hub:
config:
JupyterHub:
authenticator_class: dummy
DummyAuthenticator:
username: admin
password: tdp-password
aviso

Adequado apenas para desenvolvimento. Altere a palavra-passe ou o método de autenticação em produção.

LDAP

A autenticação LDAP é opcional. Para a activar, crie o Secret com a palavra-passe de bind e aplique a configuração de overlay.

Credenciais e Secrets

Terminal input
kubectl create secret generic tdp-jupyter-ldap-bind \
--from-literal=LDAP_BIND_PASSWORD='<LDAP_BIND_PASSWORD>' \
-n <NAMESPACE>

Configuração LDAP

tdp-jupyter:
hub:
config:
JupyterHub:
authenticator_class: ldapauthenticator.LDAPAuthenticator
LDAPAuthenticator:
server_address: "<LDAP_HOST>"
server_port: 389
tls_strategy: "insecure"
user_attribute: "uid"
bind_dn_template:
- "uid={username},cn=users,cn=accounts,dc=<LDAP_DOMAIN>,dc=<TLD>"
extraConfig:
ldap-config: |
c.Authenticator.allow_all = True

O bloco allow_all é opcional e serve para facilitar testes. Em produção, restrinja o acesso com allowed_groups ou listas de utilizadores suportados pelo LDAPAuthenticator da sua versão do JupyterHub (consulte a documentação oficial).

Parâmetros

ParâmetroDescrição
LDAPAuthenticator.server_addressEndereço do servidor LDAP
LDAPAuthenticator.server_portPorta do servidor LDAP
tls_strategyModo TLS (ex.: insecure para desenvolvimento)
bind_dn_templateTemplate do DN do utilizador
user_attributeAtributo de login (ex.: uid)

Ingress (Workers Spark → driver)

Em modo de cluster distribuído, o driver Spark corre dentro do pod do notebook — são os Workers que precisam abrir ligação de volta para ele, não o contrário.
Por isso é necessário permitir ingress dos pods Worker nas portas do driver (2222) e do block manager (7777) do notebook, para que os Workers consigam entregar os resultados ao driver:

tdp-jupyter:
singleuser:
networkPolicy:
enabled: true
# Permite que os Workers Spark se liguem de volta ao driver do notebook
ingress:
- from:
- podSelector:
matchLabels:
app.kubernetes.io/component: worker
app.kubernetes.io/instance: tdp-spark
app.kubernetes.io/name: spark
ports:
- protocol: TCP
port: 2222 # spark.driver.port
- protocol: TCP
port: 7777 # spark.blockManager.port
aviso

Sem esta regra de ingress, os Workers entram em timeout ao tentar alcançar o driver e a aplicação Spark falha com Connecting to /<pod-ip>:2222 timed out.

Solução de problemas

ProblemaSolução
Falha de autenticação LDAPVerifique bind_dn_template, conectividade e atributos do servidor LDAP
Hub não iniciaValide a sintaxe de extraConfig e o YAML
Falha de conexão Spark/S3/Trino a partir do notebookVerifique singleuser.networkPolicy.egress — o tráfego pode estar a ser bloqueado
Workers não conseguem alcançar o driver (Connecting to /<ip>:2222 timed out)A NetworkPolicy do pod single-user está a bloquear o ingress dos pods Worker do Spark. Adicione a regra de ingress da secção Ingress (Workers Spark → driver) e actualize o release