Les développeurs Python traitent souvent des données qu'ils ne veulent pas que quiconque voie, comme les clés API, les secrets API, les noms de bases de données, etc.
Les programmeurs stockent ces secrets dans des variables d'environnement. Dans cet article, vous apprendrez tout ce que vous devez savoir sur l'utilisation des variables d'environnement en Python. Nous vous montrerons comment définir les variables d'environnement Python, comment les obtenir et les différentes manières de protéger tous vos secrets. Nous terminerons par un exemple concret de la façon dont nous les utilisons ici chez Vonage.
Utilisez les liens ci-dessous pour avancer dans l'article :
Les variables d'environnement (parfois appelées « vars env ») sont des variables que vous stockez en dehors de votre programme et qui peuvent affecter son fonctionnement. Par exemple, vous pouvez définir des variables d'environnement contenant la clé et le secret d'une API. Votre programme peut alors utiliser ces variables lorsqu'il se connecte à l'API.
Stocker vos secrets dans votre environnement au lieu de votre code source présente quelques avantages :
Essentiellement, les variables d'environnement vous permettent de modifier le comportement de votre programme sans changer le programme lui-même.
Vous pouvez stocker des variables d'environnement dans votre système d'exploitation, mais il existe d'autres façons de les utiliser que nous découvrirons prochainement.
Pour suivre ce tutoriel, vous devez avoir Python installé sur votre machine. Vous pouvez installer Python en le téléchargeant depuis le site officiel de Python.
Vous obtenez et définissez des variables d'environnement en Python à l'aide du module OS intégré.
Vous pouvez afficher toutes les variables d'environnement de votre programme en enregistrant le code suivant dans un fichier Python, puis en exécutant ce programme Python :
Votre interpréteur Python doit imprimer toutes les variables d'environnement de votre système d'exploitation lors de l'exécution de ce code. Vous pouvez accéder aux différentes variables d'environnement dans os.environ comme un dictionnaire Python. Voici deux façons d'obtenir des variables d'environnement avec Python :
Les deux dernières lignes de votre code Python ci-dessus font la même chose : les deux obtiennent la variable d'environnement USER de votre système d'exploitation. Cependant, lorsque vous utilisez la première méthode, Python lève une exception s'il ne trouve pas la variable.
Une bonne pratique consiste à utiliser os.environ['MY_ENVIRONMENT_VARIABLE'] si la variable d'environnement est requise pour l'exécution de votre application Python et os.environ.get('MY_ENVIRONMENT_VARIABLE') si elle est facultative.
Pour définir des variables d'environnement en Python, vous pouvez les ajouter à l'objet os.environ comme vous le feriez avec un dictionnaire. Cependant, seules les chaînes sont autorisées, car elles sont transmises directement au shell dans lequel votre interpréteur s'exécute.
Pour mettre à jour une variable d'environnement, remplacez-la simplement exactement de la même manière :
Il existe différentes raisons pour lesquelles vous souhaiterez peut-être stocker des variables d'environnement, il existe donc également différentes manières de les stocker. Parfois, vous avez simplement besoin de définir quelque chose sur votre machine locale, alors que dans d'autres cas, vous devrez peut-être exécuter votre application en production - ces cas d'utilisation nécessitent des approches différentes !
Ci-dessous, nous allons vous montrer cinq façons de stocker des variables d'environnement pour Python :
Parfois, vous ne souhaitez pas créer une variable d'environnement via Python si vous souhaitez simplement définir quelque chose rapidement. Heureusement, cela peut être fait via la ligne de commande. Les exemples que je vais donner ici fonctionnent pour les systèmes de type Unix (Mac, Linux, etc.), mais si vous utilisez Windows, vous pouvez apprendre à obtenir et définir des variables d'environnement dans ce didacticiel.
Dans l'exemple précédent, USER était une variable d'environnement définie par votre système d'exploitation, représentant qui utilise votre ordinateur. Bien que votre système d'exploitation crée cette variable automatiquement, vous pouvez également créer vos propres variables d'environnement.
Vous pouvez voir toutes les variables d'environnement à partir de votre ligne de commande en ouvrant une ligne de commande et en tapant ce qui suit (sur un système de type Unix) :
exporter
Cela vous donnera une liste de toutes les variables d'environnement auxquelles votre shell de ligne de commande a accès.
Voici comment créer une variable d'environnement sur votre ligne de commande :
export VONAGE_API=votre_api
Cela crée une variable appelée VONAGE_API et définit sa valeur sur your_api. Vous pouvez imprimer la valeur de n’importe quelle variable comme ceci :
écho $VONAGE_API
Lorsque vous exécutez le code ci-dessus, vous verrez your_api comme sortie.
Lorsque vous créez une nouvelle variable d'environnement à l'aide de votre terminal/ligne de commande, elle n'existe que pour cette session. Lorsque vous fermez votre terminal, la variable d'environnement n'existe plus. Souvent, lorsque vous programmez, vous souhaitez que vos variables d'environnement persistent afin qu'elles puissent être utilisées à chaque fois que vous exécutez votre code. Une façon d'y parvenir est de les stocker dans un fichier : par exemple, un fichier .env.
Créons un exemple de projet pour montrer comment utiliser un fichier .env pour stocker des variables d'environnement.
Tout d'abord, utilisez votre terminal pour créer un nouveau dossier pour ce tutoriel, accédez-y et créez un fichier .env à l'intérieur :
mkdir env_variables_tutorial cd env_variables_tutorial touch .env
Ajoutez cette ligne à votre fichier .env :
VONAGE_API=votre_api
python3 -m venv venv . ./venv/bin/activate
Maintenant, nous sommes dans un environnement virtuel Python, nous pouvons installer le package dont nous avons besoin.
pip install python-dotenv
Maintenant, nous pouvons utiliser le module dotenv de ce package pour charger les variables d'environnement du fichier .env dans l'environnement auquel Python peut accéder avec le module os. Créez un fichier Python avec le contenu suivant :
La fonction load_dotenv amène les variables d'environnement du fichier .env dans os.environ, qui peuvent ensuite être utilisées comme n'importe quelle autre variable d'environnement définie par votre système d'exploitation.
Lorsque vous créez un logiciel pour la production, vous ne l'exécuterez probablement pas depuis votre ordinateur. Au lieu de cela, vous exécuterez probablement votre code sur un serveur.
Cela signifie que vous devez savoir comment définir et obtenir des variables d'environnement partout où vous exécutez votre code en production.
Voici une liste de fournisseurs de cloud et où vous pouvez obtenir plus d'informations sur la gestion des variables d'environnement en les utilisant :
Si vous utilisez des systèmes CI/CD basés sur le cloud tels que GitHub Actions, CircleCI, Travis ou Jenkins, vous pouvez également stocker des variables d'environnement dans leurs systèmes.
Si vous utilisez GitHub pour votre projet, vous pouvez stocker des variables d'environnement dans les paramètres de votre dépôt en accédant à l'onglet "Paramètres" et en définissant les clés API, etc., dans le paramètre "Secrets et variables" sous "Sécurité". ".
Ici, vous pouvez créer un nouveau secret de référentiel en cliquant sur l'option et en définissant les valeurs. Ceci sera désormais disponible dans vos exécutions GitHub Actions.
Il existe de nombreuses informations sur la configuration des variables d'environnement avec GitHub Actions, ainsi que CircleCI, Travis et Jenkins, ainsi que des informations pour d'autres fournisseurs.
Le stockage de vos secrets dans un fichier .env conserve vos variables d'environnement mais pose quelques problèmes.
Par exemple, disons que vous faites partie d'une équipe de dix personnes. Tout le monde suit ses secrets dans des fichiers .env, et l'un des secrets change (disons que vous obtenez une nouvelle clé API). Dans ce cas, dix personnes doivent toutes mettre à jour leur fichier .env, ce qui n'est pas très efficace.
Ou, que se passe-t-il si vous décidez de passer de Heroku à AWS ? Dans ce cas, vous devrez apprendre à gérer les secrets sur une nouvelle plateforme, ce qui nécessite un travail supplémentaire.
Pour résoudre ces problèmes, certains programmeurs utilisent un gestionnaire de secrets universel comme Doppler. Un gestionnaire de secrets universel vous permet de stocker vos secrets au même endroit, afin que tous les membres de votre équipe puissent y accéder.
Avec un gestionnaire de secrets universel, vos secrets sont indépendants de votre machine locale ou d'un fournisseur de cloud, vous pouvez donc les emporter avec vous, peu importe où vous exécutez votre code.
Parfois, si vous utilisez un exemple de projet d'API externe ou des exemples d'extraits de code, des outils sont fournis par le propriétaire/mainteneur pour faciliter son utilisation. Souvent, vous devrez utiliser des variables d’environnement pour configurer les outils de manière optimale.
Chez Vonage, nous utilisons des variables d'environnement dans nos exemples de code Python pour envoyer des SMS, passer des appels téléphoniques, envoyer des codes de vérification, vérifier les scores de fraude et bien plus encore.
Disons que vous souhaitez utiliser l'API Number Insight de Vonage pour obtenir des informations sur certains numéros de téléphone. Dans ce cas, vous souhaiterez peut-être utiliser un exemple de code comme celui-ci pour que les choses fonctionnent rapidement en Python.
Pour utiliser cet exemple de code, créez d'abord un compte Vonage (ne vous inquiétez pas, c'est gratuit !) pour obtenir une clé API et un secret pour authentifier vos appels API.
Ensuite, clonez le dépôt sur https://github.com/Vonage/vonage-python-code-snippets/. Une fois cela fait, créez un nouvel environnement virtuel Python et installez les dépendances requises avec
Vous devriez voir des informations sur le numéro de téléphone que vous avez saisi, ce qui signifie que vous avez utilisé l'API Number Insight de Vonage pour rechercher le numéro de téléphone à partir de vos variables d'environnement, sans avoir besoin de modifier le fichier Python lui-même ! C'est un avantage majeur de l'utilisation de variables d'environnement.
désactiver # si l'environnement virtuel précédent est toujours actif python3 -m venv venv . ./venv/bin/activate pip install -r exigences.txt
Enfin, renommez le fichier .env.dist en .env et ajoutez votre clé API et votre secret au fichier, ainsi que modifiez la valeur de INSIGHT_NUMBER pour qu'elle soit le numéro que vous souhaitez rechercher. Vous êtes maintenant prêt à exécuter le code avec
python number-insight/ni-basic.py
Vous devriez voir des informations sur le numéro de téléphone que vous avez saisi, ce qui signifie que vous avez utilisé l'API Number Insight de Vonage pour rechercher le numéro de téléphone à partir de vos variables d'environnement, sans avoir besoin de modifier le fichier Python lui-même ! C'est un avantage majeur de l'utilisation de variables d'environnement.
L'obtention et la définition de variables d'environnement sont une partie essentielle de la création d'un logiciel de production. Si vous avez terminé ce didacticiel, vous savez maintenant comment obtenir et définir des variables d'environnement à l'aide de Python.
Vous comprenez également désormais vos différentes options pour stocker vos secrets : les définir temporairement à l'aide de votre système d'exploitation, les stocker dans un fichier .env, les conserver dans le cloud et utiliser un gestionnaire de secrets universel. La méthode que vous utiliserez dépendra des circonstances du projet sur lequel vous travaillez. Si vous souhaitez en savoir plus, cet article sur l'utilisation des clés privées dans les variables d'environnement contient plus d'informations.
Si vous souhaitez commencer à utiliser les API Vonage, vous pouvez créer un compte de développeur gratuit (avec des crédits gratuits !). Si vous avez des questions sur ce didacticiel, n'hésitez pas à nous contacter sur notre Slack de la communauté Vonage et à demander nous là-bas ou en nous envoyant un message sur X, anciennement connu sous le nom de Twitter.
Maintenant, allez-y et essayez d'utiliser des variables d'environnement dans vos propres projets Python !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!