Fornitore OAuth Ilum
Panoramica
Ilum’s architecture includes a range of microservices such as Airflow, Superset, Grafana, Gitea, and Minio. These services often provide access to critical data or, in the case of Airflow, direct interaction with cluster resources. As a result, centralized access management becomes essential. To address this, Ilum offers an integrated OAuth Provider, allowing centralized authentication and authorization through the Ilum UI and Ilum-Core.
Se abilitato, Ilum preconfigura automaticamente i microservizi supportati per l'accesso basato su OAuth. Gli amministratori devono solo configurare alcuni valori del grafico Helm per attivare questa integrazione.
Within Ilum’s user management system, you can define which users have access to specific microservices. You can also map Ilum roles and groups to the corresponding roles and groups within each integrated service, enabling consistent access control across the platform.
Avvio rapido
Per avviare Ilum con il provider OAuth abilitato, è necessario completare i due passaggi seguenti:
- Interruttore
globale.sicurezza.hydra.enablednei valori di helm avero - Specifica l'URL di Ilum-UI in
global.security.hydra.uiDomaineglobal.security.hydra.uiProtocol
L'URL dell'interfaccia utente è l'indirizzo che puoi inserire direttamente nel tuo browser per accedere all'interfaccia utente di Ilum. Ci sono due modi per ottenere questo URL:
- In Minikube è possibile abilitare l'add-on in entrata:
minikube addons enable Ingresso
E poi dovresti abilitare l'ingresso Ilum-UI nei valori helm come questo:
ilum-ui:
Ingresso:
Abilitato: vero
ospite: ilum-Ui-url.dominio
Finalmente puoi creare valori.yaml file:
globale:
sicurezza:
idra:
Abilitato: vero
uiDomain: "ilum-ui-url.dominio"
uiProtocol: "http"
ilum-ui:
Ingresso:
Abilitato: vero
ospite: "ilum-ui-url.dominio"
E aggiorna il tuo cluster:
Aggiornamento del timone Ilum Ilum/Ilum -f valori.yaml --riuso-valori
- È possibile utilizzare l'indirizzo IP del nodo e la porta del nodo del servizio Ilum-UI.
Configura il tuo servizio Ilum-UI per utilizzare NodePort:
ilum-ui:
servizio:
digitare: Porta nodo
porta nodo: 31007
Ottieni l'indirizzo IP del tuo nodo:
kubectl get nodes -o wide

Usa l'indirizzo IP e la porta del nodo per creare l'URL dell'interfaccia utente e inserirlo in valori.yaml:
globale:
sicurezza:
idra:
Abilitato: vero
uiDomain: "192.168.49.2:31007"
uiProtocol: "http"
ilum-ui:
servizio:
digitare: Porta nodo
porta nodo: 31007
Aggiornare il cluster:
Aggiornamento del timone Ilum Ilum/Ilum -f values.yaml --reuse-values
Infine, dopo l'aggiornamento, è possibile eseguire:
kubectl get pods
E guarda questo output:

A scopo di test lanciamo Ilum con Superset
Aggiornamento del timone Ilum Ilum/Ilum --mettere superset.enabled vero --valori-di-riutilizzo
Una volta che Superset è pronto, puoi accedere inserendo http://192.168.49.2:31007/external/superset nel tuo browser.
Verrai reindirizzato all'interfaccia utente di Ilum con un login_challenge query nell'URL.
Dopo aver inserito le tue credenziali, verrai reindirizzato a Superset, ora connesso.
Mappatura dei ruoli e dei gruppi Ilum
Ilum consente di definire il modo in cui i ruoli e i gruppi interni vengono mappati ai ruoli utilizzati da ciascun microservizio integrato. È inoltre possibile configurare ruoli predefiniti che vengono assegnati automaticamente agli utenti.
Questa configurazione viene gestita tramite i valori Helm. Per impostazione predefinita, è strutturato come segue:
ilum-core:
idra:
mappatura:
ruoliToGitea: nullo
gruppiToGitea: nullo
ruoliToMinio:
- ilumObj: "AMMINISTRATORE"
serviceObjs:
- "consoleAdmin"
- ilumObj: "DATA_ENGINEER"
serviceObjs:
- "sola lettura"
- "solo scrittura"
- "diagnostica"
groupsToMinio: nullo
ruoliDaSuperset:
- ilumObj: "AMMINISTRATORE"
serviceObjs:
- "Amministratore"
- ilumObj: "DATA_ENGINEER"
serviceObjs:
- "Alfa"
groupsToSuperset: nullo
ruoliAFlusso d'aria:
- ilumObj: "AMMINISTRATORE"
serviceObjs:
- "Amministratore"
- ilumObj: "DATA_ENGINEER"
serviceObjs:
- "Utente"
groupsToAirflow: nullo
ruoliAGrafana:
- ilumObj: "AMMINISTRATORE"
serviceObjs:
- "Amministratore"
- ilumObj: "DATA_ENGINEER"
serviceObjs:
- "Editore"
groupsToGrafana: nullo
minioMinAccessRole: "sola lettura"
di flusso d'ariaMinAccessRole: "Spettatore"
supersetMinAccessRole: "Gamma"
grafanaMinAccessRole: "Spettatore"
giteaMinAccessRole: nullo
1. Mappatura dei gruppi
groupsToAirflow, groupsToGrafana, groupsToSuperset, groupsToMinio, gruppiToGitea descrivere il modo in cui i gruppi Ilum vengono mappati ai ruoli nei microservizi a cui sono dedicati questi campi
Ad esempio, se è stato creato un gruppo in Ilum denominato Managers, è possibile assegnargli il "Amministratore" e su misura "Responsabile" ruoli in Airflow con la seguente configurazione:
ilum-core:
idra:
mappatura:
groupsToAirflow:
- ilumObj: "Gestori"
serviceObjs:
- "Amministratore"
- "Utente"
Se i ruoli specificati non esistono nel microservizio di destinazione, verranno ignorati
2. Mappatura dei ruoli
ruoliToGitea, ruoliAGrafana, ruoliDaSuperset, ruoliAFlusso d'aria, ruoliToMinio descrivere il modo in cui i ruoli Ilum vengono mappati ai ruoli nei microservizi a cui sono dedicati questi campi
Ad esempio, se è stato creato un ruolo in Ilum denominato Analitico, è possibile assegnargli il "Utente" e su misura "Analitico" ruoli in Airflow con la seguente configurazione:
ilum-core:
idra:
mappatura:
groupsToAirflow:
- ilumObj: "Analitico"
serviceObjs:
- "Analitico"
- "Utente"
Se i ruoli specificati non esistono nel microservizio di destinazione, verranno ignorati
3. Ruoli minimi
Campi minioMinAccessRole, di flusso d'ariaMinAccessRole, supersetMinAccessRole, grafanaMinAccessRole, giteaMinAccessRole vengono utilizzati per specificare quale ruolo nei microservizi verrà assegnato a un utente connesso per impostazione predefinita se non vengono trovati altri mapping dei ruoli.
Ad esempio nelle configurazioni predefinite:
minioMinAccessRole: "sola lettura"
di flusso d'ariaMinAccessRole: "Spettatore"
supersetMinAccessRole: "Gamma"
grafanaMinAccessRole: "Spettatore"
giteaMinAccessRole: nullo
Ogni utente Ilum che ha accesso al microservizio avrà solo sola lettura accesso
4. Autorizzazioni
Per accedere a un microservizio, a un utente deve essere assegnata l'autorizzazione corrispondente:
MINIO_READ, GRAFANA_READ, AIRFLOW_READ, SUPERSET_READ, GITEA_READ
If a user does not have the required permission, they will not be able to access the service, even if they have a role assigned within that service
5. Riscrittura della mappatura
Ilum fornisce il ilum-core.hydra.rewriteMapping campo, che è impostato su vero per impostazione predefinita.
Se abilitato, Ilum-Core sovrascriverà la configurazione di mappatura esistente con i valori specificati nel grafico Helm ogni volta che il servizio viene riavviato.
Configurazione del provider OAuth
Nel grafico Ilum Helm è possibile configurare il servizio provider OAuth, i pod associati e le impostazioni del client OAuth.
1. Configurazioni del client OAuth
Di seguito sono riportati i valori predefiniti per le configurazioni del client OAuth:
globale:
sicurezza:
idra:
uiDomain: ""
uiProtocol: "http"
ID cliente: "ilum-client"
clientSecret: "segreto"
ilum-core:
idra:
ricreareCliente: vero
ID cliente e clientSecret specificare le credenziali del client OAuth.
uiDomain e uiProtocol define the domain and protocol of the Ilum UI. It is required for the OIDC workflow by both the OAuth Provider and the microservices, particularly for operations such as redirecting users to the Ilum UI login page. uiProtocol can be http (in inglese) o https
ricreareCliente determina se il client OAuth deve essere ricreato al riavvio del provider OAuth. Ciò può essere utile quando si aggiornano le credenziali del client OAuth. Deve essere disattivato al riavvio della distribuzione se le credenziali del client OAuth non vengono modificate. In questo modo si evita la ricreazione non necessaria del client OAuth.
2. Configurazione della distribuzione
Di seguito sono riportati i valori predefiniti per le configurazioni di distribuzione del provider OAuth:
ilum-core:
idra:
cookies:
same_site_mode: "Lax"
Dsn: "postgres://ilum:CHANGEMEPLEASE@ilum-postgresql:5432/hydra?sslmode=disable"
segretiSistema: "CAMBIAMIPER favore"
Distribuzione separata: falso
imagePullPolicy: "Se non presente"
risorse: nullo
cookies.same_site_mode is used to specify SameSite value of CSRF cookies set in Set-Cookie header by hydra during OIDC worflow. This value may require change under proxies for OIDC to work correctly
Dsn viene utilizzato per specificare la stringa di connessione per l'accesso al database PostgreSQL. Per impostazione predefinita, punta al database PostgreSQL distribuito da Ilum, con credenziali e database predefiniti creati da Ilum. Tuttavia, se si utilizza un database, un servizio o credenziali diversi, è necessario aggiornare questo campo di conseguenza.
segretiSistema viene utilizzato per archiviare in modo sicuro i dati sensibili durante il flusso di lavoro OIDC, nonché le informazioni relative al client OAuth, crittografandoli nel database utilizzando un segreto fornito. Deve essere impostato in produzione
Distribuzione separata è un flag che determina se distribuire il provider OAuth come parte di Ilum-Core o come distribuzione separata. Per impostazione predefinita, il provider OAuth utilizza risorse minime (20 Mi di memoria e 1 m di CPU). In condizioni di carico pesante, può scalare fino a 100 m di CPU e 100 Mi di memoria, ma questo generalmente non è un problema quando si esegue insieme a Ilum-Core. Tuttavia, se è necessario un maggiore controllo sull'utilizzo delle risorse, è possibile impostare questo flag su true per distribuire separatamente il provider OAuth.
risorse specifica le richieste di risorse e i limiti per la memoria e la CPU. Questo campo è rilevante solo quando il provider OAuth viene distribuito separatamente, consentendo di controllarne l'allocazione delle risorse.
3. Configurazione del servizio
Di seguito sono riportati i valori predefiniti per le configurazioni del servizio provider OAuth:
ilum-core:
idra:
servizio:
dominio: ilum-idra
digitare: "ClusterIP"
pubblicoPorta: 4444
adminPort: 4445
publicNodePort: ""
adminNodePort: ""
clusterIP: ""
loadBalancerIP: ""
Annotazioni: { }
It’s important to note that the OAuth Provider used by Ilum includes two clients:
-
Client amministratore: Questo client viene utilizzato esclusivamente da Ilum Core nel flusso di lavoro OIDC per scopi amministrativi.
-
Client pubblico: questo client viene utilizzato dai microservizi per accedere all'autenticazione, alle informazioni utente e ad altri endpoint necessari durante il processo OIDC.
4. Provider OAuth sotto il cofano
Ilum utilizza Hydra come provider OAuth e può avviare Hydra come parte della distribuzione Ilum-Core o come distribuzione separata. Durante l'avvio, Hydra esegue un comando per creare un client che verrà utilizzato dai microservizi per l'accesso degli utenti.
Per ulteriori personalizzazioni o per familiarizzare con Hydra, è possibile fare riferimento al Pagina della documentazione di Hydra
Note sull'OAuth nei microservizi
1. Minio
By default, Minio is preconfigured by Ilum to use Ilum’s OAuth Provider. However, if the Accedere con SSO non appare nella schermata di accesso, sarà necessario riavviare la distribuzione di Minio:
kubectl rollout restart deployment ilum-minio.
Il problema si verifica perché Minio potrebbe avviarsi prima che il provider OAuth sia completamente inizializzato, causando il mancato riconoscimento del provider OAuth all'avvio.
2. Gitea
Gitea non è preconfigurato da Ilum. Pertanto, per configurare l'autenticazione con gli utenti Ilum, è necessario specificare le seguenti configurazioni:
Gitea:
Abilitato: vero
Gitea:
configurazione:
server:
ROOT_URL: -Ui-URL>/esterno/gitea
oauth:
- nome: ilum
provider: openidConnect
chiave: -cliente-Id>
segreto: ""
autoDiscoverUrl: "/external/hydra/.well-known/openid-configuration"
Ambiti: "Profilo e-mail OpenID"
Sostituire oauth-client-id, oauth-client-secret e ilum-ui-url con valori corretti (il client-id e il client-secret predefiniti sono ilum-client e segreto)
Si prega di notare che il grafico Gitea non ricrea automaticamente i suoi segreti. Pertanto, per applicare le configurazioni dopo un riavvio, potrebbe essere necessario eliminare manualmente i segreti Gitea e quindi eseguire un aggiornamento Helm
kubectl delete secret ilum-gitea-inline-config ilum-gitea-init ilum-gitea
3. Grafana
Grafana viene preconfigurato automaticamente da Ilum per l'utilizzo dell'autenticazione OAuth. Tuttavia, è necessario specificare il root_url valore come Sostituzione con l'URL Ilum-UI effettivo, affinché il flusso di lavoro OIDC funzioni correttamente:
kube-prometheus-stack:
grafana:
grafana.ini:
server:
root_url: "http://192.168.49.2:31007/external/grafana"
Inoltre, se è necessario un maggiore controllo sulla modalità di mapping dei ruoli e dei gruppi a Grafana, è possibile modificare l'attributo role_attribute_path valore:
kube-prometheus-stack:
grafana:
grafana.ini:
auth.generic_oauth:
role_attribute_path: contiene(grafana_roles, 'Amministratore') && 'Amministratore' || contiene(grafana_roles, 'Editore') && 'Editore' || 'Spettatore'
4. 400: Richiesta errata durante l'accesso
Se viene visualizzato questo errore quando si tenta di accedere tramite OIDC, potrebbe essere causato da Minio. In questo caso, dovresti disconnetterti da Minio, poiché il modo in cui Minio gestisce la sessione Hydra potrebbe interferire con altre sessioni.
5. Using hydra under cloud proxies and with https
When working with Hydra on the cloud, you may encounter issues related to the HTTPS protocol or how your cloud provider’s proxy operates. Here are some solutions that might help:
- Set
ilum-core.hydra.cookies.same_site_modeALaxoStrictwhen using HTTPS.
Hydra uses CSRF tokens during its OIDC workflow, which are set via the Set-Cookie header.
If the SameSite value is set to None over HTTPS, the cookie may not be stored, causing the OIDC workflow to fail.
Therefore, you must set it to Lax o Strict depending on your requirements.
- Ensure the root_url of each service and uiProtocol use the HTTPS protocol.
This is necessary because some proxies treat HTTP URLs as insecure and may block or alter requests to Hydra, disrupting the OIDC workflow.
- Add Hydra to the proxy’s allowlist (whitelist).
If you are using a different domain or protocol for Hydra or any microservices, ensure they are added to the proxy’s allowlist. Otherwise, the proxy may interfere with requests during the OIDC workflow, leading to errors.
6. Using hydra along with LDAP server
If you use an LDAP server for user management, you can connect Ilum-Core to LDAP and set the security type to LDAP. After that, when logging into microservices such as MinIO, Gitea, Superset, Airflow, or Grafana via Hydra, you will be redirected to the Ilum-UI. There, you can use your LDAP credentials to log in to the microservice.
To learn more about Ilum-Core LDAP connection configuration, visit the LDAP documentation page.