Utilizzo delle variabili di ambiente di sistema in Django
Django, un popolare framework web nell’ecosistema Python, è costruito per essere flessibile e sicuro. Un modo per migliorare la sicurezza è evitare di codificare informazioni sensibili (come chiavi segrete o password di database) direttamente nel codice sorgente. Invece, tali informazioni dovrebbero essere archiviate in variabili di ambiente, che possono essere lette nell’applicazione Django in fase di runtime. Le variabili d’ambiente offrono un livello di astrazione e separazione tra configurazione e codice, il che è vantaggioso in termini di sicurezza e portabilità.
Questo articolo fornisce una guida completa su come leggere le variabili di ambiente di sistema in un progetto Django
Impostazione delle variabili d’ambiente
Prima di poter leggere una variabile d’ambiente, è necessario impostarla. Sui sistemi simili a UNIX (inclusi Linux e macOS), puoi impostare una variabile di ambiente utilizzando il comando export:
export MY_VARIABLE="My Value"
Su Windows, utilizzare il comando set:
set MY_VARIABLE="My Value"
Accesso alle variabili d’ambiente in Python
In uno script Python di base, puoi accedere alle variabili di ambiente utilizzando il comando “os”. modulo:
import os value = os.environ.get('MY_VARIABLE')
Se la variabile di ambiente non è impostata, questo metodo restituisce “Nessuno”..
Integrazione con Django
All’interno di un progetto Django, ci sono più posti in cui potresti voler utilizzare le variabili di ambiente, come in `settings.py`. Utilizzando il metodo della sezione precedente, puoi recuperare le variabili di ambiente direttamente nel file delle impostazioni di Django:
import os SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
Tuttavia, il metodo diretto non dispone di un meccanismo per fornire valori predefiniti o conversione del tipo. Pertanto, è spesso consigliabile utilizzare un pacchetto come python-disaccoppiamento O django-ambiente per migliorare questo processo.
Utilizzando python-depair:
Installa il pacchetto:
pip install python-decouple
Usalo nelle impostazioni di Django:
from decouple import config SECRET_KEY = config('DJANGO_SECRET_KEY') DEBUG = config('DEBUG', default=False, cast=bool)
La funzione di configurazione recupera il valore ed è possibile specificare valori predefiniti e persino trasmettere i dati al tipo desiderato.
Utilizzando django-ambiente:
Installa il pacchetto:
pip install django-environ
Usalo nelle impostazioni di Django:
import environ env = environ.Env() environ.Env.read_env() SECRET_KEY = env('DJANGO_SECRET_KEY') DEBUG = env.bool('DEBUG', default=False)
Gestione delle variabili d’ambiente obbligatorie e facoltative
Mentre alcune variabili d’ambiente potrebbero essere facoltative (con valori predefiniti sensati), altre potrebbero essere obbligatorie. Per le variabili obbligatorie, potresti volere che l’applicazione generi un errore se non vengono fornite.
Con diretto “os”. utilizzo:
SECRET_KEY = os.environ('DJANGO_SECRET_KEY') # Raises a KeyError if not set
Con “python-disaccoppiamento”.per impostazione predefinita verrà generato un UnfineValueError per le variabili obbligatorie mancanti:
SECRET_KEY = config('DJANGO_SECRET_KEY')
Memorizzazione e gestione delle variabili d’ambiente
Per lo sviluppo locale, è possibile archiviare le variabili di ambiente in un file `.env` file nella radice del tuo progetto. Quindi, strumenti come “django-environ”. O “python-disaccoppiamento”. può leggere da questo file. Tuttavia, non commettere mai il `.env` file al controllo della versione (come git). Aggiungi sempre `.env` alla tua `.gitignore` file.
In ambienti di produzione o di altro tipo, imposta le variabili di ambiente direttamente sulla macchina o utilizza un servizio simile Gestore dei segreti AWS HashiCorp Vault o altri strumenti di gestione dei segreti forniti dai fornitori di servizi cloud.
Conclusione
L’utilizzo delle variabili di ambiente in Django fornisce un livello di astrazione, migliorando la sicurezza e la portabilità del progetto. Sia che tu acceda direttamente tramite il file “os”. modulo o utilizzando pacchetti di utilità come python-disaccoppiamento O django-ambientequesto approccio ti consente di gestire le informazioni sensibili in modo efficiente e sicuro nelle tue applicazioni Django.