Python: Gestión de secretos (variables de entorno)
Esta documentación forma parte de la guía Usos avanzados. Consulte la guía completa aquí: Avanzando con tus despliegues de Python.
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución Python en la nube lista para usar, diseñada para agilizar su proceso de despliegue:
- Despliegue su aplicación en producción en segundos con un simple
git push.- Utilice su propio nombre de dominio, con configuración automática del certificado HTTPS para conexiones seguras gestionadas por nosotros.
- Cuente con copias de seguridad automáticas, actualizaciones con un solo clic y precios predecibles, para que pueda centrarse en su código y no en la gestión de la infraestructura.
- Disfrute de un alto nivel de rendimiento y seguridad en una infraestructura privada y dedicada. Su entorno está aislado y protegido.
Ahorre tiempo y simplifique su flujo de trabajo: puede tener su código funcionando con el hosting Python en la nube de Stackhero en solo 5 minutos.
En algún momento, necesitarás almacenar secretos como tokens y contraseñas para bases de datos o servicios de terceros. Es importante almacenarlos de manera segura. Evita incrustarlos directamente en tu repositorio o código ya que esto crea un riesgo de seguridad significativo.
Usar variables de entorno ofrece dos beneficios clave:
- Tus secretos nunca se almacenan en tu repositorio Git, reduciendo el riesgo de acceso no autorizado.
- Puedes usar credenciales diferentes para varios entornos, como usar una base de datos de producción en producción y una base de datos de desarrollo durante el desarrollo.
Configuración de variables de entorno para el desarrollo
En un entorno de desarrollo, crea un archivo .env en la raíz de tu proyecto. Este archivo debe estar excluido de Git para asegurar que nunca se confirme.
Para leer automáticamente el archivo .env, puedes usar el módulo python-dotenv:
pip install python-dotenv
pip freeze > requirements.txt
Luego, crea un archivo .env en la raíz de tu proyecto y añade tus variables:
ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...
Finalmente, asegúrate de que el archivo .env esté excluido de Git añadiéndolo a tu .gitignore:
echo ".env" >> .gitignore
Configuración de variables de entorno para staging y producción
El archivo .env no es lo suficientemente seguro para los entornos de staging y producción. En su lugar, Stackhero te permite almacenar de manera segura tus variables de entorno directamente en la configuración de tu servicio Python.
Puedes establecer estas variables en el panel de Stackhero seleccionando tu servicio Python y luego haciendo clic en el botón "Configurar".
Variables de entorno de Python en Stackhero
Acceder a variables de entorno en Python
Acceder a variables de entorno en Python es sencillo. Simplemente usa os.environ.get() como se muestra a continuación:
import os
print(os.environ.get('ENV'))
Por ejemplo, conectarse a un servidor Redis usando una variable de entorno se puede hacer así:
import os
import redis
r = redis.from_url(os.environ.get("REDIS_URL"))
En un entorno de desarrollo, establece REDIS_URL en tu archivo .env de la siguiente manera:
REDIS_URL="redis://localhost:6379"
Para producción y staging, define REDIS_URL en el panel de Stackhero bajo la configuración del servicio Python:
REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:6380"