延伸模組安全性
本文針對已啟用 Azure Arc 的伺服器描述 VM 延伸模組的基本概念,並詳細說明如何自訂延伸模組設定。
延伸模組基本資料
已啟用 Azure Arc 之伺服器的 VM 延伸模組是選擇性附加元件,可啟用其他功能,例如監視、修補程式管理和指令碼執行。 延伸模組是由 Microsoft 發行並從 Azure Marketplace 中選取第三方,而且儲存在受 Microsoft 管理的儲存體帳戶中。 所有延伸模組都會在發佈過程中掃描惡意程式碼。 已啟用 Azure Arc 的伺服器延伸模組與適用於 Azure VM 的延伸模組相同,可確保作業環境間的一致性。
除非您已設定私人端點,否則延伸模組會在安裝或升級時直接從 Azure 儲存體下載 (*.blob.core.windows.net
)。 儲存體帳戶會定期變更,且無法事先預測。 使用私人端點時,會改為透過 Azure Arc 服務的區域性 URL 來代理延伸模組。
數位簽署的類別目錄檔案會與延伸模組套件分開下載,而且在延伸模組管理員開啟或執行延伸模組套件之前,用於驗證每個延伸模組的完整性。 如果針對延伸模組下載的 ZIP 檔案不符合類別目錄檔案中的內容,則會中止延伸模組作業。
延伸模組可能會採取設定來自訂或設定安裝,例如 Proxy URL 或 API 金鑰,以將監視代理程式連線到其雲端服務。 延伸模組設定有兩種:一般設定和受保護的設定。 受保護的設定不會保存在 Azure 中,而且會在本機電腦上進行待用加密。
所有延伸模組作業都是透過 API 呼叫、CLI、PowerShell 或入口網站動作源自 Azure。 此設計可確保在伺服器上安裝、更新或升級延伸模組的任何動作都會記錄在 Azure 活動記錄中。 Azure Connected Machine Agent 允許在本機移除延伸模組,以便進行疑難排解和清除。 不過,如果在本機移除延伸模組,且服務仍預期機器會安裝延伸模組,則會在下次延伸模組管理員與 Azure 同步處理時重新安裝。
指令碼執行
延伸模組管理員可使用自訂指令碼延伸模組或執行命令,用於在機器上執行指令碼。 根據預設,這些指令碼會在延伸模組管理員的使用者內容 (Windows 上的本機系統或 Linux 上的根目錄) 中執行,這表示這些指令碼將不受限制地存取機器。 如果您不想使用這些功能,您可使用允許清單或封鎖清單予以封鎖。 下一節會提供範例。
本機代理程式安全性控制
從代理程式 1.16 版開始,您可以選擇性地限制可在伺服器上安裝的延伸模組,並停用來賓設定。 當由於單一目的 (例如收集事件記錄檔) 將伺服器連線到 Azure 且不允許在伺服器上使用其他管理功能時,這些控制項會非常有用。
若要設定這些安全性控制,只能在伺服器上執行命令,且無法從 Azure 修改。 此方法會在使用 Azure Arc 啟用遠端管理案例時保留伺服器管理員的用意,但這也表示如果您稍後決定變更設定,會比較困難。 此功能適用於敏感的伺服器 (例如,Active Directory 網域控制站、處理付款資料的伺服器,以及受限於嚴格變更控制措施的伺服器)。 在其他大部分情況下,不需要修改這些設定。
允許清單和封鎖清單
Azure Connected Machine Agent 支援允許清單和封鎖清單,以限制哪些延伸模組可在您的電腦上安裝。 允許清單是排除的,這表示只能安裝清單中包含的特定延伸模組。 封鎖清單是排除的,這表示可安裝除了這些延伸模組以外的任何延伸模組。 允許清單優於封鎖清單,因為它們本質上會封鎖未來可用的任何新延伸模組。 允許清單和封鎖清單會根據每部伺服器在本機設定。 這可確保 Azure 中沒有任何人 (甚至是具有擁有者或全域管理員權限的使用者) 可藉由嘗試安裝未經授權的延伸模組來覆寫您的安全性規則。 如果有人嘗試安裝未經授權的延伸模組,延伸模組管理員將會拒絕安裝,並將延伸模組安裝報告標示失敗傳送給 Azure。 允許清單和封鎖清單可以在安裝代理程式之後隨時進行設定,包括代理程式連線到 Azure 之前。
如果代理程式上未設定允許清單或封鎖清單,則允許所有延伸模組。
最安全的選項是明確允許您預期要安裝的延伸模組。 系統會自動封鎖任何未在允許清單中的延伸模組。 若要將 Azure Connected Machine 代理程式設定為只允許適用於 Linux 的 Azure 監視器代理程式,請在每部伺服器上執行下列命令:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
以下範例封鎖清單會封鎖具有執行任意指令碼功能的所有延伸模組:
azcmagent config set extensions.blocklist “Microsoft.Cplat.Core/RunCommandHandlerWindows, Microsoft.Cplat.Core/RunCommandHandlerLinux,Microsoft.Compute/CustomScriptExtension,Microsoft.Azure.Extensions/CustomScript,Microsoft.Azure.Automation.HybridWorker/HybridWorkerForWindows,Microsoft.Azure.Automation.HybridWorkerForLinux,Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent, Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux”
指定延伸模組及其發行者和類型,並以正斜線 /
分隔。 請參閱文件中的最常見的延伸模組清單,或在入口網站、Azure PowerShell 或 Azure CLI 中列出伺服器已安裝的 VM 延伸模組。
該資料表會描述針對已設定允許清單或封鎖清單的代理程式執行延伸模組作業時的行為。
作業 | 在允許清單中 | 在封鎖清單中 | 在允許清單和封鎖清單中 | 不在任何清單中,但已設定允許清單 |
---|---|---|---|---|
安裝擴充功能 | 允許 | 已封鎖 | 封鎖 | 已封鎖 |
更新 (重新設定) 延伸模組 | 允許 | 已封鎖 | 封鎖 | 已封鎖 |
升級延伸模組 | 允許 | 已封鎖 | 封鎖 | 已封鎖 |
刪除延伸模組 | 允許 | 允許 | 允許 | 允許 |
重要
如果在設定允許清單或封鎖清單之前,延伸模組即已安裝在伺服器上,則不會自動移除。 必須由您負責從 Azure 刪除延伸模組,以便將它從電腦完全移除。 為適應這種情況,系統一律會接受刪除要求。 一旦刪除,允許清單和封鎖清單即會判斷是否要允許未來的安裝嘗試。
從代理程式 1.35 版本開始,有一個特殊的允許清單值 Allow/None
,會指示延伸模組管理員執行,但不允許安裝任何延伸模組。 這是使用 Azure Arc 傳遞 Windows Server 2012 擴充安全性更新 (ESU) 而不打算使用任何其他延伸模組時的建議設定。
azcmagent config set extensions.allowlist "Allow/None"
Azure 原則也可用來限制可安裝的延伸模組。 如果您需要變更已核准的延伸模組清單,Azure 原則的優點是可在雲端中設定,而不需要在每部個別的伺服器上變更。 不過,任何有權修改原則指派的人都可以覆寫或移除此保護。 如果您選擇使用 Azure 原則來限制延伸模組,請務必檢閱組織中哪些帳戶有權編輯原則指派並已備妥適當的變更控制措施。
鎖定電腦最佳做法
使用縮減的功能組來設定 Azure Connected Machine 代理程式時,請務必考慮某人可能用來移除這些限制的機制並實作適當控制。 能夠以管理員或根使用者身分在伺服器上執行命令的任何使用者,都可以變更 Azure Connected Machine 代理程式設定。 延伸模組和來賓設定原則會在伺服器上的特殊權限內容中執行,因此可以變更代理程式設定。 如果您套用本機代理程式安全性控制來鎖定代理程式,Microsoft 建議下列最佳做法,以確保只有本機伺服器管理員可以更新代理程式設定:
- 盡可能使用延伸模組允許清單,而不是封鎖清單。
- 請勿在延伸模組允許清單中納入自訂指令碼延伸模組,以防止執行可能會變更代理程式設定的任意指令碼。
- 停用來賓設定以防止使用可變更代理程式設定的自訂來賓設定原則。
設定監視和安全性的案例範例
使用 Azure Arc 透過 Azure 監視器和 Microsoft Sentinel 來監視伺服器,並使用適用於雲端的 Microsoft Defender 來保護這些伺服器,是很常見的事。 本節會包含如何鎖定代理程式以便僅支援監視和安全性案例的範例。
僅 Azure 監視器代理程式
在您的 Windows 伺服器上,在提高權限的命令主控台中執行下列命令:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorWindowsAgent"
azcmagent config set guestconfiguration.enabled false
在您的 Linux 伺服器上,執行下列命令:
sudo azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
sudo azcmagent config set guestconfiguration.enabled false
僅 Log Analytics 和相依性 (Azure 監視器 VM 見解)
此設定適用於舊版 Log Analytics 代理程式和相依性代理程式。
在 Windows 伺服器上,在提高權限的主控台中執行下列命令:
azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentWindows"
azcmagent config set guestconfiguration.enabled false
在您的 Linux 伺服器上,執行下列命令:
sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentLinux"
sudo azcmagent config set guestconfiguration.enabled false
監視和安全性
適用於雲端的 Microsoft Defender 可在伺服器上部署延伸模組,以識別伺服器上易受攻擊的軟體,並啟用適用於端點的 Microsoft Defender (如果已設定)。 適用於雲端的 Microsoft Defender 也會使用來賓設定來執行其法規合規性功能。 由於自訂來賓設定指派可用來復原代理程式限制,因此,您應該仔細評估是否需要法規合規性功能,進而在電腦上啟用來賓設定。
在您的 Windows 伺服器上,在提高權限的命令主控台中執行下列命令:
azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Qualys/WindowsAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Windows,Microsoft.Azure.AzureDefenderForSQL/AdvancedThreatProtection.Windows"
azcmagent config set guestconfiguration.enabled true
在您的 Linux 伺服器上,執行下列命令:
sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Qualys/LinuxAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Linux"
sudo azcmagent config set guestconfiguration.enabled true
代理程式模式
在監視和安全性案例中設定本機安全性控制的簡單方式,就是使用代理程式 1.18 版和更新版本提供的監視模式。 模式是由 Microsoft 所維護、預先定義的延伸模組允許清單和來賓設定代理程式設定。 隨著新的延伸模組可供使用,啟用監視案例時,Microsoft 會視需要更新允許清單和代理程式設定,以包含或排除新功能。
有兩個模式可供選擇:
- 完整 - 預設模式。 此模式允許所有代理程式功能。
- 監視 - 受限制的模式,會停用來賓設定原則代理程式,只允許使用與監視和安全性相關的延伸模組。
若要啟用監視模式,請執行下列命令:
azcmagent config set config.mode monitor
您可以使用下列命令來檢查代理程式的目前模式和允許的延伸模組:
azcmagent config list
在監視模式中,您無法修改延伸模組允許清單或封鎖清單。 如果您必須變更任一清單,請將代理程式變更回完整模式,並指定您自己的允許清單和封鎖清單。
若要將代理程式變更回完整模式,請執行下列命令:
azcmagent config set config.mode full
停用延伸模組管理員
如果您不需要搭配 Azure Arc 使用延伸模組,您也可完全停用延伸模組管理員。 您可使用下列命令來停用延伸模組管理員 (在每部電腦上本機執行):
azcmagent config set extensions.enabled false
停用延伸模組管理員不會移除已經安裝在伺服器上的任何延伸模組。 即使停用延伸模組管理員,裝載在各自 Windows 或 Linux 服務中的延伸模組 (例如 Log Analytics 代理程式) 仍可繼續執行。 如果延伸模組管理員已停用,則延伸模組管理員本身裝載的其他延伸模組 (例如 Azure 監視器代理程式) 不會執行。 您在停用延伸模組管理員之前,應先移除任何延伸模組,以確保伺服器不會繼續執行任何延伸模組。