GitLab Runner macOS 自動登入安全嗎?2026 驗收清單

寫給負責企業 macOS CI、Runner 維運與終端安全的人員,協助判斷自動登入是否符合節點安全要求。本文拆解工作階段、帳號權限、Shell executor、FileVault 與簽章憑證,並提供可逐項執行的放行檢查。

Runner 重開後沒有接下新工作,但主機看起來仍可連線。

判斷:不適合把 macOS 自動登入當成預設安全設定。 GitLab Runner 在 macOS 的服務模式會依賴使用者工作階段;啟用前應核對 FileVault 要求、執行帳號權限與作業信任範圍。若控制措施不符合安全政策,應調整節點與任務邊界,不要只為維持 Runner 在線而降低保護要求。

適合企業 IT 負責人:確認 Mac CI 節點重啟後的恢復方式是否符合終端政策。
適合平台工程師:核對 Runner 服務模式、實際執行帳號與建構任務邊界。
適合安全負責人:檢查自動登入、FileVault、Keychain 與不可信程式碼的組合風險。

00先確認使用者工作階段與 Runner 狀態

為何 macOS Runner 會受使用者登入工作階段影響?

GitLab 說明,macOS Runner 可作為使用者層級的 LaunchAgent 運行;這類服務與登入的使用者工作階段相關。自動登入可能用於重啟後恢復工作階段,讓 Runner 重新可用,但它只處理登入條件,不能證明服務設定正確、工作已能執行,或主機已符合安全要求。請對照GitLab 的 macOS Runner 服務安裝說明和macOS 環境設定文件確認實際模式。

驗收時要把以下狀態分開記錄,不能把「主機可連線」直接當作「CI 已恢復」:

狀態 要核對的證據 不能據此推定
磁碟已解鎖 開機後是否完成磁碟解鎖,以及是否符合組織的加密政策 使用者已登入
使用者已登入 目標帳號的桌面工作階段是否存在 LaunchAgent 正常運行
LaunchAgent 已載入 服務是否以預期帳號啟動,設定是否指向正確 Runner Runner 已能接收工作
Runner 在線 控制端狀態及節點端服務紀錄一致 建構、測試或簽章工作成功
代表性工作成功 受控測試工作完成,且輸出與紀錄可核對 不同信任來源的工作已隔離

架構分析:自動登入只會改變使用者工作階段的恢復方式,並不會自動修復 Runner 註冊、服務設定或工作環境。企業若採用此方式,應在隔離測試節點執行重啟測試,逐項記錄上述狀態及負責處理失敗的人員。

01盤點執行帳號的權限範圍

Runner 執行帳號能接觸到的資源,才是判斷節點風險的實際起點。請從帳號與作業紀錄確認它可讀取哪些專案目錄、使用哪些開發工具、存取哪些網路服務,以及能否讀取使用者資料或修改系統設定。只查看 Runner 設定檔,無法替代對實際作業身份的核驗。

對照任務需求檢查帳號是否擁有不必要的管理權限;如果建構或測試工作只需一般使用者權限,就不應為了省去權限問題而直接擴大權限。將檢查結果記錄為「必要權限、核准依據、可讀取資源、例外項目」,並以實際作業執行身份和紀錄佐證,而不是只依賴團隊口頭說明。

02劃清 Shell executor 與不同專案的邊界

Shell executor 能否隔離不同專案?

不能假設它會自動隔離不同專案。GitLab 文件指出,Shell executor 會在 Runner 主機上執行作業,隔離能力有限;因此,作業可觸及的主機資源與執行帳號權限必須一併評估。此限制是針對 Shell executor 的說明,不應延伸成所有 executor 都具有相同風險。可參閱GitLab Shell executor 的安全說明。

作業來源與信任程度 節點安排建議 放行前要確認
受控、可信的內部建構工作 可評估共用節點,但要限制帳號權限與可讀取資源 專案分配規則、執行身份及工作紀錄
外部貢獻或尚未審核的程式碼 不應與持有發布憑證的工作共用同一信任邊界 是否能觸及主機檔案、網路與憑證
不同信任等級的專案 視風險拆分 Runner 或承載節點 分配規則能否阻止不合適的工作落到敏感節點

以上是依 Shell executor 執行位置與隔離限制作出的架構建議,不是 GitLab 對每個企業環境的固定部署要求。若團隊無法證明不可信程式碼與敏感資源隔離,應先拆分承載或調整 Runner 分配,再考慮共用主機。

03核對 FileVault 與重啟後的登入條件

FileVault 啟用時,Runner 能否在重啟後自動恢復?

不能只根據 Runner 的在線紀錄作出保證。Apple 說明,在啟用 FileVault 的情況下,自動登入設定可能無法使用;實際恢復結果須依裝置設定與組織政策測試。請查看Apple 關於 Mac 自動登入設定的說明及FileVault 管理文件,並以企業裝置上的實測為準。

不要為了讓 Runner 開機後自動接單,就擅自關閉組織要求的磁碟保護。先確認磁碟解鎖、使用者登入、LaunchAgent 載入及 Runner 在線各自的條件;若安全政策與登入恢復方式衝突,應由安全與平台團隊共同決定是否改用人工恢復、調整節點用途或重新設計工作分配。

04管理 Keychain 與簽章憑證的可讀取範圍

iOS 簽章憑證和 Keychain 應放在哪類 Runner?

應放在經核准、且信任邊界能滿足簽章需求的建構環境中,不能因為一般測試工作共用同一帳號,就讓所有作業都能讀取發布憑證。先盤點 Runner 帳號能存取的 Keychain、憑證、私密金鑰及發布憑證,再確認哪些工作確實需要它們。

將簽章工作與一般編譯、測試工作分開驗收:限制可執行簽章工作的專案與來源,檢查憑證使用紀錄,並確認工作結束後不會把敏感材料留在可被後續作業讀取的位置。這是依最小權限與 Shell executor 主機執行特性提出的架構建議;若無法證明工作來源可信、帳號權限受限且使用紀錄可追查,就不應在共用節點放行敏感簽章工作。

05以重啟測試與證據清單決定是否放行

測試應在隔離環境進行,使用不含正式發布憑證的代表性工作;確認恢復流程後,再由安全與平台負責人審核是否能進入正式環境。若執行至任何一項無法提供證據,應暫緩放行或縮小節點用途。

  • [ ] 記錄 Runner 的服務模式、LaunchAgent 所屬帳號與預期啟動條件。
  • [ ] 核對實際作業身份,列出它可讀取的目錄、工具、網路資源及管理權限。
  • [ ] 標記各專案與工作來源的信任等級,確認 Runner 分配規則不會讓未審核工作接觸敏感節點。
  • [ ] 依組織政策確認 FileVault 狀態與自動登入限制;不得以關閉必要的磁碟保護作為未經核准的恢復手段。
  • [ ] 列出 Keychain、簽章憑證及發布資料的讀取權限,並核對使用紀錄是否可追查。
  • [ ] 在隔離節點重啟,分別記錄磁碟解鎖、使用者登入、Runner 狀態與代表性建構結果。
  • [ ] 指定恢復失敗時的處置責任、人工介入方式及暫停接收工作的條件。

實際測試時,先以低風險工作確認使用者工作階段與 Runner 狀態,再執行代表性建構;兩者都通過,才進入正式放行評估。若登入成功但 Runner 未接單,或 Runner 在線但工作失敗,應分別調查服務狀態與作業環境,不要用一次成功的登入畫面代替完整驗收。

對企業而言,個人開發機兼作建構節點,容易遇到使用者離線時工作中斷、工作與個人資料混在同一環境,以及憑證權限不易集中審核等問題;自購專用 Mac 可增加控制權,但仍須自行負責維護、恢復測試與節點管理。若需求是限期試跑、短期擴充或建立獨立測試環境,租用遠端 Mac 可能比把工作長期塞進開發者的日常設備更合適;但需要長期固定負載或實體周邊的團隊,仍應評估自購。評估 NUKCLOUD 時,可先檢視服務資訊,再透過支援說明核對實際提供的存取方式、登入恢復條件與交付資料,並以本文清單逐項驗收。