[PYTHON] [Pour les débutants] Lire les informations d'authentification DB à partir des variables d'environnement

introduction

Ceci est le premier message. Puisque c'est la fin de l'année, quand je pense à ce que j'ai laissé derrière moi cette année, je pense que [Publier sur Qiita] m'est venu à l'esprit, alors je vais l'écrire comme mon propre mémo et sortie. Cette fois, je vais sortir ce que j'ai appris lors du développement d'applications Web avec le framework Python Django, mais l'idée est la même pour d'autres langages et d'autres frameworks, alors essayez-le. Cette fois, j'écrirai sur la façon d'améliorer la confidentialité des informations d'authentification en définissant la valeur des informations d'authentification dans la variable d'environnement et en n'écrivant pas les informations d'authentification directement dans le code source.

Qu'est-ce qui me rend heureux lorsque je lis des informations d'authentification à partir de variables d'environnement?

Informations d'authentification solides → Étant donné que les informations d'authentification sont intégrées dans le code, il est possible que les informations d'authentification soient divulguées telles quelles lors de leur partage avec d'autres. Il existe également des cas où une instance AWS a été piratée et une grande somme d'argent a été facturée. .. Une histoire sur un débutant qui a fait une erreur sur AWS et a été abusé et facturé 6 000 $, presque en pleurant.

Donc ,,, L'objectif principal de cet article est de ** maintenir la sécurité ** sans écrire solidement les informations d'authentification sur le code source en lisant des variables d'environnement dépendant du système d'exploitation!

procédure

--Définir les variables d'environnement

Définir les variables d'environnement

Il existe deux méthodes de réglage -S'enregistrer depuis l'écran [Modifier les variables d'environnement système] ・ Inscription par entrée de commande depuis le terminal

Cette fois, je présenterai la deuxième méthode de paramétrage depuis Terminal. Utilisez la commande ** SETX ** pour définir les variables d'environnement qui peuvent être utilisées en permanence à partir du terminal. Maintenez la touche Ctrl + Maj enfoncée et exécutez l'invite de commande en mode administrateur.

terminal


Valeur du nom de la variable d'environnement SETX#Variables d'environnement utilisateur
SETX /Valeur du nom de la variable d'environnement M#Variables d'environnement système

** Veuillez noter que vous ne pouvez pas lire la variable d'environnement nouvellement définie tant que vous n'avez pas fermé l'EDI une fois après avoir défini la variable d'environnement! ** ← J'étais accro à ça. ..

Lire les informations d'identification à partir des variables d'environnement

Vous pouvez obtenir la même valeur avec l'une des notations suivantes, Lors de l'appel d'une variable d'environnement qui n'existe pas, la valeur par défaut "Aucun" est renvoyée pour la première et une erreur est renvoyée pour la seconde.

test.py


import os
os.environ.get('Nom de la variable d'environnement') # 'Nom de la variable d'environnement'Obtenir des variables d'environnement pour
os.environ['Nom de la variable d'environnement']   # 'Nom de la variable d'environnement'Obtenir des variables d'environnement pour

C'est le cas où les informations d'authentification sont solides

setting.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sample', #Nom de la base de données créée
        'USER': 'root', #Nom d'utilisateur connexion,
     'PASSWORD':'root', #Nom du mot de passe de connexion,
        'HOST': '',
        'PORT': '', 
    }
}

En réécrivant le code source ci-dessus pour le lire à partir des variables d'environnement comme indiqué ci-dessous Je cache mes informations d'identification.

setting.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sample', #Nom de la base de données créée
        'USER': os.environ.get('DB_USERNAME'), #Nom d'utilisateur connexion
        'PASSWORD': os.environ.get('DB_PASSWORD'), #Mot de passe
        'HOST': os.environ.get('DB_HOST'),
        'PORT': os.environ.get('DB_PORT'),
    }
}

en conclusion

Étant donné que le premier message et les connaissances sont superficiels, je vous serais reconnaissant de bien vouloir me faire savoir s'il y a des erreurs d'écriture. Merci d'avoir lu jusqu'au bout.

Recommended Posts

[Pour les débutants] Lire les informations d'authentification DB à partir des variables d'environnement
Construction de l'environnement Python3 (pour les débutants)
[Pour les débutants] Django -Construction d'environnement de développement-
Lire les variables d'environnement système avec python-partie 1
Lire les variables d'environnement système avec python-partie 2
Comment lire les variables d'environnement à partir d'un fichier .env avec PyCharm (pour Mac)
Environnement de programmation pour les débutants réalisé avec Windows
Les débutants lisent "Introduction à TensorFlow 2.0 pour les experts"
[Python] Lire des images avec OpenCV (pour les débutants)
Rechercher des informations sur Pokemon Haunting sur Twitter
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
Pour les débutants à créer un environnement Anaconda. (Note)
Mémo n ° 3 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 1 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 2 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 7 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 6 pour les débutants Python à lire "Explication détaillée de la grammaire Python"
~ Conseils pour les débutants de Python donnés avec amour par Pythonista ② ~
Mémo n ° 5 que les débutants Python lisent "Explication détaillée de la grammaire Python"
[Pratique pour les débutants] Lire ligne par ligne "Prédiction des prix des maisons" de kaggle (5ème: Dummy of categorical variables)