Použití řízení přístupu na základě role v Azure k definování přístupu ke konfiguračnímu souboru Kubernetes ve službě Azure Kubernetes Service (AKS)
Pomocí nástroje můžete pracovat s clustery Kubernetes kubectl
. 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
. Pomocí řízení přístupu na základě role v Azure (Azure RBAC) můžete omezit, kdo může získat přístup k souboru kubeconfig a oprávněním, která mají.
V tomto článku se dozvíte, jak přiřadit role Azure, které omezují, kdo může získat informace o konfiguraci clusteru AKS.
Než začnete
- Tento článek předpokládá, že máte existující cluster AKS. Pokud potřebujete cluster AKS, vytvořte ho pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal.
- Tento článek také vyžaduje, abyste spustili Azure CLI verze 2.0.65 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.
Dostupná oprávnění pro role clusteru
Při interakci s clusterem AKS pomocí kubectl
nástroje definuje konfigurační soubor s názvem kubeconfig informace o připojení clusteru. Tento konfigurační soubor je obvykle uložen v souboru ~/.kube/config. V tomto souboru kubeconfig je možné definovat více clusterů. Mezi clustery můžete přepínat pomocí kubectl config use-context
příkazu.
Tento az aks get-credentials
příkaz umožňuje získat přihlašovací údaje pro přístup ke clusteru AKS a sloučit tyto přihlašovací údaje do souboru kubeconfig . Azure RBAC můžete použít k řízení přístupu k těmto přihlašovacím údajům. Tyto role Azure umožňují definovat, kdo může načíst soubor kubeconfig a jaká oprávnění mají v clusteru.
Existují dvě role Azure, které můžete použít pro uživatele nebo skupinu Microsoft Entra:
Role správce clusteru Azure Kubernetes Service
- Umožňuje přístup k
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action
volání rozhraní API. Toto volání rozhraní API obsahuje seznam přihlašovacích údajů správce clusteru. - Stáhne kubeconfig pro roli clusterAdmin .
- Umožňuje přístup k
Role uživatele clusteru Azure Kubernetes Service
- Umožňuje přístup k
Microsoft.ContainerService/managedClusters/listClusterUserCredential/action
volání rozhraní API. Toto volání rozhraní API obsahuje seznam přihlašovacích údajů uživatele clusteru. - Stáhne kubeconfig pro roli clusterUser .
- Umožňuje přístup k
Poznámka:
V clusterech, které používají ID Microsoft Entra, mají uživatelé s rolí clusterUser prázdný soubor kubeconfig , který vyzve k přihlášení. Po přihlášení mají uživatelé přístup na základě nastavení uživatele nebo skupiny Microsoft Entra. Uživatelé s rolí správce clusteru mají přístup správce.
V clusterech, které nepoužívají ID Microsoft Entra, má role clusterUser stejný účinek jako role clusterAdmin .
Přiřazení oprávnění role uživateli nebo skupině
Pokud chcete přiřadit jednu z dostupných rolí, musíte získat ID prostředku clusteru AKS a ID uživatelského účtu nebo skupiny Microsoft Entra pomocí následujícího postupu:
- Získejte ID prostředku clusteru
az aks show
pomocí příkazu pro cluster s názvem myAKSCluster ve skupině prostředků myResourceGroup . Podle potřeby zadejte vlastní název clusteru a skupiny prostředků. - Pomocí příkazů
az account show
az ad user show
získejte ID uživatele. - Přiřaďte roli pomocí
az role assignment create
příkazu.
Následující příklad přiřadí roli správce clusteru Azure Kubernetes Service k individuálnímu uživatelskému účtu:
# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)
# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)
# Assign the 'Cluster Admin' role to the user
az role assignment create \
--assignee $ACCOUNT_ID \
--scope $AKS_CLUSTER \
--role "Azure Kubernetes Service Cluster Admin Role"
Pokud chcete přiřadit oprávnění ke skupině Microsoft Entra, aktualizujte --assignee
parametr zobrazený v předchozím příkladu s ID objektu pro skupinu , nikoli uživatelem.
K získání ID objektu pro skupinu použijte az ad group show
příkaz. Následující příkaz získá ID objektu pro skupinu Microsoft Entra s názvem appdev:
az ad group show --group appdev --query objectId -o tsv
Důležité
V některých případech, jako jsou uživatelé typu Host Microsoft Entra, se user.name v účtu liší od userPrincipalName.
$ az account show --query user.name -o tsv
user@contoso.com
$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com
V tomto případě nastavte hodnotu ACCOUNT_UPN na userPrincipalName od uživatele Microsoft Entra. Pokud je například váš účet user.nameuser@contoso.com, bude tato akce vypadat jako v následujícím příkladu:
ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)
Získání a ověření informací o konfiguraci
Po přiřazení rolí pomocí az aks get-credentials
příkazu získejte definici kubeconfig pro cluster AKS. Následující příklad získá přihlašovací údaje --admin, což funguje správně, pokud má uživatel udělenou roli správce clusteru:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin
Potom můžete pomocí kubectl config view
příkazu ověřit, že kontext clusteru ukazuje, že byly použity informace o konfiguraci správce.
$ kubectl config view
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://myaksclust-myresourcegroup-19da35-4839be06.hcp.eastus.azmk8s.io:443
name: myAKSCluster
contexts:
- context:
cluster: myAKSCluster
user: clusterAdmin_myResourceGroup_myAKSCluster
name: myAKSCluster-admin
current-context: myAKSCluster-admin
kind: Config
preferences: {}
users:
- name: clusterAdmin_myResourceGroup_myAKSCluster
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
token: e9f2f819a4496538b02cefff94e61d35
Odebrání oprávnění role
Pokud chcete odebrat přiřazení rolí, použijte az role assignment delete
příkaz. Zadejte ID účtu a ID prostředku clusteru, které jste získali v předchozích krocích. Pokud jste roli přiřadili skupině místo uživatele, zadejte odpovídající ID objektu skupiny, nikoli ID objektu --assignee
účtu pro parametr.
az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER
Další kroky
Pokud chcete zvýšit zabezpečení přístupu ke clusterům AKS, integrujte ověřování Microsoft Entra.
Azure Kubernetes Service