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.

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una soluzione cloud Python pronta all'uso che fornisce numerosi vantaggi, tra cui:

  • Distribuisci la tua applicazione in pochi secondi con un semplice git push.
  • Usa il tuo nome di dominio e beneficia della configurazione automatica dei certificati HTTPS per una sicurezza migliorata.
  • Goditi la tranquillità con backup automatici, aggiornamenti con un clic, e una tariffazione semplice, trasparente e prevedibile.
  • Ottieni prestazioni ottimali e una sicurezza robusta grazie a una VM privata e dedicata.

Risparmia tempo e semplificati la vita: ci vogliono solo 5 minuti per provare la soluzione di hosting cloud Python di Stackhero!

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"