UStackUStack
AxKeyStore favicon

AxKeyStore

AxKeyStore 是一個命令列工具,它利用您的私人 GitHub 儲存庫作為加密、不可信任的儲存空間,以安全地管理密鑰、金鑰和密碼。

AxKeyStore

什麼是 AxKeyStore?

AxKeyStore:使用 GitHub 後端進行安全密鑰管理

什麼是 AxKeyStore?

AxKeyStore 是一個強大、開源的命令列介面 (CLI) 工具,專為開發人員和注重安全性的使用者設計,他們需要一種可靠的方式來儲存和管理敏感憑證、金鑰和密碼。其核心創新在於利用您現有的私人 GitHub 儲存庫作為後端儲存機制。這種方法提供了雲端儲存的好處——可存取性、版本控制和可靠性——同時不犧牲安全性,因為 GitHub 嚴格被視為不可信任的儲存空間。

至關重要的是,AxKeyStore 遵循絕對的客戶端加密原則。每一個敏感資料片段,包括密鑰本身以及用於加密它們的金鑰,都在傳輸前完全在您的本機機器上進行處理。因此,沒有純文字密鑰、主金鑰或密碼會通過網路或以未加密的形式駐留在遠端伺服器或本機檔案系統上。這種零信任架構確保只有您,擁有正確的 Master Password(主密碼),才能解密和存取您的保險庫資料。

主要功能

  • 零信任架構 (Zero Trust Architecture): 基於所有外部系統(包括 GitHub)均不可信任的原則。加密是強制性的且多層次的。
  • 三層加密方案:
    • 密鑰加密 (Secrets Encryption): 使用遠端主金鑰 (Remote Master Key, RMK) 加密密鑰。
    • RMK 加密: 使用您的 Master Password(透過客戶端加密)加密 RMK。
    • 本機憑證加密 (Local Credential Encryption): 使用本機主金鑰 (Local Master Key, LMK) 保護本機設定詳細資料(如 GitHub token 和儲存庫名稱),LMK 也受您的 Master Password 保護。
  • 進階密碼學: 利用現代、安全的演算法,包括用於認證加密的 XChaCha20-Poly1305 和用於從 Master Password 進行穩健金鑰派生的 Argon2id。
  • GitHub 作為後端儲存: 利用您所控制的任何私人 GitHub 儲存庫提供的免費、有版本控制且可靠的儲存空間。
  • 多設定檔支援 (Multi-Profile Support): 輕鬆管理多個不同的保險庫,每個保險庫都有獨特的登入資訊、Master Password 和相關的 GitHub 儲存庫。
  • 階層式組織: 密鑰可以使用類別路徑(例如 api/production/internal)進行邏輯組織,以增強可發現性和管理性。
  • 統一驗證: 使用 GitHub Apps 和裝置流程 (Device Flow) 機制安全地進行身分驗證。

如何使用 AxKeyStore

開始使用 AxKeyStore 涉及直接的安裝,然後是初始登入和設定流程。該工具在配置完成後,設計上易於使用。

1. 安裝: 使用提供的特定平台腳本安裝 CLI 工具:

  • macOS/Linux: curl -sSL https://raw.githubusercontent.com/basilgregory/axkeystore/main/install.sh | bash
  • Windows (PowerShell): powershell -c "irm https://raw.githubusercontent.com/basilgregory/axkeystore/main/install.ps1 | iex" 這些腳本會自動將二進位檔放置在您的 PATH 中,以便立即存取。

2. 初始登入與設定: 執行登入命令以啟動設定序列: axkeystore login 在第一次執行時,系統會提示您建立並確認您的 Master Password。此密碼是解密您的保險庫和保護您的本機設定的最終金鑰。在密碼設定之後,CLI 將引導您在您的帳戶或組織中安裝必要的 GitHub 應用程式,授予 AxKeyStore 讀/寫您指定的私人儲存庫所需的權限。

3. 管理密鑰: 登入並配置後,您可以使用簡單的命令來儲存和檢索憑證。例如,儲存一個新密鑰可能涉及指定類別和金鑰名稱,而檢索則使用相應的命令,確保在從 GitHub 獲取加密的二進位資料後,資料僅在本地解密。

使用案例

  1. 保護 CI/CD 管道密鑰: 開發人員可以在其私人 AxKeyStore 保險庫中儲存自動化建置和部署所需的敏感 API 金鑰、部署 token 和環境變數,確保這些密鑰永遠不會被硬編碼或暴露在檢入原始碼控制的設定檔中。
  2. 管理個人開發人員憑證: 個人開發人員可以集中管理他們所有的 SSH 金鑰、雲端供應商存取金鑰(AWS、Azure、GCP)和資料庫密碼。透過使用他們的 GitHub 儲存庫,他們可以獲得憑證輪換事件的版本歷史記錄。
  3. 跨平台開發環境: 由於儲存空間是基於雲端的(GitHub)且工具是 CLI 驅動的,使用者可以在他們的本機機器、開發伺服器或臨時工作站之間無縫切換,在執行初始登入/設定後安全地存取所需的密鑰。
  4. 小型團隊憑證共享(受控): 雖然主要設計用於個人安全,但團隊可以使用共用的專用私人儲存庫來進行基本的、非生產環境的憑證共享,依賴於共用的 Master Password 知識(儘管建議進行個人化管理以實現最大安全性)。

常見問題 (FAQ)

Q:如果我忘記了我的 Master Password 會發生什麼事? A:由於 AxKeyStore 使用由您的 Master Password 保護的穩健、客戶端、多層加密方案,遺忘密碼意味著資料將永久無法存取。嚴格遵守零信任安全模型,沒有恢復機制。

Q:如果 GitHub 是儲存位置,我的資料真的安全嗎? A:是的。GitHub 只儲存加密的二進位資料塊。即使 GitHub 遭到入侵,攻擊者也只會取得加密資料,因為解密金鑰 (RMK 和 LMK) 受您的 Master Password 保護,且永遠不會以未加密的形式離開您的本機機器。

Q:我可以使用公開儲存庫進行儲存嗎? A:不可以。AxKeyStore 明確要求使用私人 GitHub 儲存庫。使用公開儲存庫會將您所有的加密密鑰暴露給全世界,從而破壞安全架構的宗旨。

Q:AxKeyStore 如何處理身份驗證和授權? A:它使用您必須安裝的專用 GitHub 應用程式。此應用程式透過裝置流程 (Device Flow) 促進安全的身分驗證,並僅向指定為您保險庫的特定儲存庫授予必要的權限(讀/寫)。

Q:這個工具需要付費嗎? A:AxKeyStore 是一個在 MIT 許可證下發布的開源專案。該工具本身是免費使用的。然而,利用 GitHub 進行儲存需要您擁有一個提供免費私人儲存庫的 GitHub 帳戶。

AxKeyStore | UStack