Connexion d'un entrepôt Postgres
Ce guide vous accompagne dans la connexion d’une base PostgreSQL à Saiku Cloud, de bout en bout. Cinq minutes si votre entrepôt est déjà public ; dix si vous devez créer un rôle en lecture seule.
Impact niveau : chaque niveau Saiku Cloud (Starter, Team, Business) prend en charge BYOC Postgres.
Ce dont vous aurez besoin
- Une instance PostgreSQL 12+ joignable depuis une adresse IPv4 publique. Les clients Saiku Cloud hébergé sur Starter/Team/Business en ont besoin — les clients Enterprise utilisant un peering VPC privé (voir PrivateLink vers le Postgres client) obtiennent à la place une joignabilité réseau privé.
- Un accès admin à votre entrepôt pour créer un rôle en lecture seule (ou les identifiants d’un rôle existant en lecture seule).
- Cinq minutes.
Étape 1 — Autoriser notre IP de sortie
Les requêtes de Saiku Cloud vers votre entrepôt proviennent toutes d’une unique IP statique :
87.99.153.244Ajoutez ceci au pare-feu / security group / allowlist réseau de votre entrepôt avant de tester la connexion. L’assistant de connexion affichera la même IP au moment du test, donc vous pourrez la copier à nouveau depuis là — mais le faire à l’avance évite l’erreur HOST_UNREACHABLE que vous verriez sinon au premier test.
Emplacements d’allowlist courants :
- AWS RDS : règle entrante du security group VPC → port 5432 → source
87.99.153.244/32. - Google Cloud SQL : Connectivity → Authorized networks → ajoutez
87.99.153.244/32. - Azure Postgres : Networking → Firewall rules → ajoutez une règle autorisant
87.99.153.244à87.99.153.244. - Auto-hébergé : entrée hôte de
pg_hba.conf, plus quel que soit le pare-feu en façade (UFW, iptables, edge du fournisseur cloud).
L’IP est stable — elle survit aux redémarrages et reconstructions d’image. Nous nous engageons à un préavis d’au moins 30 jours avant toute rotation. Politique complète : voir notre engagement de stabilité de l’IP de sortie.
Étape 2 — Créer un rôle en lecture seule dans Postgres
Saiku Cloud ne lit que votre entrepôt — jamais d’écriture, jamais d’altération de schemas, jamais de création d’objets. La forme à privilège minimum est un rôle dédié en lecture seule :
-- As a Postgres superuser (or anyone with CREATEROLE):CREATE ROLE saiku_read LOGIN PASSWORD 'pick-something-strong-here';
-- Grant access to the schemas + tables you want Saiku to see.-- Adjust 'public' to whichever schema(s) your data lives in.GRANT USAGE ON SCHEMA public TO saiku_read;GRANT SELECT ON ALL TABLES IN SCHEMA public TO saiku_read;GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO saiku_read;
-- Future tables created in this schema should also be readable.ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO saiku_read;Si vos données sont réparties sur plusieurs schémas, répétez les blocs GRANT USAGE + GRANT SELECT pour chacun.
Étape 3 — Construire l’URL JDBC
La forme :
jdbc:postgresql://<host>:<port>/<database>?sslmode=requireExemples concrets :
- AWS RDS :
jdbc:postgresql://mydb.abc123.us-east-1.rds.amazonaws.com:5432/sales?sslmode=require - Google Cloud SQL :
jdbc:postgresql://1.2.3.4:5432/sales?sslmode=require(utilisez l’IP publique de la console Cloud SQL) - Azure Postgres :
jdbc:postgresql://mydb.postgres.database.azure.com:5432/sales?sslmode=require - Auto-hébergé :
jdbc:postgresql://db.yourcompany.com:5432/sales?sslmode=require
Paramètres clés :
sslmode=requireest fortement recommandé pour tout entrepôt joignable via Internet public. La plupart des services Postgres managés imposent SSL de toute façon ;requirefait que le client rejette le repli en texte clair.sslmode=verify-fullest plus strict — il vérifie également que le hostname du certificat serveur correspond. Utilisez-le si la racine CA de votre entrepôt est dans notre trust store (la plupart des services managés utilisent Let’s Encrypt ou une CA bien connue, donc cela fonctionne d’office).- Évitez
?currentSchema=fooet ajustements similaires du pilote sauf si vous avez une raison spécifique ; Saiku interroge avec des référencesschema.tableentièrement qualifiées partout.
Étape 4 — Connectez-vous via l’assistant Saiku Cloud
-
Connectez-vous à
https://cloud.saiku.bi/. -
Naviguez vers Connexions dans la barre latérale gauche.
-
Sous 1. Choisir le type d’entrepôt, cliquez sur la tuile Postgres.
-
Renseignez :
- URL JDBC — l’URL de l’étape 3.
- Nom d’utilisateur —
saiku_read(ou le nom que vous avez donné au rôle à l’étape 2). - Mot de passe — le mot de passe de l’étape 2.
-
Cliquez sur Tester la connexion.
Si tout est branché correctement, vous verrez une bannière de résultat verte : ✓ Connection successful plus la version Postgres détectée. Passez à l’étape 5.
Si vous voyez une bannière de résultat rouge, voir Dépannage ci-dessous pour la matrice de triage des modes de défaillance.
Étape 5 — Enregistrer la connexion
Après un test réussi, l’assistant affiche une section 3. Enregistrer la connexion. Renseignez :
- Mot de passe (ressaisir pour enregistrer) — le même mot de passe que pour le test. Nous ne stockons pas le mot de passe du formulaire de test pour éviter de faire transiter un identifiant via l’état de la page.
- Libellé — un nom lisible comme
Entrepôt de productionouAnalytique marketing. Affiché dans la liste des connexions + le concepteur de cubes.
Cliquez sur Enregistrer la connexion. Nous vous redirigerons vers le schema designer, où vous pourrez soit proposer un cube via le flux d’inférence IA, soit téléverser un XML de schema Mondrian.
Dépannage
✗ Connection failed (HOST_UNREACHABLE) ou (TIMEOUT)
Nous n’avons pas pu atteindre l’hôte sur le port spécifié. Causes les plus courantes :
- Pare-feu / allowlist — l’étape 1 n’a pas été faite ou ne l’a pas été pour la bonne IP. Confirmez que
87.99.153.244/32est dans l’allowlist de votre entrepôt + appliquée (certains pare-feu nécessitent un redémarrage / réapplication). - DNS — le hostname dans l’URL JDBC ne résout pas, ou résout vers une IP privée. Vérifiez depuis votre laptop :
nslookup <host>. Nous refusons de nous connecter aux adresses RFC1918 / loopback / link-local pour des raisons de protection SSRF —HOST_DENIED(et nonHOST_UNREACHABLE) est la surface dans ce cas. - Mauvais port — Postgres est par défaut sur 5432 mais les services managés utilisent occasionnellement un port personnalisé (Heroku Postgres utilise 5432, mais dans un tunnel ; certains déploiements on-prem utilisent 5433+).
✗ Connection failed (AUTH_FAILED)
Le nom d’utilisateur ou le mot de passe est incorrect. L’assistant ne distingue intentionnellement pas « mauvais utilisateur » de « mauvais mot de passe » — c’est une défense contre les attaques de credential-stuffing.
- Vérifiez le nom d’utilisateur — les noms de rôle Postgres sont sensibles à la casse (
saiku_read≠Saiku_Read). - Essayez de vous connecter depuis votre laptop avec
psql "<URL JDBC sans le préfixe jdbc:>"pour confirmer que les identifiants fonctionnent hors de Saiku. - Si vous avez réinitialisé le mot de passe récemment, assurez-vous d’avoir commit le changement dans Postgres (
ALTER ROLE saiku_read PASSWORD '...';) et reconnecté tout pooler qui pourrait mettre en cache l’ancien hash.
✗ Connection failed (DATABASE_NOT_FOUND)
L’hôte accepte vos identifiants mais le nom de base de données dans l’URL JDBC n’existe pas. Vérifiez le nom de base — Postgres en a généralement à la fois postgres et votre base applicative ; vous voulez la seconde.
-- From psql, as any user with login:\l -- list databases✗ Connection failed (DIALECT_UNSUPPORTED)
L’URL ne commence pas par jdbc:postgresql:. Si vous avez collé une URL jdbc:postgres: (sans -ql), le résolveur de dialecte ne reconnaît pas — le pilote JDBC Postgres exige le jeton postgresql. Utilisez telles quelles les formes d’URL de l’étape 3.
Toute autre chose
Faites une capture d’écran de l’assistant avec la bannière de résultat rouge visible (en particulier la ligne Kind: ...) et envoyez-la à support@saiku.bi. Le champ Kind nous dit dans quelle classe d’échec nous sommes ; l’indice Try this en dessous donne notre meilleure hypothèse de correction.
Enterprise : réseau privé {#enterprise-private-network}
Pour les clients Enterprise utilisant une configuration de réseau privé, la règle d’IP de sortie ci-dessus est remplacée par un peering VPC ou PrivateLink vers votre instance Postgres. Le flux de l’assistant de connexion est par ailleurs identique — collez l’URL JDBC privée, testez, enregistrez. Contactez votre équipe de compte pour provisionner le peering.
Essayer avec FoodMart
Vous voulez tester Saiku Cloud avec ce dialecte avant de connecter vos propres données ? Téléchargez le jeu de données d’exemple FoodMart packagé pour Postgres :