Infisical 開源密碼管理平台 介紹

一直以來筆者都在思考在公司中如何儲存密碼才是正確的方式,因為各個專案都有不同的密碼要記錄,最基本的就包含開發環境資料庫密碼、正式機資料庫密碼、客戶端的測試機遠端連線資訊等,還有可能有一堆遠端主機的帳號密碼要記錄。
從幾年前開始筆者轉向使用 Bitwarden 這個開源免費的密碼管理工具,在不付費的情況下可以使用絕大部分的功能,也可以和另一個人共享,所以對於筆者一個人來說要記錄很多密碼不會到很麻煩,並且也還算是安全。
但是看到身邊的同事都是用各種「筆記軟體」在儲存工作相關的密碼,例如放在公司電腦桌面的 .txt 檔案、mac OS 上的「備忘錄」等, 每次看到都覺得心驚膽戰,深怕哪天發生什麼意外,將公司的密碼洩漏。但是在其他客戶、軟體公司中也不乏許多人使用相同的方式儲存密碼,有的也是使用便條紙將公用的遠端連線密碼儲存在外人一進去就看的到的地方,所以就想尋找開源、免費、有圖形化介面、可以團隊使用的密碼管理工具。

筆者在尋找開源免費的解決方案時,一開始是想要使用 HashiCorp Vault ,後來才找到 infisical ,開源免費,可以快速的在本地部署,同一個密碼還可以依照不同環境設定各自的內容,並且還可以和 Jenkins, TeamCity 等工具整合,非常方便。雖然在 GitHub 上有 12.5k Star ,但是目前這個專案還在早期階段,版本號才 v0.63.0 ,還沒到 1.0 ,可能沒有辦法直接在生產環境中使用。

安裝

Infisical 的 GitHub 頁面中有提供使用 docker compose 快速部屬的指令,要部署非常簡單:

Linux/macOS:
    
git clone https://github.com/Infisical/infisical && cd "$(basename $_ .git)" && cp .env.example .env && docker-compose -f docker-compose.prod.yml up
    

Windows:
    
git clone https://github.com/Infisical/infisical && cd infisical && copy .env.example .env && docker-compose -f docker-compose.prod.yml up
    

使用示範

使用上面的指令快速部署好後,預設會綁定 80 port 。第一次開啟網頁會要求建立系統管理員帳號:(這裡的密碼長度要求要 14)

註冊完成後可以下載一個 PDF 檔案,裡面儲存的是忘記密碼時可以使用的恢復金鑰

PDF 內容如下:

可以設定是否要開放註冊,或是限制可以註冊的 email。不過其他包含 SAML, LDAP 等更進階的功能都需要付費才能使用

增加使用者

要增加使用者可以點選左下角的「Invite people」 > Add Member ,輸入 email 後點選 Add Member 來新增使用者

因為我們沒有設定 Email 相關資訊(要在 .env 檔案中設定,沒有辦法在介面上設定),所以介面上面會彈出一個連結,把這個連結給使用者就可以註冊了,不過需要注意的是上面的連結是錯誤的,在 docker 容器中 port 確實是 8080,但是在預設的 docker-compose.yaml 中自動將 port 映射為 80,所以需要手動將下面的連結改為 80 port ,不然會連不上

另外如果在設定中的註冊選項設定為「不允許使用者註冊」,則這個連結給使用者後會直接跳到登入介面,要註冊的使用者一定會很無助、完全不知道該如何使用。
正確應該會顯示下面的畫面:

然後輸入使用者名稱和密碼就註冊完畢:

新增密碼

在 Infisical 中會依照不同的專案區分密碼
在左側點選 Overview ,點選 「Add New Project」 建立專案,輸入專案名稱後點選「Create Project」建立專案

點選「Add Secret」後就可以建立密碼,輸入密碼的辨識名稱和密碼後可以勾選這個是哪個環境下的密碼,預設值包含:開發、測試、生產 這三個環境,點選 Create Secret 就可以建立密碼。

建立完後可以再單獨設定不同環境的密碼

如果預設的三個環境不夠使用還可以點選側邊的「Project Settings」,在 Environments 區塊中點選 Createenvironments 來增加額外的環境

設定權限

在專案中選擇 Access Control,點選 Add Member ,選擇使用者後點選 Add Member 就可以將使用者家到這個專案中了

不過很可惜的是群組 Groups 功能需要付費才能使用,所以只能一一將使用者加入。

參考資料:
GitHub Infisical-infisical

留言