簡體   English   中英

在App Engine上的Django應用程序上存儲客戶端機密

[英]Storing client secrets on Django app on App Engine

我有一個使用一些密鑰的Django應用程序(例如用於OAuth2 / JWT身份驗證)。 我想知道存放這些鑰匙的地方在哪里。

以下是我到目前為止找到的方法:

  1. 硬編碼 :不是一個選項,我不希望我的秘密在源代碼控制上。
  2. 硬編碼+混淆 :與#1相同 - 攻擊者可以運行我的代碼來獲取秘密。
  3. 存儲在環境變量中 :我的app.yaml也是源代碼控制的。
  4. 存儲在DB中 :不確定。 DB在可用性和安全性方面不夠可靠。
  5. 存儲在非源控制文件中 :到目前為止我最喜歡的方法。 問題是我需要一些備份文件,手動備份聽起來不對。

我錯過了什么嗎? 是否存在為Django應用程序或App Engine應用程序存儲密鑰的最佳實踐?

您幾乎無法隱藏可以訪問您的服務器的攻擊者的密鑰,因為服務器需要知道密鑰。 但是對於具有低權限的攻擊者來說,你可能會很難。

混淆通常不被視為良好做法。

你的選擇5似乎是合理的。 將密鑰存儲在非源控制文件中允許將密鑰保存在單個且定義明確的位置。 您可以對該文件設置適當的權限,以便攻擊者需要高權限才能打開它。 還要確保編輯項目的其余部分需要高權限,否則,攻擊者可以修改項目的隨機文件以訪問密鑰。

我自己在我的項目中使用你的選項5。

我見過的解決方案是使用gpg在您的存儲庫中存儲秘密配置的加密副本。 根據您團隊的結構,您可以對稱地加密它並共享密碼以解密它或使用核心成員/維護者的公鑰對其進行加密。

這樣你的秘密就像你的代碼一樣備份,而不會讓它們變得可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM