Forum général.général Comment sécuriser une liaison Power bi => database dans un cloud privé

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
3
2
jan.
2023

Bonjour et bonne année à tous.

Je pose ici ma question même s'il s'agit de Power BI, vu que la problématique est plus générale.

J'ai le problème suivant :

Nous avons un cloud privé composé de deux pfsense, de trois proxmox, et un ensemble de VM qui héberges une stack k8s. A l'intérieur de la stack k8s se trouvent divers bases de données postgresql.

L'ensemble des applications web se trouvent dans cette stack et l'ensemble est accessible par vpn.

J'ai eu une demande de la boite, c'est de pouvoir accéder aux db par Power BI desktop, qui est une grosse bouse un logiciel de BI (sous forme de client lourd windows).
Ce fameux logiciel a besoin d'un accès direct à la db.

La solution temporaire que j'ai trouvé est de créer une vm windows dans les proxmox et de faire des nodeports dans le k8s pour y accéder et que les utilisateurs (au nombre de deux) se connectent à la vm en windows remote.

Cette solution me semble complètement pourrie:
- j'ai une machine windows à administrer et je n'ai pas touché à un windows depuis xp.
- les db sont en ssl : Power BI refuse de se connecter avec du ssl autosigné : il faut ajouter un odbc système avec login et password => n'importe quel logiciel peut se co en utilisant cet odbc
- j'ai ouvert les db dans notre réseau.
- j'ai des utilisateurs qui doivent avoir accès à une vm qui a accès au réseau
- le power bi consomme une quantité de ram exceptionnelle (je suis à plus de 50 gigas et vu qu'il y a de plus en plus d'analyse je vais devoir augmenter)

J'ai configuré le réseau pour limiter au max les dégats, mais bon j'aimerais trouvé une solution.

J'ai essayé de voir comment mieux faire et j'ai cherché un peu partout et j'ai rien trouvé du tout sur le sujet.

Pourtant la problématique me semble assez courante : des utilisateurs habilités dans une entreprise veulent utiliser un logiciel d'exploration de donnée (Power BI apparement est assez utilisé dans ce milieu) et pour cela doivent pouvoir se connecter directement aux db.

Question comment faire ?

J'ai cherché s'il y avait une option entreprise avec un serveur à installer, avec genre le power bi desktop se connecte au serveur qui lui se connecte aux db mais apparement ça n'existe pas.

J'ai déjà essayé de trouver des alternatives style superset, grafana mais j'ai essuyé refus sur refus.

J'ai pensé à faire des extractions csv des tables voulues, de les envoyer dans nfs / partage windows / ftp ou autre, mais on a énormément de table, à chaque fois c'est du dev, du déploiement etc

Avez vous une idée ?

  • # OData ?

    Posté par  . Évalué à 2.

    C'est un format standard qui permet de mettre en place une API REST requêtable "à la" SQL. Comme ça tu peux mettre un proxy, https, l'authentification que tu veux. C'est géré par PowerBI.

    On a mis ça en place avec la librairie Java Apache Olingo, il semblerait que ça fasse le job même si Microsoft, pourtant à l'origine du format, ne l'ont pas implémenté entièrement.

    N'hésites à me dire si tu veux en savoir plus.

    • [^] # Re: OData ?

      Posté par  . Évalué à 1.

      Merci pour cette piste, je ne connaissais pas du tout. on dirait un genre de graphql.

      Si j'ai bien compris la doc, il faudrait que j'implémente pour chaque table (ou view) un webservice.

      C'est assez considérable comme travail.

      Je vois qu'il existe des outils sur la page https://www.odata.org/ecosystem/ et j'ai regardé du coté de api server. Mais ajouter en plus une solution (qui je suppose va couter un bras) proprio, qui n'a pas l'air k8s ready, ne m'emballe pas du tout.

      Du coup si je résume : soit je développe des extractions de données (csv ou autres) soit je développe des webservices en fonction des besoins, soit j'installe un gros machin.

      Est ce que tu aurais des retours sur une solution libre pour faire des endpoints web avec le minimum de dev et sinon est ce que c'était complexe à mettre en place la partie apache olingo (nous n'avons pas de dev java, que des dev python / rust)

      En te remerciant par avance

      • [^] # Re: OData ?

        Posté par  . Évalué à 1. Dernière modification le 03 janvier 2023 à 21:58.

        Oui OData n'est pas très connu, j'imagine que c'est du à son origine Microsoftienne, ils ont aussi eu la mauvaise idée de pondre une v4 qui casse complètement la v2, ça du baisser le moral de beaucoup qui avaient adopté la techno vis-à-vis du boulot de migration.

        Toujours est-il que la techno est présente et fonctionne sur la suite Office (trouvable dans Excel et PowerQuery), le projet olingo quand a lui suit son petit bonhomme de chemin et s'améliore tranquillement.

        Je ne connais pas très bien graphql, mais OData, il faut vraiment le comparer à du SQL posé sur une API Rest, en gros en théorie, tu es capable de requêter le service sans aucune documentation. Pour mettre à dispo une base de donnée et ces multiples tables, tu n'auras qu'un seul webservice (je veux dire instance java) à mettre en place. Chaque table seront dispo sur un répertoire du même service (je ne sais pas si je suis clair).

        Pour implémenter un service Odata, l'idéal, (j'imagine, mais peut-être que je me plante, on ne sait jamais avec Microsoft), c'est de faire ça en ".net", il y a possibilité de faire tourner un service avec mono, j'ai juste codé un client pour nos clients et ça fonctionnait sur ma machine sous Linux.

        Sinon si tu es tenté par Olingo, je ne te cache pas que ce n'est pas totalement du "out of the box", mais ton use case semble simple, donc ça me semble accessible à un développeur rust sans soucis (je ne connais ce langage que de nom, mais j'imagine que c'est aussi compliqué que du c++). Peut-être qu'en utilisant le processeur JPA fait par SAP (https://github.com/SAP/olingo-jpa-processor-v4), tu peux arriver à faire quelque chose assez rapidement.

        Avant de te lancer, faudrait que tu valides le fonctionnement sur le principe dans Power BI avec le service de test (qui tourne sous olingo il me semble): https://services.odata.org/TripPinRESTierService ça se fait rapidement pour savoir si c'est une piste qui vaut la peine d'être exploré.

        • [^] # Re: OData ?

          Posté par  . Évalué à 2.

          merci je regarde tout ça

  • # vpn site à site

    Posté par  . Évalué à 5.

    VPN SITE à SITE, generalement IPSEC mais wireguard peut aussi le faire

    tes utilisateurs sur site, on une passerelle/parefeu sur le site
    cette passerelle active un VPN vers le datacenter qui heberge les bases de données

    tes utilisateurs peuvent donc utiliser powerBI desktop directement sur les serveurs de base de données

    VPN client to Site

    tes utilisateurs sont nomades, ils se connectent au serveur VPN du datacenter, et utilisent leur powerBI desktop comme depuis le bureau

    VPN client to office to site

    tes utilisateurs nomades se connectent au bureau en VPN, le bureau se connecte au datacenter
    les utilisateurs utilisent alors leurs powerBI desktop comme d'habitude

    • [^] # Re: vpn site à site

      Posté par  . Évalué à 2.

      Disons que c'est l'idée même que les utilisateurs se co directement à la bdd qui me dérange.

      C'est pour ça qu'on est parti sur trouver une solution qui permettrait de mettre à dispo les données mais avec un bon contrôle applicatif :
      - Des webservices odata : de l'https, la bdd reste enfermé dans le cluster k8s, les networks policies sont facile à conserver, controle des utilisateurs, le firewall / haproxy / outil de ban continue de fonctionner tranquillment. Au niveau des webservices, on peut implementer les controles qu'on veut. Défaut : beaucoup de dev

      • Une copie externe de la bdd dans sa propre vm : à partir d'une sauvegarde on restaure une bdd automatiquement dans la vm. On peut séparer la partie powerbi et cette vm du réseau sans changer quoique ce soit. Avantage: très facile à faire, pas trop de dev. Désavantage: les utilisateurs ont accès à tous, dont les données perso, il faudrait faire des users avec des droits particuliers sur les colonnes (je ne sais pas si c'est possible) etc. De plus consommation de place et de ressources

      • Une extractions quotidienne des données : on extrait les données voulues sous format csv, dépot sur un partage, les users en font ce qu'ils veulent. On controle ce qu'on envoie, on peut filtrer, structurer les données, ne pas envoyer de donnée perso ou sensible etc. C'est du dev (facile), de l'espace disque (en extraction différentielle ça ne devrait pas prendre trop de place, mais des que les utilisateurs ont des besoins il faut redev, et lorsqu'il y a des changements de structure dans la bdd c'est un programme en plus à mettre à jour

      Pour l'instant on cherche encore des solutions alternatives (mais on est pour l'instant partie soit sur du csv soit de l'odata)

      Merci pour ton aide

      • [^] # Re: vpn site à site

        Posté par  . Évalué à 3.

        le mixte de tes deux solutions

        • un export filtré de tes datas, dans une base de données maitrisées, derriere odata pour les controles d'accés ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.