iT邦幫忙

0

關於Docker部屬Django環境變數安全問題

  • 分享至 

  • xImage

目前找到的方法就是在Django Project 根目錄創建.env檔,並且透過python-dotenv去傳環境變數,然後上傳git時ignore,那這樣我Docker部屬上去,會有機會讓有心人士駭入Django Project查看.env檔的環境變數嗎?如果有更安全的方法有哪些可以提供一下嗎?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Ray
iT邦大神 1 級 ‧ 2023-04-25 11:29:48

ChatGPT 代答:

在 container 內保護 Python 環境變數有以下幾種方法:

使用 Docker 的機密管理系統:Docker 提供了一個機密管理系統,可以將敏感信息,例如密碼、API 金鑰等存儲在 Docker 中。您可以使用 docker secrets 命令將敏感信息加密並存儲在 Docker 機密存儲庫中。然後,在容器中,您可以使用 --secret 選項將機密解密並作為環境變數注入容器中的 Python 程序。

在容器運行時使用環境變數:您可以在容器運行時設置環境變數,然後在 Python 程序中使用 os.environ 讀取這些變數。這樣,您可以通過在容器啟動時使用 -e 選項設置環境變數,從而避免在容器內直接設置環境變數。

在容器運行時使用參數:您可以將 Python 程序編寫成接受參數的形式,而不是從環境變數中讀取設置。這樣,您可以通過在容器啟動時使用 docker run 命令傳遞參數,從而避免在容器內直接設置環境變數。

使用加密的配置文件:您可以將 Python 程序的配置設置存儲在一個加密的文件中。在容器啟動時,您可以使用 docker run 命令將該文件掛載到容器內,然後在 Python 程序中解密該文件並讀取配置。這樣,您可以避免在容器內直接設置環境變數。

綜上所述,保護 Python 環境變數的最佳方法是使用 Docker 的機密管理系統。如果不想使用 Docker 的機密管理系統,則可以在容器運行時使用環境變數或參數,或使用加密的配置文件來保護設置。

警語: ChatGPT 常有胡言亂語的習慣, 請務必先查證其說法

JJYEN iT邦新手 4 級 ‧ 2023-04-25 13:39:39 檢舉

感謝 我也很常請教Chatgpt

0
whitefloor
iT邦研究生 2 級 ‧ 2023-04-25 14:20:45
  1. 不要上傳 .evn 檔到 git repository 是對的
  2. 自己寫個加密工具把參數檔加密
  3. 加密方法可以參考 AWS KMS
  4. 用 AWS Secret Manager 或 System Manager 的 Parameter Stored
  5. 千萬別提供 API router 取得 config

我要發表回答

立即登入回答