Použití řízení přístupu na základě role v Azure pro autorizaci Kubernetes
Tento článek popisuje, jak používat Azure RBAC pro autorizaci Kubernetes, což umožňuje jednotnou správu a řízení přístupu napříč prostředky Azure, AKS a prostředky Kubernetes. Další informace najdete v tématu Azure RBAC pro autorizaci Kubernetes.
Poznámka:
Při použití integrovaného ověřování mezi Microsoft Entra ID a AKS můžete jako předměty v řízení přístupu na základě role Kubernetes (Kubernetes RBAC) použít uživatele Microsoft Entra, skupiny nebo instanční objekty. Díky této funkci nemusíte samostatně spravovat identity uživatelů a přihlašovací údaje pro Kubernetes. Stále ale potřebujete nastavit a spravovat Azure RBAC a RBAC Kubernetes samostatně.
Než začnete
- Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.24.0 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. - Potřebujete
kubectl
, s minimální verzí 1.18.3. - Abyste mohli přidat Azure RBAC pro autorizaci Kubernetes, potřebujete ve svém clusteru povolenou integraci Microsoft Entra. Pokud potřebujete povolit spravovanou integraci Microsoft Entra, přečtěte si téma Použití ID Microsoft Entra v AKS.
- Pokud máte CRD a vytváříte vlastní definice rolí, jediným způsobem, jak krýt CRD dnes je použít
Microsoft.ContainerService/managedClusters/*/read
. U zbývajících objektů můžete použít konkrétní skupiny rozhraní API, napříkladMicrosoft.ContainerService/apps/deployments/read
. - Rozšíření nových přiřazení rolí může trvat až pět minut , než se autorizační server aktualizuje.
- Azure RBAC pro autorizaci Kubernetes vyžaduje, aby tenant Microsoft Entra nakonfigurovaný pro ověřování byl stejný jako tenant pro předplatné, které obsahuje váš cluster AKS.
Vytvoření nového clusteru AKS se spravovanou integrací Microsoft Entra a Azure RBAC pro autorizaci Kubernetes
Pomocí příkazu vytvořte skupinu
az group create
prostředků Azure.export RESOURCE_GROUP=<resource-group-name> export LOCATION=<azure-region> az group create --name $RESOURCE_GROUP --location $LOCATION
Vytvořte cluster AKS se spravovanou integrací Microsoft Entra a Azure RBAC pro autorizaci Kubernetes pomocí
az aks create
příkazu.export CLUSTER_NAME=<cluster-name> az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-aad \ --enable-azure-rbac \ --generate-ssh-keys
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
"AADProfile": { "adminGroupObjectIds": null, "clientAppId": null, "enableAzureRbac": true, "managed": true, "serverAppId": null, "serverAppSecret": null, "tenantId": "****-****-****-****-****" }
Povolení Azure RBAC v existujícím clusteru AKS
Povolte Azure RBAC pro autorizaci Kubernetes v existujícím clusteru AKS pomocí
az aks update
příkazu s příznakem--enable-azure-rbac
.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-azure-rbac
Zakázání Azure RBAC pro autorizaci Kubernetes z clusteru AKS
Odeberte Azure RBAC pro autorizaci Kubernetes z existujícího clusteru AKS pomocí
az aks update
příkazu s příznakem--disable-azure-rbac
.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-azure-rbac
Předdefinované role AKS
AKS poskytuje následující předdefinované role:
Role | Popis |
---|---|
Čtenář RBAC služby Azure Kubernetes Service | Umožňuje přístup jen pro čtení k zobrazení většiny objektů v oboru názvů. Nepovoluje zobrazování rolí nebo vazeb rolí. Tato role neumožňuje prohlížení Secrets , protože čtení obsahu tajných kódů umožňuje přístup k přihlašovacím údajům ServiceAccount v oboru názvů, což by umožnilo přístup rozhraní API jako jakýkoli účet ServiceAccount v oboru názvů (forma eskalace oprávnění). |
Azure Kubernetes Service RBAC Writer | Umožňuje přístup pro čtení a zápis k většině objektů v oboru názvů. Tato role neumožňuje zobrazení nebo úpravy rolí nebo vazeb rolí. Tato role ale umožňuje přístup k Secrets podům jako jakýkoli účet ServiceAccount v oboru názvů, takže se dá použít k získání úrovní přístupu rozhraní API libovolného účtu ServiceAccount v oboru názvů. |
Správce RBAC služby Azure Kubernetes Service | Umožňuje přístup správce, který má být udělen v rámci oboru názvů. Umožňuje přístup pro čtení a zápis k většině prostředků v oboru názvů (nebo oboru clusteru), 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 RBAC služby Azure Kubernetes Service | Umožňuje superuživatelům přístup k provedení jakékoli akce u libovolného prostředku. Poskytuje úplnou kontrolu nad všemi prostředky v clusteru a ve všech oborech názvů. |
Vytvoření přiřazení rolí pro přístup ke clusteru
Pomocí příkazu získejte ID
az aks show
prostředku AKS.AKS_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query id --output tsv)
Pomocí příkazu vytvořte přiřazení
az role assignment create
role.<AAD-ENTITY-ID>
může být uživatelské jméno nebo ID klienta instančního objektu. Následující příklad vytvoří přiřazení role pro roli správce RBAC služby Azure Kubernetes Service.az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Poznámka:
Pomocí příkazu a nastavením oboru názvů na požadovaný obor názvů můžete vytvořit přiřazení rolí Azure Kubernetes Service RBAC Reader a Azure Kubernetes Service RBAC Writer v rámci clusteru
az role assignment create
.az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
Vytváření definic vlastních rolí
Následující příklad definice vlastní role umožňuje uživateli jen číst nasazení a nic jiného. Úplný seznam možných akcí najdete v tématu Operace Microsoft.ContainerService.
Pokud chcete vytvořit vlastní definice rolí, zkopírujte následující soubor, nahraďte
<YOUR SUBSCRIPTION ID>
ho vlastním ID předplatného a uložte ho jakodeploy-view.json
.{ "Name": "AKS Deployment Reader", "Description": "Lets you view all deployments in cluster/namespace.", "Actions": [], "NotActions": [], "DataActions": [ "Microsoft.ContainerService/managedClusters/apps/deployments/read" ], "NotDataActions": [], "assignableScopes": [ "/subscriptions/<YOUR SUBSCRIPTION ID>" ] }
Pomocí příkazu vytvořte definici
az role definition create
role a nastavte--role-definition
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 Deployment Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Použití Azure RBAC pro autorizaci Kubernetes s využitím kubectl
Ujistěte se, že máte předdefinované role uživatele clusteru Azure Kubernetes Service, a pak pomocí
az aks get-credentials
příkazu získejte kubeconfig clusteru AKS.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Teď můžete použít
kubectl
ke správě clusteru. Můžete například vypsat uzly v clusteru pomocíkubectl get nodes
.kubectl get nodes
Příklad výstupu:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Použití Azure RBAC pro autorizaci Kubernetes s využitím kubelogin
AKS vytvořil modul kubelogin
plug-in, který pomáhá odblokovat scénáře, jako jsou neinteraktivní přihlášení, starší kubectl
verze nebo využití jednotného přihlašování napříč několika clustery, aniž by se museli přihlašovat k novému clusteru.
Modul plug-in
kubelogin
použijte spuštěním následujícího příkazu:export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
Teď můžete použít
kubectl
ke správě clusteru. Můžete například vypsat uzly v clusteru pomocíkubectl get nodes
.kubectl get nodes
Příklad výstupu:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Vyčištění prostředků
Odstranit přiřazení role
Zobrazení seznamu přiřazení rolí pomocí
az role assignment list
příkazuaz role assignment list --scope $AKS_ID --query [].id --output tsv
Pomocí příkazu odstraňte přiřazení
az role assignment delete
rolí.az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Odstranění definice role
Pomocí příkazu odstraňte definici
az role definition delete
vlastní role.az role definition delete --name "AKS Deployment Reader"
Odstranění skupiny prostředků a clusteru AKS
Pomocí příkazu odstraňte skupinu prostředků a cluster
az group delete
AKS.az group delete --name $RESOURCE_GROUP --yes --no-wait
Další kroky
Další informace o ověřování, autorizaci AKS, RBAC Kubernetes a Azure RBAC najdete tady:
Azure Kubernetes Service