安全性

Vault

機密儲存在 Vault 中的流程分解成以下步驟。您也可以查看行銷安全性頁面,以取得相同內容。

步驟 1

npx dotenv-vault push 您執行 npx dotenv-vault push。您的請求已開始。

步驟 2

加密連線 您的 .env 檔案會被加密,並透過 SSL 安全地傳送到 Dotenv 的記憶體伺服器。

步驟 3

Dotenv 伺服器 此加密的酬載會被解密,並暫時保留在記憶體中,以完成後續步驟。之後,記憶體會被清除。請放心,解密版本永遠不會被持久化到 Dotenv 系統。

步驟 4

剖析 您的 .env 檔案會逐行剖析 - 在記憶體中。

步驟 5

機密擷取 每個金鑰/值對(以及任何註解)都會被擷取 - 在記憶體中。

步驟 6

機密分割 機密會被分割成其個別的金鑰和值。這是經過設計的。它們將被儲存在個別的資料庫中,以提高安全性。這樣,如果攻擊者以某種方式獲得一個資料庫的存取權,他們將無法理解資料 - 因為只有一半的拼圖。

步驟 7

AES-GCM 加密 金鑰會被加密。值會被加密。它們使用不同的主加密金鑰進行加密。這樣,如果攻擊者以某種方式獲得值的解密金鑰,他們會發現資料毫無用處。他們不會知道機密是屬於 Twilio 還是 AWS。

加密使用 AES-GCM 演算法。它是

  • 經過充分研究
  • NIST 建議
  • IETF 標準
  • 由於有專用的指令集,速度很快

此外,所有主加密金鑰都會按照未公開的排程輪換,進一步提高安全性。

步驟 8

權杖化 加密的值會傳送到 Dotenv Vault 以安全儲存。權杖會作為識別符號傳回。權杖會在下一步中用於將金鑰對應到值,以便稍後進行安全讀取操作。

Vault 中有多種安全措施。它們包括但不限於

  • 將資料儲存區與應用程式資料庫分開
  • 無法透過網際網路存取,並且禁止所有外部連線
  • 需要加密的用戶端,並且這些用戶端必須經過應用程式 - 應用程式本身也有額外的加密層
  • 連線到 Vault 的 TLS 要求更嚴格。無法使用 TLS 1.0 連線。
  • 儲存在 Vault 中的機密不僅在資料儲存區層級進行加密。如您在前幾個步驟中看到的,它們也會在每個資料儲存區項目中進行加密。

步驟 9

儲存金鑰部分和權杖 最後,加密的金鑰和權杖(代表加密的值)會被放入信封中,並一起儲存在應用程式資料庫中。

步驟 10

成功 201 成功訊息會傳回給開發人員。

安全性規格

以下是建置 Dotenv Vault 時的其他規格。

  • Dotenv Vault 是與應用程式資料庫分開的資料儲存區。這樣,如果攻擊者獲得應用程式資料庫的存取權,他們就不會獲得 Vault 資料儲存區的存取權。
  • 無法透過網際網路存取 Dotenv Vault 資料儲存區,並且禁止所有外部連線。這樣,攻擊者就無法遠端存取 Dotenv Vault 資料儲存區。需要加密的用戶端,並且這些用戶端必須經過應用程式 - 應用程式本身也有自己的加密層。
  • 連線到 Dotenv Vault 資料儲存區的 TLS 要求更嚴格。無法使用 TLS 1.0 連線。
  • 儲存在 Dotenv Vault 中的機密不僅在資料儲存區層級進行加密。它們也會在每個值中進行加密。這樣,即使攻擊者獲得資料儲存區的存取權,他們也無法理解加密的值。
  • VAULT 不會儲存金鑰。它只會儲存值。金鑰儲存在應用程式資料庫中,而共用的指標(在兩個資料儲存區中)可讓它們被識別為一對。這樣,攻擊者必須同時獲得應用程式資料庫和 Dotenv Vault 資料儲存區的存取權,才能理解這些值。
  • 用於加密機密值的加密金鑰會按照未公開的排程輪換。這樣,攻擊者可能會獲得舊的加密金鑰,但不會獲得最新的加密金鑰 - 從而阻止他們解密機密值。
  • 加密使用 AES-GCM 加密。這是一種經過充分研究、NIST 建議和 IEFT 標準的演算法。
  • 如您所見,我們竭盡所能確保您的機密安全無虞。畢竟,我們也會在這裡保管我們的機密。