ARM 範本與 Bicep 如何實現基礎設施即程式碼?
基礎設施即程式碼(Infrastructure as Code,IaC)把 Azure 資源的目標設定寫成可版本化、審閱及重複部署的宣告。ARM 範本是 Azure Resource Manager 的 JSON 格式;Bicep 提供較精簡的 Azure 專用語法,部署前會轉譯成 ARM 範本。
ARM 範本、Bicep 與 Azure Resource Manager 的關係
Azure Resource Manager 是 Azure 的部署及管理服務。ARM 範本以 JSON 定義資源、屬性、參數、變數、相依關係及輸出;Bicep 則是宣告式語言,提供型別檢查、模組及較簡潔的語法。Bicep 部署時會轉譯為 ARM 範本,因此兩者使用同一 Resource Manager 控制平面,而不是兩套互不相容的平台。
Microsoft 指出,Bicep 可立即使用 ARM 範本支援的資源類型及 API 版本。這不代表每個 API 版本的每項屬性都適合生產環境;仍須選定 API 版本、查閱資源提供者文件,並在非生產訂閱驗證。
宣告式及可重複
描述目標狀態,由 Resource Manager 按相依關係協調部署;相同範本可配合參數重複使用。
模組化
把網絡、運算、儲存及監控拆成責任清晰的 Bicep 模組,降低重複及環境漂移。
版本及審批
將原始碼及非機密參數納入版本控制,以 pull request、測試及部署記錄保存責任鏈。
增量模式、完整模式與刪除風險
增量模式會新增或更新範本列出的資源,但不會刪除同一資源群組內未列出的其他資源;不過,範本再次部署時仍會按所提交的資源屬性套用目標狀態,因此不可把未指定屬性一概理解為「保持不變」。完整模式可能刪除未列在範本內的資源。Microsoft 現行文件建議使用增量模式,並在需要管理資源生命週期及受控刪除時評估 deployment stacks。
what-if 是重要預覽工具,但不是保證。生產變更仍應具備最小權限、同儕審閱、政策控制、資源鎖、資料備份及可演練的回復程序。
秘密與安全設定
不要把密碼、金鑰或連接字串硬編碼於 Bicep、ARM JSON、一般參數檔或命令列。Microsoft 文件提醒,命令列值可能出現在部署記錄;安全參數只能避免值寫入部署歷程,仍須限制誰能讀取原始碼、參數來源及 Key Vault。優先使用受控身分及 RBAC,並按部署情境由 Key Vault 或 CI/CD 秘密儲存提供敏感值。
NIST SP 800-128 將安全設定管理視為持續流程。IaC 因而應配合基線、變更控制、影響分析、監察及稽核,而不是只追求自動部署速度。