Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: AKS v Azure Local
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 subjekty v řízení přístupu na základě role Kubernetes (Kubernetes RBAC) použít uživatele, skupiny nebo instanční objekty Microsoft Entra. 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.
Pro koncepční přehled viz Azure RBAC pro autorizaci Kubernetes pro AKS aktivovanou pomocí Azure Arc.
Než začnete
Než začnete, ujistěte se, že máte následující požadavky:
AKS v Azure Local v současné době podporuje povolení Azure RBAC pouze během vytváření clusteru Kubernetes. Po vytvoření clusteru Kubernetes nemůžete azure RBAC povolit.
Azure RBAC můžete povolit pomocí Azure CLI nebo webu Azure Portal. Pokud chcete použít Azure CLI, musíte nainstalovat nejnovější verze rozšíření Azure CLI a aksarc a connectedk8s . Mějte na paměti, že k povolení Azure RBAC potřebujete rozšíření aksarc verze 1.1.1 nebo novější. Spusťte
az --version
pro zjištění aktuální verze. 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 se vyžadují následující oprávnění:
K vytvoření clusteru Kubernetes se vyžaduje role Přispěvatel arc služby Azure Kubernetes Service .
K použití parametru
--enable-azure-rbac
se pro přístup k oprávnění Microsoft.Authorization/roleAssignments/write vyžaduje role správce řízení přístupu na základě role.Pokud chcete přiřadit tyto role, použijte příkaz az role assignment create CLI nebo pomocí Azure CLI přiřaďte role Azure:
az role assignment create --assignee <assignee-object-id> --role <role-name-or-id> --scope $ARM_ID
Nová přiřazení rolí se mohou šířit a být aktualizována autorizujícím serverem až pět minut.
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
AKS 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 kubeconfig soubor na technologii Cluster Connect pro správu clusterů odkudkoli. |
Prohlížeč Kubernetes Azure Arc | Umožňuje přístup jen pro čtení k většině objektů v jmenném prostoru. 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 jmenném prostoru. Nepovoluje zobrazení nebo úpravu rolí nebo vazeb rolí. Tato role však umožňuje přístup k tajemstvím a spouštění pods ve formě jakéhokoli ServiceAccount v oboru názvů, takže ji lze použít k získání úrovní přístupu rozhraní API libovolného 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 zápis kvóty prostředků ani přístup 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, zajišťuje úplnou kontrolu nad každým prostředkem v clusteru a ve všech oborech názvů. Když ji použijete v RoleBinding, poskytuje plnou kontrolu nad každým prostředkem v oboru názvů RoleBinding, 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 to být assignee-object-id
ID Microsoft Entra nebo ID klienta služebního objektu.
Následující příklad přiřadí roli Prohlížeč Kubernetes Azure Arc na cluster Kubernetes:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
V tomto příkladu je rozsah 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 soubordeploy-view.json , 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 svému 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 kubeconfigu založenému na správci, stejně jako k kubeconfigu založenému na uživateli. Soubor kubeconfig založený na administraci obsahuje tajné informace a měl by být bezpečně uložen a pravidelně měněn. Na druhé straně konfigurační soubor kubeconfig pro Microsoft Entra ID založený na uživatelích neobsahuje žádná tajemství a může být distribuován uživatelům, kteří se připojují ze svých klientských strojů.
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 pomocí kubectl get nodes
vypsat uzly v rámci clusteru. Při prvním spuštění se musíte přihlásit, jak je ukázáno na následujícím příkladu:
kubectl get nodes
Získejte přístup ke svému clusteru z klientského zařízení (režim proxy)
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 .
Spusťte následující kroky na jiném klientském zařízení:
Přihlášení pomocí ověřování Microsoft Entra
Získejte konfiguraci připojení clusteru kubeconfig, která je potřebná ke komunikaci s clusterem odkudkoli (dokonce i mimo firewall obklopující cluster):
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Poznámka:
Tento příkaz otevře proxy server a zablokuje aktuální shell.
V jiné relaci shellu použijte
kubectl
k odesílání požadavků do clusteru:kubectl get pods -A
Nyní byste měli vidět odpověď od klastru obsahující seznam všech podů pod názvovým prostorem default
.
Další informace najdete v tématu Přístup ke clusteru z klientského zařízení.
Upravte zdroje
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í zástupce služby Azure pomocí Azure CLI
- Dostupná oprávnění Azure pro hybridní a multicloudové prostředí