Skip to content

核准 ​

每一個用到密碼的請求都會等你,你核准的是這一次使用,而不是整個代理。視窗先寫最重要的,再列出所有決定值會去哪裡的內容:

run_with_secretshttp_request
use pg-staging → /opt/homebrew/bin/psqlsend github → https://api.github.com
參數、stdin 內容、環境變數、暫存檔內容、工作目錄方法與網址、每個標頭、內容的開頭

佔位符以 {{secret:NAME}} 顯示——密碼值本身永遠不會出現在視窗裡。換行、終端機控制碼、雙向文字控制字元與零寬字元 都會以跳脫形式顯示,文字無法偽裝。太長而無法完整顯示的請求(超過 700 字)會在跳出視窗之前就被拒絕,而不是截斷後顯示。

強驗證與弱驗證 ​

強驗證——驗證你的身分弱驗證——只確認意圖
macOSTouch ID 或登入密碼從終端機核准
WindowsWindows Hello(PIN、指紋、臉部)是/否訊息框、終端機
Linuxpolkit,要求輸入你的密碼(細節會在它之前以通知顯示)zenity/kdialog 詢問、終端機

預設的 method = "auto" 一律先試強驗證。只有在強驗證無法使用時——透過 SSH 沒有圖形介面、 Windows Hello 沒設定、polkit 動作沒安裝——而且 allow_weak = true,才會退回弱驗證。

取消就是拒絕

在驗證視窗按取消,請求就被拒絕。你說不之後,keymitt 絕不會改用較弱的方式再問一次,也會告訴代理不要重複同一個請求。

要完全禁止弱驗證,設定 allow_weak = false 或 method = "native"。

耗時 ​

每次決定都會在稽核紀錄裡記下花了多久(elapsed_ms)。人讀完視窗再完成驗證至少要一秒多; 如果某個會跳視窗的方式只花了幾毫秒就核准,就值得回頭查。

記住核准 ​

ttl_secs 會把核准記住一段時間——但只對位元組完全相同的請求有效:相同的指令、stdin 模板、環境變數、 暫存檔與工作目錄,或相同的方法、網址、標頭與內容。不同的請求一定會再問。預設 0 表示每次都問。

沒有畫面的機器 ​

在沒有圖形介面的伺服器上,改用終端機核准:

toml
[approval]
method = "cli"

代理送出請求時,keymitt 會把它記成等待中並暫停。從另一個終端機列出等待中的請求:

sh
keymitt pending

再核准其中一個——keymitt 會顯示請求內容,請你輸入 yes——或拒絕它:

sh
keymitt approve 3f9c2a1b
keymitt deny 3f9c2a1b

approve 與 deny 必須在互動式終端機執行。終端機核准仍然是弱驗證:任何以你身分執行的程序都能寫入決定檔。 能用強驗證的地方,請優先用強驗證。

一定要強驗證的操作 ​

keymitt backup 會匯出所有密碼值,keymitt restore 可能改動你的政策,所以不論設定如何,兩者都不接受弱驗證。 請看備份與還原。

以 MIT 或 Apache-2.0 授權釋出。