Azure VM Image Builder 的隔離式映像組建
隔離式映像建置是 Azure VM Image Builder (AIB) 的功能。 將 VM 映像自訂/驗證的核心流程從共用平台基礎結構轉換為訂用帳戶中的專用 Azure 容器執行個體 (ACI) 資源,從而提供計算和網路隔離。
隔離式映像組建的優點
隔離式映像建置藉由將組建 VM 的網路存取限制為僅限訂用帳戶,來啟用深度防禦。 隔離式映像建置也會為您提供更高的透明度,方法是允許您檢查 AIB 完成的處理,以自訂/驗證您的 VM 映像。 此外,隔離式映像組建可簡化即時建置記錄的檢視。 具體而言:
計算隔離: 隔離式映像建置會在訂用帳戶的 ACI 資源中執行映像建置處理的主要部分,而不是在 AIB 的共用平台資源上執行。 ACI 會為每個容器群組提供 Hypervisor 隔離,以確保容器會在隔離中執行,而不會共用核心。
網路隔離:隔離式映像建置會移除組建 VM 與 AIB 服務後端元件之間的所有直接網路 WinRM/ssh 通訊。
- 如果您要佈建 AIB 範本,但沒有自己的組建 VM 子網路,則映像建置階段的暫存資源群組中將不再佈建公用 IP 位址資源。
- 如果您要使用組建 VM 的現有子網路佈建 AIB 範本,則您的組建 VM 與 AIB 後端平台資源之間將不再設定 Private Link 型通訊通道。 相反地,ACI 與組建 VM 資源之間會設定通訊通道,這兩者都位於訂用帳戶的暫存資源群組中。
- 從 API 版本 2024-02-01 開始,除了組建 VM 的子網路之外,您還可以指定第二個子網路來部署 ACI。 若已指定,AIB 會在此子網路上部署 ACI,而且不需要 AIB 在 ACI 與組建 VM 之間設定 Private Link 型通道。 如需第二個子網路的詳細資訊,請參閱這裡一節。
透明度: AIB 建置在 HashiCorp Packer上。 隔離式映像組建會在訂用帳戶中的 ACI 中執行 Packer,這可讓您檢查 ACI 資源及其容器。 同樣地,在您的訂用帳戶中擁有整個網路通訊管線,可讓您檢查所有網路資源、其設定及其額度。
更好的實時記錄檢視: AIB 會將自訂記錄寫入訂用帳戶中預備資源群組中的儲存體帳戶。 隔離式映像建置為您提供另一種方式,直接在 Azure 入口網站中追蹤相同的記錄,這可藉由瀏覽至 ACI 資源中的 AIB 容器來完成。
注意
若要在映像建置期間存取即時記錄,或在建置完成之後存取自訂和驗證記錄,請參閱疑難排解指南。
網路拓撲
隔離式映像建置會在訂用帳戶的暫存資源群組中同時部署 ACI 和組建 VM。 若要讓 AIB 自訂/驗證您的映像,ACI 中執行的容器執行個體必須具有組建 VM 的網路路徑。 根據您的自訂網路需求和原則,您可以設定 AIB 以針對此目的使用不同的網路拓撲:
不要自備組建 VM 子網路
- 您可以選取此拓撲,方法是不指定映像範本中的
vnetConfig
欄位,或指定該欄位,但不含subnetId
和containerInstanceSubnetId
子欄位。 - 在此情況下,AIB 會在暫存資源群組中部署虛擬網路,以及兩個子網路和網路安全性群組 (NSG)。 其中一個子網路用來部署 ACI,而另一個子網路則用來部署組建 VM。 NSG 會設定為允許兩個子網路之間的通訊。
- 在此情況下,AIB 不會部署公用 IP 資源或 Private Link型通訊管線。
自備組建 VM 子網路,但不自備 ACI 子網路
- 您可以選取此拓撲,方法是指定
vnetConfig
欄位以及subnetId
子欄位,但不是映像範本中的containerInstanceSubnetId
子欄位。 - 在此情況下,AIB 會在暫存資源群組中部署臨時虛擬網路,以及兩個子網路和網路安全性群組 (NSG)。 其中一個子網路用來部署 ACI,而另一個子網路則用來部署私人端點資源。 組建 VM 會部署在您指定的子網路中。 Private Link 型通訊管線 (由私人端點、Private Link 服務、Azure Load Balancer 和 Proxy 虛擬機組成) 也會部署在暫存資源群組中,以協助 ACI 子網路與組建 VM 子網路之間的通訊。
自備組建 VM 子網路並自備 ACI 子網路
- 您可以選取此拓撲,方法是指定
vnetConfig
欄位以及映像範本中的subnetId
和containerInstanceSubnetId
子欄位。 從 API 版本 2024-02-01 開始提供此選項 (和子欄位containerInstanceSubnetId
)。 您也可以更新現有的範本,以使用此拓撲。 - 在此情況下,AIB 會將組建 VM 部署到指定的組建 VM 子網路,並將 ACI 部署到指定的 ACI 子網路。
- AIB 不會在暫存資源群組中部署任何網路資源,包括公用IP、虛擬網路、子網路、網路安全性群組、私人端點、Private Link 服務、Azure Load Balancer 和 Proxy 虛擬機器。 如果您有配額限制或不允許部署這些資源的原則,則可以使用此拓撲。
- ACI 子網路必須符合特定條件,才能允許其與隔離式映像建置搭配使用。
您可以在範本參考中看到這些欄位的詳細資料。 這裡會詳細討論網路選項。
回溯相容性
隔離式映像建置是平台層級變更,不會影響 AIB 的介面。 因此,您現有的映像範本和觸發程式資源會繼續運作,而且您部署這些類型的新資源的方式不會有任何變更。 如果您想要使用允許自備 ACI 子網路的網路拓撲,則必須建立新的範本或更新現有的範本。
您的映像建置會自動移轉至隔離式映像建置,而且您不需要採取任何動作即可加入。 此外,自訂記錄也會繼續在儲存體帳戶中提供。
視映像範本中指定的網路拓撲而定,您可能會觀察到暫存資源群組中暫時出現一些新資源 (例如,ACI、虛擬網路、網路安全性群組和私人端點),而某些其他資源不再出現 (例如公用 IP 位址)。 如先前所述,這些臨時資源只存在於建置期間,且之後 AIB 會將其刪除。
重要
請確定您的訂用帳戶已向 Microsoft.ContainerInstance provider
註冊:
- Azure CLI:
az provider register -n Microsoft.ContainerInstance
- PowerShell:
Register-AzResourceProvider -ProviderNamespace Microsoft.ContainerInstance
成功註冊訂用帳戶之後,請確定您的訂用帳戶中沒有任何 Azure 原則會拒絕部署 ACI 資源。 只允許有限資源類型集 (不包括 ACI) 的原則將會導致隔離式映像建置失敗。
請確定您的訂用帳戶有足夠的資源配額,因為部署 ACI 資源需要這些資源。
重要
視映像範本中指定的網路拓撲而定,AIB 可能需要在訂用帳戶的暫存資源群組中部署臨時網路相關資源。 請確定沒有任何 Azure 原則拒絕在資源群組中部署這類資源 (具有子網路的虛擬網路、網路安全性群組、私人端點)。
如果您有將 DDoS 保護方案套用至任何新建立虛擬網路的 Azure 原則,請放寬資源群組的原則,或確定範本受身份控識別具有加入方案的權限。 或者,您可以使用不需要透過 AIB 部署新虛擬網路的網路拓撲。
重要
使用 AIB 時,請務必遵循所有最佳做法。
注意
AIB 正在將此變更推出至所有位置和客戶。 其中一些詳細資料 (特別是關於部署新的網路相關資源) 可能會隨著流程根據服務遙測和意見反應進行微調而變更。 若有任何錯誤,請參閱疑難排解指南。