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 Python cloud, które upraszcza proces wdrażania:
- Wdrażaj swoją aplikację na produkcję w kilka sekund za pomocą prostego
git push.- Korzystaj z własnej nazwy domeny, z automatyczną konfiguracją certyfikatu HTTPS – bezpieczne połączenia są obsługiwane za Ciebie.
- Polegaj na automatycznych backupach, aktualizacjach jednym kliknięciem oraz przewidywalnych kosztach, dzięki czemu możesz skupić się na kodzie, a nie na zarządzaniu infrastrukturą.
- Korzystaj z wysokiej wydajności i bezpieczeństwa na prywatnej, dedykowanej infrastrukturze. Twoje środowisko jest odizolowane i chronione.
Oszczędzaj czas i upraszczaj swój workflow: Twój kod może działać na Python cloud hosting Stackhero już w 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:
- Twoje sekrety nigdy nie są przechowywane w repozytorium Git, co zmniejsza ryzyko nieautoryzowanego dostępu.
- 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.
Konfigurowanie zmiennych środowiskowych dla 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
Konfigurowanie zmiennych środowiskowych dla staging i produkcji
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 Stackhero
Dostęp do zmiennych środowiskowych w Python
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"