Clients BI — Power BI, Tableau, SSRS, DBeaver¶
AKKO expose Trino comme point d'entrée SQL fédéré unique pour tout
outil BI en aval. Pas d'adaptateur propriétaire, pas de relais Thrift —
tous les clients parlent JDBC ou ODBC au même host
trino.<domain>, s'authentifient via Keycloak OAuth2 / JWT (ou
mot de passe pour les outils legacy), et héritent des row-filters et
column-masks OPA qui s'appliquent déjà aux utilisateurs du cockpit.
Cette page est le guide copier-coller pour les 4 clients BI entreprise les plus courants.
Prérequis¶
| Item | Valeur | Comment l'obtenir |
|---|---|---|
| Host Trino | trino.<votre-domaine-akko> |
Depuis helm/examples/values-domain.yaml |
| Port Trino | 443 (TLS) |
Entrypoint Traefik |
| Catalogue | iceberg, postgresql, postgresql_akko, polaris |
kubectl -n akko get cm akko-trino-catalogs |
| Username | User Keycloak (ex. alice) |
Console admin Keycloak |
| Password | Password Keycloak de l'user | Console admin Keycloak |
| Certificat CA | optionnel — truster letsencrypt / CA corporate | openssl s_client -connect trino.<domain>:443 -showcerts |
Les utilisateurs s'authentifient avec leur identifiant Keycloak. Les
groupes attachés (ex. projet-scoring, akko-analyst) pilotent les
policies OPA appliquées à chaque requête — mêmes règles que le cockpit.
Power BI Desktop (Windows)¶
1. Installer le driver ODBC Trino¶
Téléchargez le driver ODBC Trino officiel (distribution Starburst, tier gratuit suffisant) :
- https://www.starburst.io/platform/starburst-enterprise/download-drivers/
- Choisir Trino ODBC Driver → Windows x86_64 (64-bit) → installer
2. Créer un DSN ODBC (optionnel mais recommandé)¶
Windows → ODBC Data Sources (64-bit) → System DSN → Add… → Starburst Trino ODBC Driver.
| Champ | Valeur |
|---|---|
| Data Source Name | akko-trino |
| Host | trino.<votre-domaine-akko> |
| Port | 443 |
| Catalog | iceberg (ou vide pour choisir au moment de la requête) |
| SSL | Enabled |
| Authentication | Password (setup le plus simple) |
| Username | votre user Keycloak |
Cliquez Test — vous devriez voir Connection test successful.
3. Connecter depuis Power BI¶
Get Data → ODBC → choisir akko-trino (ou entrer une connection
string directement) :
Driver={Starburst Trino ODBC Driver};Host=trino.<domain>;Port=443;SSL=1;AuthenticationType=Password;UID=alice;PWD=***
Power BI liste les catalogues → schémas → tables. Chargez celles qu'il vous faut et construisez votre rapport. Les column masks (SHA-256 sur les emails, etc.) s'appliquent de façon transparente : alice voit en clair, carol voit le hash — aucune config supplémentaire dans Power BI.
Gotcha — DirectQuery vs Import¶
- Import mode : fonctionne sans config.
- DirectQuery : nécessite un Power BI Gateway car le driver
ODBC Trino n'est pas dans la liste des connecteurs cloud natifs.
Installez la gateway sur une VM à l'intérieur du périmètre AKKO et
configurez-la pour joindre
trino.<domain>:443.
Tableau Desktop / Tableau Server¶
1. Installer le driver JDBC Trino¶
- Télécharger
trino-jdbc-<version>.jardepuis https://trino.io/docs/current/client/jdbc.html. - Le placer dans :
- macOS :
~/Library/Tableau/Drivers - Windows :
C:\Program Files\Tableau\Drivers
2. Connecter¶
Tableau → Connect to a Server → Presto / Trino (même driver JDBC).
| Champ | Valeur |
|---|---|
| Server | trino.<votre-domaine-akko> |
| Port | 443 |
| Catalog | iceberg |
| Schema | vide |
| Authentication | Username and password |
| Username / Password | vos identifiants Keycloak |
| Require SSL | Yes |
Cliquez Sign In — le navigateur de catalogue apparaît.
Gouvernance OPA dans Tableau¶
Les row filters et column masks appliqués au coordinateur Trino sont opaques pour Tableau : une session carol voit moins de lignes qu'une session alice pour la même datasource publiée. Aucune duplication RBAC côté Tableau — Trino est l'autorité.
SQL Server Reporting Services (SSRS)¶
SSRS n'a pas de driver Trino natif. Utilisez le driver ODBC Trino comme documenté pour Power BI, puis sélectionnez ODBC comme type de source de données.
- Installer le driver ODBC Trino Starburst sur le serveur SSRS.
- Créer un System DSN
akko-trino(mêmes champs que la section Power BI). - Dans Report Builder / Visual Studio : Data Sources → Add → ODBC → choisir le DSN.
- Écrire du SQL standard — SSRS transmet la requête inchangée à Trino :
Les paramètres SSRS se lient à la couche ODBC comme d'habitude. L'auth
utilise les credentials du DSN ; pour des requêtes de compte de
service préférez un user Keycloak dédié type svc-reporting avec un
groupe projet-* scopé pour que OPA applique le bon filtre.
DBeaver (client SQL universel gratuit)¶
1. Ajouter le driver Trino¶
DBeaver embarque un driver Trino par défaut. Database → New Database Connection → Trino.
2. Connecter¶
| Champ | Valeur |
|---|---|
| Host | trino.<votre-domaine-akko> |
| Port | 443 |
| Database / catalog | iceberg |
| Authentication | Database Native |
| Username / Password | identifiants Keycloak |
| URL (après remplissage) | jdbc:trino://trino.<domain>:443/iceberg?SSL=true |
Test connection → Connected.
3. Astuces¶
- Historique de requêtes stocké localement — utile comme « bookmark » avant de promouvoir en dashboard Superset.
- Export CSV / Parquet / Excel fonctionne sans config.
Cheatsheet connection strings¶
| Client | Connection string |
|---|---|
| JDBC générique | jdbc:trino://trino.<domain>:443/iceberg?SSL=true&user=alice&password=*** |
| ODBC générique | Driver={Starburst Trino ODBC Driver};Host=trino.<domain>;Port=443;SSL=1;AuthenticationType=Password;UID=alice;PWD=*** |
Python trino-python-client |
trino.dbapi.connect(host="trino.<domain>", port=443, http_scheme="https", user="alice", auth=BasicAuthentication("alice", "***")) |
Dépannage¶
| Symptôme | Cause | Correctif |
|---|---|---|
SSLHandshakeException: PKIX path building failed |
Votre CA corporate n'est pas trustée | Importer le cert trino.<domain> dans le trust store JVM (keytool -import …) ou désactiver la vérif (dev uniquement) |
HTTP 401 Unauthorized |
Password ne correspond pas | Réinitialiser le password dans la console admin Keycloak |
Access Denied: Cannot access schema |
User Keycloak n'a pas de scope de groupe projet-* |
Ajouter l'user au bon groupe dans Keycloak — le sync OPA rafraîchit au prochain changement d'attribut |
Toutes les lignes affichent ***REDACTED*** |
Column mask OPA s'applique car le groupe de l'user ne le bypasse pas | Comportement attendu — les admins voient en clair, les autres groupes voient la valeur masquée selon group_policies.json |