Použití ověřování Microsoft Entra s chybami Chaos Studio AKS
Přehled
Azure Chaos Studio se integruje se službou Chaos Mesh za účelem spouštění chyb v clusterech Azure Kubernetes Service (AKS), jako je odebrání podů, zatížení procesoru, přerušení sítě a další. Ke spuštění těchto chyb můžete použít dva různé typy ověřování, a to v závislosti na konfiguraci a předvolbách, ať už místních účtů, nebo ověřování Microsoft Entra spravované službou AKS:
- Místní účty Kubernetes se ukládají na server rozhraní Kubernetes API a dají se použít k ověřování a autorizaci požadavků na cluster. Další informace o místních účtech najdete na této stránce: Správa místních účtů.
- Ověřování Microsoft Entra spravované službou AKS umožňuje přihlášení a správu oprávnění ke clusteru pomocí přihlašovacích údajů Microsoft Entra a Azure RBAC. Zjistěte, jak povolit ověřování Microsoft Entra spravované službou AKS.
Poznámka:
Oprávnění místního účtu udělují přístup, pokud jsou přihlašovací údaje na klientském počítači, zatímco ověřování Microsoft Entra spravované službou AKS umožňuje více vymezené přiřazení a správu oprávnění. Přečtěte si další informace o tomto osvědčeném postupu: Osvědčené postupy pro zabezpečení a upgrady clusteru.
Chaos Studio dříve podporovalo pouze použití služby Chaos Mesh s místními účty, ale verze 2.2 všech chyb AKS teď podporují místní účty i ověřování Microsoft Entra.
Upozorňující
Pokud se zobrazí chyba Object reference not set to an instance of an object
za běhu, jedná se o známou chybu s chybami verze 2.2. Očekává se, že oprava dokončí nasazení na začátku ledna 2025. K tomu dochází při použití nové verze chyby AKS Chaos Mesh (2.2) v clusteru s povolenými místními účty. Alternativním řešením je použít chyby v2.1, které jsou v uživatelském rozhraní označené jako "(zastaralé)", nebo použít cluster AKS s povoleným ověřováním Entra.
Aktualizace cílů
Cíle (Microsoft.Chaos/targets
) představují jiný prostředek Azure v modelu prostředků chaos studia, takže můžete snadno určit, jestli je určitý prostředek povolený pro injektáž chyb a jaké chyby se proti němu můžou spustit. V tomto případě cíl představuje cluster AKS, který chcete ovlivnit.
Pokud nasazujete cluster AKS jako nový cíl chaosového studia na webu Azure Portal, budou nové verze chyb automaticky dostupné.
Pokud chcete použít novou verzi selhání u existujícího cíle AKS, musíte cíl aktualizovat. Můžete to udělat jedním ze dvou způsobů:
- Zakažte a znovu povolte cílový prostředek.
- Pokud to chcete udělat na webu Azure Portal, přejděte do podokna Cíle v rozhraní portálu Chaos Studio, vyberte příslušné clustery AKS a vyberte Zakázat cíle. Počkejte 1 až 2 minuty nebo na potvrzení oznámení, pak vyberte Povolit cíle>povolit cíle přímé služby a projděte obrazovku Zkontrolovat a vytvořit.
- Aktualizujte povolené funkce.
- Pokud to chcete udělat na webu Azure Portal, přejděte do podokna Cíle v aplikaci Chaos Studio, vyhledejte clustery AKS, vyberte Spravovat akce a ujistěte se, že jsou povolené všechny možnosti. Výběrem možnosti Uložit dokončete aktualizaci.
Pokud používáte rozhraní API nebo příkazový řádek, postupujte podle pokynů v tématu Vytvoření experimentu chaosu, který pomocí Azure CLI používá chybu Chaos Mesh, abyste zajistili, že jsou povolené nejnovější dostupné funkce.
Vytvoření nového experimentu
Když vytvoříte nový experiment, který používá chyby AKS Chaos Mesh na webu Azure Portal, může se zobrazit dvě verze každé chyby, například "AKS Chaos Mesh DNS Chaos" a "AKS Chaos Mesh DNS Chaos (zastaralé)". Vyberte první možnost, nikoli zastaralou možnost.
Pokud po výběru chyby nevidíte cluster AKS jako možný cíl, možná budete muset v clusteru povolit novou verzi chyby. Přejděte na stránku Cíle, najděte cluster AKS a vyberte Spravovat akce a před výběrem možnosti Uložit se ujistěte, že jsou vybrané všechny možnosti.
Aktualizace existujícího experimentu
Pokud chcete aktualizovat existující experiment, postupujte podle jedné z těchto dvou metod.
- Otevřete experiment, který obsahuje alespoň jednu chybu AKS Chaos Mesh.
- Vyberte Možnost Upravit v chybě a zkopírujte hodnotu parametru
jsonSpec
do schránky. - Otevřete rozevírací seznam pro výběr chyby a vyberte verzi požadované chyby bez
(deprecated)
označení. jsonSpec
Vložte z schránky do pole parametru.- Uložte chybu a experiment.
Oprávnění
Chaos Studio potřebuje oprávnění ke spouštění chyb ve vašich prostředcích.
Při vytváření experimentu na webu Azure Portal můžete volitelně vybrat Povolit vlastní vytvoření role a přiřazení , aby se chaos Studio pokusil přiřadit potřebná oprávnění ke spravované identitě experimentu.
Pokud se rozhodnete nepoužívat vlastní vytváření rolí nebo nepoužíváte Azure Portal, musíte po vytvoření experimentu udělat jednu z těchto věcí :
- Roli uživatele clusteru Azure Kubernetes Service RBAC a Role uživatele clusteru Azure Kubernetes Service ručně přiřaďte spravované identitě experimentu (přiřazené systémem nebo přiřazené uživatelem).
- Ručně vytvořte vlastní roli, která umožňuje úplný seznam operací potřebných v operacích RBAC.
- Ruční vytvoření vlastní role umožňující částečný seznam potřebných operací a nasazení vlastního souboru YAML. Tento proces je podrobně popsaný v volitelném přístupu s nejnižšími oprávněními.
Operace RBAC
Následující operace RBAC se používají pro chyby AKS Chaos Mesh:
- Akce:
- Microsoft.ContainerService/managedClusters/read
- Akce dat:
- Microsoft.ContainerService/managedClusters/namespaces/read
- Microsoft.ContainerService/managedClusters/pods/read
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/delete
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/bind/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/escalate/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/delete
Volitelný přístup s nejnižšími oprávněními
Pokud nechcete udělit úplný přístup ClusterRole a ClusterRoleBinding pro čtení a zápis k identitě experimentu Chaos Studio, můžete ručně vytvořit potřebnou roli a vazbu pro Chaos Mesh. To je nezbytné pro Chaos Mesh, aby se zajistilo, že experiment má oprávnění cílit na zadaný obor názvů tenanta.
Pro tuto volitelnou konfiguraci existují dva kroky.
Při přiřazování oprávnění ke spravované identitě experimentu použijte vlastní roli s omezenou sadou oprávnění. Požadovaná oprávnění jsou:
- Akce:
- Microsoft.ContainerService/managedClusters/read
- Akce dat:
- Microsoft.ContainerService/managedClusters/namespaces/read
- Microsoft.ContainerService/managedClusters/pods/read
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- Akce:
Nasaďte následující konfiguraci YAML pro vytvoření role a vazby. Další informace o nasazeních najdete v dokumentaci K AKS: Nasazení clusteru Azure Kubernetes Service (AKS) pomocí webu Azure Portal.
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: role-cluster-manager-pdmas rules: - apiGroups: - chaos-mesh.org resources: [ "*" ] verbs: ["get", "list", "watch", "create", "delete", "patch", "update"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: cluster-manager-binding namespace: {Namespace targeted by experiment} subjects: - kind: User name: {CHAOS-STUDIO-EXPERIMENT-MSI-OBJECT-ID} roleRef: kind: ClusterRole name: role-cluster-manager-pdmas apiGroup: rbac.authorization.k8s.io