首頁 >後端開發 >Python教學 >將硬編碼機密移至機密管理器

將硬編碼機密移至機密管理器

Barbara Streisand
Barbara Streisand原創
2024-10-14 06:15:29526瀏覽

Move hardcoded secrets to a Secrets Manager

秘密管理器是一種用於儲存和管理您的密碼、API 金鑰、資料庫憑證以及應用程式所需的其他類型敏感資料的工具。

硬編碼在應用程式原始碼中或儲存在純文字檔案中供程式碼使用的秘密可能會被惡意實體利用,這些惡意實體可以檢查系統中的應用程式或元件。可以透過秘密管理器來減輕這種風險。

dotenv-vault

dotenv-vault 就是這樣一個秘密管理器,它提供了一種將秘密放入程式碼中的更安全的替代方案。

[!注意]
這不是使用 dotenv-vault 的教學。本文檔的目的是解釋秘密管理器如何幫助開發人員避免對秘密進行硬編碼或將其儲存在純文字檔案中。您可以在此處了解如何開始使用 dotenv-vault

假設我有關於電影 星際大戰:第五集 中特定角色的敏感信息,我希望我的程式使用該資訊。

def spoiler():
    spoiler = "Darth Vader is Luke Skywalker's father"
    return { "spoiler": spoiler }

我不會對資訊進行硬編碼,而是將其作為環境變數寫入 .env 檔案中:

SPOILER="Darth Vader is Luke Skywalker's father"

有了dotenv-vault,我的程式就可以透過環境變數存取敏感資訊。

import os
from dotenv_vault import load_dotenv

load_dotenv() # Take environment variables from .env

def spoiler():
    spoiler = os.getenv("SPOILER") # Get the secret
    return { "spoiler": spoiler }

然後我透過同步 .env 檔案來加密環境變數。同步完成後,可以產生稱為 DOTENV_KEY 的資料。我的程式可以將該輸出讀取為生產中的環境變數。

DOTENV_KEY='dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=production' python main.py

因此,我的生產應用程式能夠存取該秘密。

{ "spoiler": "Darth Vader is Luke Skywalker's father" }

選擇適合您的 Secrets Manager

有多種可用的秘密管理解決方案。每個秘密管理器都有自己的優點和缺點。選擇最適合您組織要求的選項。

替代秘密管理器清單:

  1. 財政
  2. 多普勒
  3. HashiCorp Vault
  4. AWS Secrets Manager
  5. Azure 金鑰保管庫

以上是將硬編碼機密移至機密管理器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn