Python: Zarządzanie sekretami (zmienne środowiskowe)

Ta dokumentacja jest częścią przewodnika Zaawansowane zastosowania. Pełny przewodnik znajdziesz tutaj: Dalsze kroki z wdrożeniami Python.

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje gotowe do użycia rozwiązanie Python cloud, które zapewnia wiele korzyści, w tym:

  • Wdrażaj swoją aplikację w kilka sekund za pomocą prostego git push.
  • Używaj własnej nazwy domeny i korzystaj z automatycznej konfiguracji certyfikatów HTTPS dla zwiększonego bezpieczeństwa.
  • Ciesz się spokojem dzięki automatycznym kopiom zapasowym, aktualizacjom jednym kliknięciem oraz prostemu, przejrzystemu i przewidywalnemu cennikowi.
  • Uzyskaj optymalną wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.

Oszczędzaj czas i upraszczaj sobie życie: wypróbowanie rozwiązania Python cloud hosting Stackhero zajmuje tylko 5 minut!

W pewnym momencie będziesz musiał przechowywać sekrety, takie jak tokeny i hasła do baz danych lub usług zewnętrznych. Ważne jest, aby przechowywać je bezpiecznie. Unikaj osadzania ich bezpośrednio w repozytorium lub kodzie, ponieważ stwarza to znaczne ryzyko bezpieczeństwa.

Używanie zmiennych środowiskowych oferuje dwa kluczowe korzyści:

  1. Twoje sekrety nigdy nie są przechowywane w repozytorium Git, co zmniejsza ryzyko nieautoryzowanego dostępu.
  2. Możesz używać różnych poświadczeń dla różnych środowisk, na przykład używając bazy danych produkcyjnej w produkcji i bazy danych deweloperskiej podczas rozwoju.

W środowisku deweloperskim utwórz plik .env w katalogu głównym projektu. Ten plik powinien być wykluczony z Git, aby upewnić się, że nigdy nie zostanie zatwierdzony.

Aby automatycznie odczytać plik .env, możesz użyć modułu python-dotenv:

pip install python-dotenv
pip freeze > requirements.txt

Następnie utwórz plik .env w katalogu głównym projektu i dodaj swoje zmienne:

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

Na koniec upewnij się, że plik .env jest wykluczony z Git, dodając go do .gitignore:

echo ".env" >> .gitignore

Plik .env nie jest wystarczająco bezpieczny dla środowisk staging i produkcji. Zamiast tego, Stackhero pozwala na bezpieczne przechowywanie zmiennych środowiskowych bezpośrednio w konfiguracji usługi Python.

Możesz ustawić te zmienne na pulpicie nawigacyjnym Stackhero, wybierając swoją usługę Python, a następnie klikając przycisk "Configure".

Zmienne środowiskowe Python na StackheroZmienne środowiskowe Python na Stackhero

Dostęp do zmiennych środowiskowych w Python jest prosty. Po prostu użyj os.environ.get(), jak pokazano poniżej:

import os

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

Na przykład, połączenie z serwerem Redis przy użyciu zmiennej środowiskowej można wykonać w ten sposób:

import os
import redis

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

W środowisku deweloperskim ustaw REDIS_URL w pliku .env w następujący sposób:

REDIS_URL="redis://localhost:6379"

Dla produkcji i staging, zdefiniuj REDIS_URL na pulpicie nawigacyjnym Stackhero w konfiguracji usługi Python:

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