Azure Chaos Studio 中的權限與安全性
Azure Chaos Studio 可讓您有系統地將錯誤插入 Azure 資源,進而改善服務復原能力。 錯誤插入有利於改善服務恢復能力,但也可能造成危險。 應用程式中的失敗可能會造成比預期更多的影響,並讓惡意執行者有機會滲透您的應用程式。
Chaos Studio 具有強固的權限模型,可防止意外或防止不良執行者執行錯誤。 本文介紹了解如何透過使用 Chaos Studio 保護成為錯誤插入目標的資源。
如何限制使用 Chaos Studio 插入錯誤的功能?
Chaos Studio 有三種安全性層級,協助您控制資源發生錯誤插入的方式和時機:
首先,混沌實驗是部署至區域、資源群組和訂用帳戶的 Azure 資源。 使用者必須具有適當的 Azure Resource Manager 權限,才能建立、更新、啟動、取消、刪除或檢視實驗。
每項權限都是一項 Resource Manager 作業,可精細地指派給身分識別,或指派為具有萬用字元權限角色的一部分。 例如,Azure 中的參與者角色在指派範圍內具有
*/write
權限,其中包括Microsoft.Chaos/experiments/write
權限。當您試圖控制針對資源插入錯誤的能力時,最重要的是限制作業
Microsoft.Chaos/experiments/start/action
。 此作業開始了插入錯誤的混沌實驗。其次,混沌實驗有系統指派的受控識別或在資源上執行失敗的使用者指派的受控識別。 如果您選擇使用系統指派的受控識別進行實驗,則身分識別將在實驗建立時在您的 Microsoft Entra 租用戶中建立。 使用者指派的受控識別可以用於任何數量的實驗。
在混沌實驗中,您可以選擇在系統指派或使用者指派的受控識別選取上啟用自訂角色指派。 啟用此功能後,Chaos Studio 可以建立自訂角色,並將其指派給您的實驗身分識別 (在您的身分識別選取中還不存在),該角色包含任何必要的實驗動作功能。 如果混沌實驗使用的是使用者指派的受控識別,則 Chaos Studio 指派給實驗身分識別的任何自訂角色都將在實驗删除後保存。
如果您選擇手動授與實驗權限,則必須向所有目標資源授與其身分識別適當權限。 如果實驗身分識別對某個資源沒有適當權限,它就不能對該資源執行錯誤。
第三,每個資源都必須上線至 Chaos Studio 作為已啟用對應功能的目標。 如果執行錯誤的目標或功能不存在,實驗就會失敗,但不會影響資源。
使用者指派的受控識別
混沌實驗可以利用使用者指派的受控識別來取得足够的權限,從而在實驗的目標資源上插入錯誤。 此外,使用者指派的受控識別可以在 Chaos Studio 中的任何數量的實驗中使用。 要使用此功能,必須:
- 首先,在受控身分識別服務中建立使用者指派的受控識別。 此時,您可以為使用者指派的受控識別所需的權限,以執行混沌實驗。
- 其次,在建立混沌實驗時,從訂用帳戶中選取使用者指派的受控識別。 在此步驟中,可以選擇啟用自訂角色指派。 啟用此功能將根據實驗中包含的錯誤授與您的身分識別選取所需的任何權限。
- 第三,在將所有錯誤新增至混沌實驗中後,檢閱您的身分識別設定是否包含成功執行混沌實驗所需的所有動作。 如果沒有,請與系統管理員連絡以存取或編輯實驗的錯誤選取。
代理程式驗證
執行代理程式型錯誤時,必須在虛擬機器 (VM) 或虛擬機器規模集上安裝 Chaos Studio 代理程式。 代理程式會使用使用者指派的受控識別向 Chaos Studio 進行驗證,並使用代理程式設定檔建立與特定 VM 資源的關係。
當您為代理程式型錯誤上線 VM 或虛擬機器擴展集時,首先要建立代理程式目標。 代理程式目標必須具有對用於驗證之使用者指派的受控識別的參考。 代理程式目標包含代理程式設定檔識別碼,該識別碼在安裝代理程式時作為設定提供。 代理程式設定檔對每個目標而言都是唯一的,而且每個資源的目標都是唯一的。
Azure Resource Manager 作業和角色
Chaos Studio 具有下列作業:
作業 | 描述 |
---|---|
Microsoft.Chaos/targets/[Read,Write,Delete] | 取得、建立、更新或刪除目標。 |
Microsoft.Chaos/targets/capabilities/[Read,Write,Delete] | 取得、建立、更新或刪除功能。 |
Microsoft.Chaos/locations/targetTypes/Read | 取得所有目標型別。 |
Microsoft.Chaos/locations/targetTypes/capabilityTypes/Read | 取得所有功能類型。 |
Microsoft.Chaos/experiments/[Read,Write,Delete] | 取得、建立、更新或刪除混亂實驗。 |
Microsoft.Chaos/experiments/start/action | 啟動混沌實驗。 |
Microsoft.Chaos/experiments/cancel/action | 停止混亂實驗。 |
Microsoft.Chaos/experiments/executions/Read | 取得混亂實驗執行的執行狀態。 |
Microsoft.Chaos/experiments/executions/getExecutionDetails/action | 取得執行混亂實驗的詳細資料 (每個動作的狀態和錯誤)。 |
若要更精細地指派這些權限,您可以建立自訂角色。
網路安全性
與 Chaos Studio 的所有使用者互動皆透過 Azure Resource Manager 進行。 如果使用者啟動實驗,則實驗可能會根據錯誤與 Resource Manager 以外的端點互動:
- 服務導向失敗:大多數服務導向失敗是透過 Azure Resource Manager 執行的,不需要任何列入允許清單的網路端點。
- 服務導向 AKS Chaos Mesh 錯誤:使用 Chaos Mesh 的 Azure Kubernetes Service 之服務導向錯誤需要存取 AKS 叢集的 Kubernetes API 伺服器。 AKS 叢集的授權 Chaos Studio IP 位址中包含數個新增必要IP的方法。
- 代理程式型錯誤:若要使用代理程式型錯誤,代理程式需要存取 Chaos Studio 代理程式服務。 VM 或虛擬機器擴展集必須具有代理程式服務端點的輸出存取權,代理程式才能成功連線。 代理程式服務端點是
https://acs-prod-<region>.chaosagent.trafficmanager.net
。 您必須將<region>
預留位置取代為部署 VM 的區域。 範例是在美國東部的 VM 之https://acs-prod-eastus.chaosagent.trafficmanager.net
。 - 代理程式型私人網路:Chaos Studio 代理程式現在支援私人網路。 請參閱 Chaos 代理程式的私人網路。
服務標籤
服務標籤是一組 IP 位址前置詞,可以為網路安全性群組的輸入和輸出規則指派這些前置詞。 服務標籤會自動處理 IP 位址前置詞群組的更新,無須任何介入。 由於服務標籤主要啟用 IP 位址篩選,因此僅服務標籤並不足以保護流量。
您可以使用服務標籤明確允許 Chaos Studio 的輸入流量,而無需知道平台的 IP 位址。 Chaos Studio 的服務標籤是 ChaosStudio
。
服務標籤的限制是只能與具有公用 IP 位址的應用程式搭配使用。 如果資源只有一個私人 IP 位址,則服務標籤無法將流量路由至該資源。
使用案例
Chaos Studio 會針對數個使用案例使用服務標籤。
- 若要使用代理程式型錯誤,在客戶虛擬機器內執行的 Chaos Studio 代理程式必須與 Chaos Studio 後端服務通訊。 服務標籤可讓客戶將虛擬機器到 Chaos Studio 服務的流量加入允許清單。
- 若要使用需要
management.azure.com
命名空間外部通訊的特定錯誤,例如 Azure Kubernetes Service 的 Chaos Mesh 錯誤,流量來自 Chaos Studio 服務到客戶資源。 服務標籤可讓客戶將 Chaos Studio 服務到目標資源的流量加入允許清單。 - 客戶可以使用其他服務標籤做為網路安全性群組規則錯誤的一部分,以影響特定 Azure 服務的流量。
您可以在安全性規則中指定 ChaosStudio
服務標籤,以允許或拒絕 Chaos Studio 服務的流量,而不需要指定個別 IP 位址。
安全性考量
在評估及使用服務標籤時,請務必注意,這些標籤不會提供個別 IP 位址的細微控制,因此不應依賴做為保護網路的唯一方法。 其不會取代適當的網路安全性措施。
資料加密
Chaos Studio 預設會將所有資料加密。 Chaos Studio 只接受系統屬性的輸入,例如受控識別物件識別碼、實驗/步驟/分支名稱以及錯誤參數。 範例為網路連接埠範圍,以封鎖網路中斷連線錯誤。
這些屬性不應用來儲存敏感性資料,例如付款資訊或密碼。 如需 Chaos Studio 如何保護您資料的詳細資訊,請參閱 Azure 客戶資料保護。
客戶加密箱
加密箱讓您能夠在支援要求期間,可以控制是否要核准或拒絕 Microsoft 工程師存取您實驗資料的要求。
可以為混沌實驗資訊啟用加密箱,如果啟用了加密箱,則客戶將在訂用帳戶層級授與存取資料的權限。
深入了解適用於 Microsoft Azure 的客戶加密箱
下一步
既然您已了解如何保護混沌實驗,就已準備好: