Python: 處理機密(環境變量)

此文件屬於進階用法指南的一部分。請在此處查看完整指南:深入了解 Python 部署

👋 歡迎來到 Stackhero 文檔!

Stackhero 提供一個即用型的 Python 雲端 解決方案,帶來多項好處,包括:

  • 只需一個簡單的 git push,即可在幾秒鐘內部署您的應用程式。
  • 使用您自己的域名,並享受 HTTPS 證書的自動配置以增強安全性。
  • 享受自動備份一鍵更新,以及簡單、透明且可預測的定價,讓您安心無憂。
  • 得益於專用的私人 VM,獲得最佳的性能和強大的安全性

節省時間簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Python 雲端託管 解決方案!

在某些時候,您需要存儲如令牌和數據庫或第三方服務的密碼等機密。重要的是要安全地存儲這些信息。避免將它們直接嵌入到您的存儲庫或代碼中,因為這會造成重大安全風險。

使用環境變量提供了兩個主要優勢:

  1. 您的機密從未存儲在您的 Git 存儲庫中,從而降低未經授權訪問的風險。
  2. 您可以為不同的環境使用不同的憑證,例如在生產中使用生產數據庫,在開發中使用開發數據庫。

在開發環境中,在項目根目錄創建 .env 文件。此文件應從 Git 中排除,以確保它從未被提交。

要自動讀取 .env 文件,您可以使用 python-dotenv 模塊:

pip install python-dotenv
pip freeze > requirements.txt

然後,在項目根目錄創建 .env 文件並添加您的變量:

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

最後,確保 .env 文件被排除在 Git 之外,將其添加到 .gitignore

echo ".env" >> .gitignore

.env 文件對於 staging 和生產環境來說不夠安全。相反,Stackhero 允許您將環境變量安全地存儲在您的 Python 服務配置中。

您可以在 Stackhero 儀表板中選擇您的 Python 服務,然後點擊 "Configure" 按鈕來設置這些變量。

Stackhero 上的 Python 環境變量Stackhero 上的 Python 環境變量

在 Python 中訪問環境變量很簡單。只需使用 os.environ.get(),如下所示:

import os

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

例如,使用環境變量連接到 Redis 服務器可以這樣做:

import os
import redis

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

在開發環境中,在 .env 文件中設置 REDIS_URL 如下:

REDIS_URL="redis://localhost:6379"

對於生產和 staging,請在 Stackhero 儀表板的 Python 服務配置中定義 REDIS_URL

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