Python: Gestione dei segreti (variabili d'ambiente)

Questa documentazione fa parte della guida Utilizzi avanzati. Consulta la guida completa qui: Approfondire i tuoi deployment Python.

👋 Benvenuto nella documentazione di Stackhero!

Stackhero offre una soluzione Python cloud pronta all'uso, progettata per semplificare il processo di deployment:

  • Distribuisci la tua applicazione in produzione in pochi secondi con un semplice git push.
  • Utilizza il tuo nome di dominio, con configurazione automatica del certificato HTTPS per connessioni sicure gestite direttamente da noi.
  • Affidati a backup automatici, aggiornamenti con un clic e prezzi prevedibili, così puoi concentrarti sul tuo codice invece che sulla gestione dell'infrastruttura.
  • Approfitta di elevate prestazioni e sicurezza su un'infrastruttura privata e dedicata. Il tuo ambiente è isolato e protetto.

Risparmia tempo e semplifica il tuo workflow: il tuo codice può essere operativo con il Python cloud hosting di Stackhero in soli 5 minuti.

A un certo punto, dovrai memorizzare segreti come token e password per database o servizi di terze parti. È importante memorizzarli in modo sicuro. Evita di incorporarli direttamente nel tuo repository o codice poiché ciò crea un rischio significativo per la sicurezza.

L'uso delle variabili d'ambiente offre due vantaggi chiave:

  1. I tuoi segreti non sono mai memorizzati nel tuo repository Git, riducendo il rischio di accesso non autorizzato.
  2. Puoi usare credenziali diverse per vari ambienti, come usare un database di produzione in produzione e un database di sviluppo durante lo sviluppo.

In un ambiente di sviluppo, crea un file .env alla radice del tuo progetto. Questo file dovrebbe essere escluso da Git per assicurarsi che non venga mai commesso.

Per leggere automaticamente il file .env, puoi usare il modulo python-dotenv:

pip install python-dotenv
pip freeze > requirements.txt

Quindi, crea un file .env alla radice del tuo progetto e aggiungi le tue variabili:

ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...

Infine, assicurati che il file .env sia escluso da Git aggiungendolo al tuo .gitignore:

echo ".env" >> .gitignore

Il file .env non è sufficientemente sicuro per gli ambienti di staging e produzione. Invece, Stackhero ti consente di memorizzare in modo sicuro le tue variabili d'ambiente direttamente nella configurazione del tuo servizio Python.

Puoi impostare queste variabili nel dashboard di Stackhero selezionando il tuo servizio Python e poi cliccando sul pulsante "Configura".

Variabili d'ambiente Python su StackheroVariabili d'ambiente Python su Stackhero

Accedere alle variabili d'ambiente in Python è semplice. Basta usare os.environ.get() come mostrato di seguito:

import os

print(os.environ.get('ENV'))

Ad esempio, connettersi a un server Redis utilizzando una variabile d'ambiente può essere fatto così:

import os
import redis

r = redis.from_url(os.environ.get("REDIS_URL"))

In un ambiente di sviluppo, imposta REDIS_URL nel tuo file .env come segue:

REDIS_URL="redis://localhost:6379"

Per produzione e staging, definisci REDIS_URL sul dashboard di Stackhero sotto la configurazione del servizio Python:

REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:6380"