什麼是代理程式功能 (Capabilities)
代理程式功能包括代理程式所在主機(或容器)所有環境變數、代理程式執行時所設定的變數與已經安裝的建置套件。如果功能值有變更,則必須重新啟動代理程式以重新讀取(或設定)相關變數。同樣的,在代理程式上安裝新軟體或套件,您也必須重新啟動代理程式,讓新功能顯示在代理程式集區中,讓 Build 得以執行。
你可以在 Organization/Project Setting > Agent Pool > (任一 Self-Hosted Agent Pool) > 選擇任一 Agent > 選擇 Capability
舉例來說,如你需要建置 .NET Framework 或 .NET 應用程式,即需要在代理程式所在環境安裝相關的 Build Tools 或開發者工具,並且重新啟動代理程式,此代理程式才具有編譯 .NET 應用程式的能力。當 Pipeline 被觸發,則會挑選具有功能屬性 (Capabilities) 內有 .NET Build Tools 的代理程式執行編譯,否則則會顯示無可用代理程式而持續等待。
雖然代理程式功能屬性頁面可以讓開發維運人員了解那些代理程式可以執行那些工作,但這些環境變數可能包含一些敏感資訊,如:HTTP_Proxy、Token 或 Token File,若不小心洩漏可能會造成資安議題。本篇文章將簡單介紹如何隱藏這些敏感資訊以避免外洩。
設定方法
設定方式相當簡單,您只需要在 Agent 所在的環境 (可能是 VM,也可能是 Container) 設定環境變數 VSO_AGENT_IGNORE、內容值以逗號 (,) 分隔,重啟代理程式後即可以隱藏這些敏感資訊。
Linux 或 Image (dockerfile內) 設定範例如下
export VSO_AGENT_IGNORE=AZP_TOKEN,AZP_TOKEN_FILE
Windows 上可以在系統環境變數設定
重新啟動代理程式後,在代理程式功能屬性畫面上即看不到 AZP_TOKEN 與 AZP_TOKEN_FILE 屬性,完成了隱藏 Azure Devops Agent 功能屬性。