Použití řízení přístupu na základě role v Azure (RBAC) pro autorizaci Kubernetes
Platí pro: AKS v Azure Local, verze 23H2
Správci infrastruktury můžou pomocí řízení přístupu na základě role v Azure (Azure RBAC) řídit, kdo má přístup k souboru kubeconfig a jaká oprávnění mají. Operátoři Kubernetes můžou pracovat s clustery Kubernetes pomocí nástroje kubectl na základě daných oprávnění. Azure CLI poskytuje snadný způsob, jak získat přístupové přihlašovací údaje a konfigurační soubor kubeconfig pro připojení ke clusterům AKS pomocí kubectl.
Pokud používáte integrované ověřování mezi ID Microsoft Entra a AKS, můžete jako předměty použít uživatele, skupiny nebo instanční objekty Microsoftu jako předměty řízení přístupu na základě role Kubernetes (Kubernetes RBAC). Tato funkce vám umožňuje samostatně spravovat identity uživatelů a přihlašovací údaje pro Kubernetes. Přesto ale musíte nastavit a spravovat Azure RBAC a RBAC Kubernetes samostatně.
Tento článek popisuje, jak používat Azure RBAC pro autorizaci clusteru Kubernetes s id Microsoft Entra a přiřazeními rolí Azure.
Koncepční přehled najdete v tématu Azure RBAC pro autorizaci Kubernetes pro AKS povolenou službou Azure Arc.
Než začnete
Než začnete, ujistěte se, že máte následující požadavky:
AKS v Azure Local verze 23H2 aktuálně podporuje povolení Azure RBAC pouze během vytváření clusteru Kubernetes. Po vytvoření clusteru Kubernetes nemůžete azure RBAC povolit.
Nainstalujte nejnovější verzi rozšíření aksarc a connectedk8s Azure CLI. Pokud chcete povolit Azure RBAC, musíte spustit rozšíření aksarc verze 1.1.1 nebo novější. Spuštěním vyhledejte
az --version
aktuální verzi. Pokud potřebujete nainstalovat nebo upgradovat Azure CLI, přečtěte si téma Instalace Azure CLI.az extension add --name aksarc az extension add --name connectedk8s
Pokud jste rozšíření už nainstalovali
aksarc
, aktualizujte rozšíření na nejnovější verzi:az extension update --name aksarc az extension update --name connectedk8s
Pokud chcete pracovat s clustery Kubernetes, musíte nainstalovat kubectl a kubelogin.
K povolení Azure RBAC při vytváření clusteru Kubernetes potřebujete následující oprávnění:
- K vytvoření clusteru Kubernetes potřebujete roli Přispěvatel arc služby Azure Kubernetes Service.
- Pokud chcete použít
--enable-azure-rbac
parametr, potřebujete roli správce řízení přístupu na základě role pro přístup k oprávnění Microsoft.Authorization/roleAssignments/write . Další informace najdete v tématu Předdefinované role v Azure. - Rozšíření nových přiřazení rolí může trvat až pět minut, než se autorizační server aktualizuje.
Jakmile je Azure RBAC povolený, můžete ke clusteru Kubernetes přistupovat s danými oprávněními pomocí přímého režimu nebo režimu proxy serveru.
- Pokud chcete získat přístup ke clusteru Kubernetes přímo pomocí
az aksarc get-credentials
příkazu, potřebujete akci Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, která je součástí oprávnění uživatele clusteru Azure Kubernetes Service Arc. - Pokud chcete přistupovat ke clusteru Kubernetes odkudkoli pomocí režimu proxy serveru pomocí
az connectedk8s proxy
příkazu nebo z webu Azure Portal, potřebujete akci Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action , která je součástí oprávnění role uživatele clusteru Kubernetes s podporou Azure Arc. Mezitím musíte ověřit, že agenti a počítač provádějící proces onboardingu splňují síťové požadavky stanovené v síťových požadavcích Kubernetes s podporou Azure Arc.
- Pokud chcete získat přístup ke clusteru Kubernetes přímo pomocí
Pokud chcete použít kubectl, můžete k němu přistupovat pomocí Azure RBAC nebo skupiny pro správu AAD.
- Pokud chcete použít kubectl s Azure RBAC, potřebujete roli Prohlížeče Kubernetes Azure Arc vymezenou na připojený prostředek clusteru.
- Pokud chcete použít kubectl se skupinou pro správu AAD, nepotřebujete žádnou konkrétní roli, ale musíte se ujistit, že jste v některé ze skupin v seznamu skupin doplňků pro prostředek připojeného clusteru.
Krok 1: Vytvoření clusteru Kubernetes s podporou Azure RBAC
Můžete vytvořit cluster Kubernetes s podporou Azure RBAC pro autorizaci a ID Microsoft Entra pro ověřování.
az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --enable-azure-rbac
Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.
Krok 2: Vytvoření přiřazení rolí pro uživatele pro přístup ke clusteru
Služba AKS povolená službou Arc poskytuje následující pět předdefinovaných rolí. Jsou podobné předdefinovaným rolím Kubernetes s několika rozdíly, jako je podpora CRD. Podívejte se na úplný seznam akcí povolených každou integrovanou rolí Azure.
Role | Popis |
---|---|
Uživatel clusteru Kubernetes s podporou Azure Arc | Umožňuje načíst soubor kubeconfig založený na připojení clusteru ke správě clusterů odkudkoli. |
Prohlížeč Kubernetes Azure Arc | Umožňuje přístup jen pro čtení k zobrazení většiny objektů v oboru názvů. Nepovoluje zobrazování tajných kódů, protože oprávnění ke čtení tajných kódů umožňuje přístup k přihlašovacím údajům ServiceAccount v oboru názvů. Tyto přihlašovací údaje zase umožňují přístup k rozhraní API prostřednictvím této hodnoty ServiceAccount (forma eskalace oprávnění). |
Azure Arc Kubernetes Writer | Umožňuje přístup pro čtení a zápis k většině objektů v oboru názvů. Nepovoluje zobrazení nebo úpravu rolí nebo vazeb rolí. Tato role však umožňuje přístup k tajným kódům a spouštění podů jako jakékoli hodnoty ServiceAccount v oboru názvů, takže ji lze použít k získání úrovní přístupu rozhraní API libovolné hodnoty ServiceAccount v oboru názvů. |
Správce Kubernetes Azure Arc | Umožňuje přístup správce. Účelem je udělit v rámci oboru názvů prostřednictvím roleBinding. Pokud ji použijete ve vazbě rolí, umožní přístup pro čtení a zápis k většině prostředků v oboru názvů, včetně možnosti vytvářet role a vazby rolí v rámci oboru názvů. Tato role neumožňuje přístup k zápisu do kvóty prostředků ani k samotnému oboru názvů. |
Správce clusteru Azure Arc Kubernetes | Umožňuje přístup superuživatele k provedení jakékoli akce u libovolného prostředku. Když ji použijete v ClusterRoleBinding, poskytuje úplnou kontrolu nad každým prostředkem v clusteru a ve všech oborech názvů. Když ji použijete ve vazbě rolí, poskytuje úplnou kontrolu nad každým prostředkem v oboru názvů vazby role, včetně samotného oboru názvů. |
Pomocí příkazu můžete az role assignment create
vytvořit přiřazení rolí.
Nejprve získejte $ARM-ID
pro cílový cluster, ke kterému chcete přiřadit roli.
$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)
Potom pomocí az role assignment create
příkazu přiřaďte role ke clusteru Kubernetes. Musíte zadat $ARM_ID
z prvního kroku a assignee-object-id
pro tento krok. Může assignee-object-id
to být ID Microsoft Entra nebo ID klienta instančního objektu.
Následující příklad přiřadí roli Čtenář Kubernetes Azure Arc ke clusteru Kubernetes:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
V tomto příkladu je obor ID Azure Resource Manageru clusteru. Může to být také skupina prostředků obsahující cluster Kubernetes.
Vytváření vlastních definic rolí
Můžete si vytvořit vlastní definici role pro použití v přiřazeních rolí.
Následující příklad ukazuje definici role, která uživateli umožňuje pouze čtení nasazení. Další informace najdete v úplném seznamu akcí dat, které můžete použít k vytvoření definice role. Další informace o vytvoření vlastní role najdete v tématu Postup vytvoření vlastní role.
Pokud chcete vytvořit vlastní definice rolí, zkopírujte následující objekt JSON do souboru s názvem custom-role.json. <subscription-id>
Zástupný symbol nahraďte skutečným ID předplatného. Vlastní role používá jednu z akcí dat a umožňuje zobrazit všechna nasazení v oboru (clusteru nebo oboru názvů), ve kterém se přiřazení role vytvoří.
{
"Name": "AKS Arc Deployment Reader",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<YOUR SUBSCRIPTION ID>"
]
}
Informace o vlastních rolích a jejich vytváření najdete v tématu Vlastní role Azure.
Pomocí příkazu vytvořte definici az role definition create
role a nastavte --role-definition
parametr na deploy-view.json soubor, který jste vytvořili v předchozím kroku:
az role definition create --role-definition @deploy-view.json
Pomocí příkazu přiřaďte definici role uživateli nebo jiné identitě az role assignment create
:
az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID
Krok 3: Přístup ke clusteru Kubernetes
Ke clusteru Kubernetes teď můžete přistupovat s danými oprávněními pomocí přímého režimu nebo režimu proxy serveru.
Přístup ke clusteru pomocí kubectl (přímý režim)
Pro přístup ke clusteru Kubernetes s danými oprávněními potřebuje operátor Kubernetes microsoft Entra kubeconfig, který můžete získat pomocí az aksarc get-credentials
příkazu. Tento příkaz poskytuje přístup k kubeconfig založenému na správci a také k kubeconfigu založenému na uživatelích. Soubor kubeconfig založený na správci obsahuje tajné kódy a měl by se bezpečně ukládat a pravidelně obměňovat. Na druhé straně uživatel-based Microsoft Entra ID kubeconfig neobsahuje tajné kódy a lze je distribuovat uživatelům, kteří se připojují ze svých klientských počítačů.
Ke spuštění tohoto příkazu Azure CLI potřebujete microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, která je součástí oprávnění role uživatele clusteru Azure Kubernetes Service Arc:
az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>
Teď můžete ke správě clusteru použít kubectl. Můžete například vypsat uzly v clusteru pomocí kubectl get nodes
. Při prvním spuštění se musíte přihlásit, jak je znázorněno v následujícím příkladu:
kubectl get nodes
Přístup ke clusteru z klientského zařízení (režim proxy serveru)
Pokud chcete přistupovat ke clusteru Kubernetes odkudkoli s režimem proxy pomocí az connectedk8s proxy
příkazu, potřebujete oprávnění role uživatele clusteru Kubernetes s podporou Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action, která je součástí role uživatele clusteru Kubernetes s podporou Azure Arc.
Na jiném klientském zařízení spusťte následující kroky:
Přihlášení pomocí ověřování Microsoft Entra
Získejte kubeconfig pro připojení clusteru potřebný ke komunikaci s clusterem odkudkoli (dokonce i mimo bránu firewall kolem clusteru):
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Poznámka:
Tento příkaz otevře proxy server a zablokuje aktuální prostředí.
V jiné relaci prostředí použijte
kubectl
k odesílání požadavků do clusteru:kubectl get pods -A
Teď by se měla zobrazit odpověď z clusteru obsahujícího seznam všech podů v default
oboru názvů.
Další informace najdete v tématu Přístup ke clusteru z klientského zařízení.
Vyčištění prostředků
Odstranit přiřazení role
# List role assignments
az role assignment list --scope $ARM_ID --query [].id -o tsv
# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Odstranění definice role
az role definition delete -n "AKS Arc Deployment Reader"
Další kroky
- Řízení přístupu Azure na základě rolí (Azure RBAC)
- Možnosti přístupu a identit pro AKS povolené službou Azure Arc
- Vytvoření instančního objektu Azure pomocí Azure CLI
- Dostupná oprávnění Azure pro hybridní a multicloudové prostředí