IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

Cacher identifiants BDD


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut Cacher identifiants BDD
    Bonjour à tous,

    JE dois mettre en production, dans quelques semaines, une appli qui se connecte à une BDD.

    Bien évidemment, je dois masquer les identifiants de connexions pour plus de sécurité.

    J'ai une courte recherche sur les modules existants pouvant contribuer à cela (Keyring, passlib, cartography, python-decouple). JE suis sûr qu'il en existe d'autres....

    Auriez-vous un avis sur ces modules, et/ou des conseils pour d'autres?

    Je vous remercie d'avance.

    Bonne journée

  2. #2
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 31
    Points : 47
    Points
    47
    Par défaut
    Il est important de masquer les identifiants de connexion à la base de données pour des raisons de sécurité, car si ces informations sont compromises, cela peut avoir des conséquences graves.

    Voici mon avis sur les modules que vous avez mentionnés :

    Keyring : Il s'agit d'un module Python qui permet de stocker des informations sensibles, telles que des identifiants de connexion, de manière sécurisée sur le système d'exploitation. Keyring est une bonne option si vous voulez stocker les identifiants de connexion en dehors du code source de votre application.

    Passlib : Il s'agit d'un module Python qui fournit des outils de hachage et de chiffrement pour stocker et vérifier les mots de passe. Bien que cela puisse être utile pour protéger les mots de passe des utilisateurs, cela ne résout pas le problème de stockage des identifiants de connexion à la base de données.

    Cartography : Il s'agit d'un outil qui permet de configurer des variables d'environnement pour les applications. Bien que cela puisse aider à stocker les identifiants de connexion en dehors du code source de votre application, il ne fournit pas de fonctionnalités de sécurité supplémentaires.

    Python-decouple : Il s'agit d'un module qui permet de stocker des paramètres de configuration dans des fichiers externes. Cela peut être utile pour stocker les identifiants de connexion en dehors du code source de votre application. Python-decouple peut également être utilisé pour gérer d'autres paramètres de configuration de votre application.

    En dehors de ces modules, vous pouvez également envisager d'utiliser des variables d'environnement pour stocker les identifiants de connexion, ou de stocker les informations de connexion dans un fichier de configuration qui n'est pas inclus dans votre code source. Il est également important de prendre des mesures pour protéger la sécurité de votre application en général, telles que l'utilisation d'un pare-feu et la mise à jour régulière de votre application avec les dernières mises à jour de sécurité.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 205
    Points : 4 679
    Points
    4 679
    Par défaut
    bonjour

    Je dirais que ici le problème, c'est que nous dis pas ce qu'est ton appli ! pour un serveur, un fichier texte externe suffit largement, pour une appli cliente alors oui il faut passer par du chiffrement.

  4. #4
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Bonjour papajoker,

    En fait le questionnement avait surtout un caractère généraliste et ne s'inscrivait pas forcément dans le concret.

    Mais effectivement, j'ai un projet en cours de création d'un Dashboard avec Pandas/Polars combiné à Plotly et Dash (donc en web).

    Cette base récupère les données d'une base PostgreSQL sur un autre serveur.

    C'est un projet interne à mon entreprise et ne sera jamais destiné à l'externe. En théorie, je n'ai pas trop de risque de sécurité. Mais je me suis posé la question de savoir comment "protéger/sécuriser" les identifiants à d'autres serveurs (ici, une BDD) si par hasard un petit malin se prenait d'aller voir mon code.

    J'ai fait quelques recherche sur le net, et j'ai trouvé plein de lib. Donc du coup, je me suis demandé quels étaient les inconvénients et les avantages de chacunes. Mais c'est une tache relativement compliquée. Je me suis donc tourné vers le forum, histoire de voir si des avis pourraient m'être donnés.

    Je ne sais pas si mes explications éclairent mieux la problématique.

    Bonne journée à vous

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par FadeToBlack Voir le message
    J'ai fait quelques recherche sur le net, et j'ai trouvé plein de lib. Donc du coup, je me suis demandé quels étaient les inconvénients et les avantages de chacunes. Mais c'est une tache relativement compliquée. Je me suis donc tourné vers le forum, histoire de voir si des avis pourraient m'être donnés.
    Il serait préférable de vous tourner vers Mr Sécurité de la boite et/ou l'administrateur des bases de données: ce sont eux qui définissent les exigences et valident les solutions à mettre en œuvre.

    - W

  6. #6
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Bonsoir,

    Pour ce qui est de notre SSI, la seule chose qui m'ait demandé c'est que les identifiants de BDD ne soit pas visible dans le code. Que les mots de passe en base soient chiffrés. Et pour les bases un peu sensible, qu'elles soient entièrement chiffrés.
    Mais pour ce qui est des outils, on fait comme on veut, surtout que nous n'avons pas d'admin BDD. Et c'est la première appli que je fais en python qui sera connectée à une BDD.

    Sinon, soit elles n'ont pas de BDD soit c'est sous symfony....

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par FadeToBlack Voir le message
    Pour ce qui est de notre SSI, la seule chose qui m'ait demandé c'est que les identifiants de BDD ne soit pas visible dans le code. Que les mots de passe en base soient chiffrés. Et pour les bases un peu sensible, qu'elles soient entièrement chiffrés.
    A priori, le seul qui semble faire le job dans la liste est keyring.
    Reste à trouver des qui l'ont mis en place/utilisé "en vrai" pour avoir un avis.

    Ceci dit, je ne comprends pas le besoin: les informations de connexion à la base de donnée sont dans un fichier de configuration (pas dans le code) propriété d'un utilisateur. On peut donc en interdire l'accès à tout lambda non privilégié et auditer les accès des comptes privilégiés.

    Côté BDD, on peut aussi donner un accès à cet utilisateur que lorsqu'il se connecte depuis une adresse IP "interne".
    note: si on utilise un truc comme keyring et qu'on se connecte au compte utilisateur, on pourra accéder au fichier ou récupérer les informations de connexion en codant un peu => on peut aussi empêcher l'utilisateur de se connecter en session interactive.

    - W

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 877
    Points
    1 877
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ceci dit, je ne comprends pas le besoin: les informations de connexion à la base de donnée sont dans un fichier de configuration (pas dans le code) propriété d'un utilisateur. On peut donc en interdire l'accès à tout lambda non privilégié et auditer les accès des comptes privilégiés.
    Moi aussi, je cherche à comprendre le besoin et le risque qu'on cherche à éviter, qui n'est pas clairement exprimé.

    J'imagine que dans la tête du SSI, le but est d'éviter qu'un fichier de config sensible soit committé accidentellement dans un repo, qui peut être ouvert à d'autres personnes que les développeurs, voire à des entités externes à la société...
    Une technique possible serait de passer par des variables d'environnement, et même containeriser l'application avec Docker par exemple. Il est possible de lancer un container avec une ligne de commande incluant ces variables d'environnement. Un exemple ici. Il y a aussi Docker secrets mais pour les swarm, pas les containers stand-alone à ma connaissance.

    Il est vrai que si l'application souffre d'une vulnérabilité (injection SQL notamment), il peut être possible sous certaines conditions pour un attaquant d'uploader un webshell et fouiller dans les fichiers. Dans ce cas de figure, trouver les credentials et uploader un script ad hoc permettrait effectivement d'accéder à la DB et d'exfiltrer des données.
    Pour bien faire les choses, il y a d'autres mesures à mettre en place, par exemple autoriser les connexions à la DB seulement au départ d'une IP bien précise et pas de l'extérieur, utiliser un compte non privilégié pour la DB c'est à dire autre que root ou sa comme on le voit trop souvent.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    J'imagine que dans la tête du SSI, le but est d'éviter qu'un fichier de config sensible soit committé accidentellement dans un repo, qui peut être ouvert à d'autres personnes que les développeurs, voire à des entités externes à la société...
    On commite depuis des environnements de développement, on déploie des applications sur des systèmes de production et ces 2 environnements n'ont pas les mêmes exigences/règles de sécurité.

    - W

Discussions similaires

  1. Réponses: 14
    Dernier message: 16/10/2009, 16h13
  2. [MySQL] Récupérer l'identifiant de l'utilisateur dans la BDD
    Par asus02 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/02/2008, 00h25
  3. BdD pour identification, cherche à cacher les mdp dans la base
    Par maverick56 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 18/06/2007, 14h09
  4. Cacher les procédures sytème d'une BDD
    Par jcfarkas dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/01/2007, 02h09
  5. [MySQL] Cacher le mdp pour acceder a sa bdd ?
    Par BK dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/09/2005, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo