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 clusteru Azure Kubernetes Service Správa

  • Role uživatele clusteru Azure Kubernetes Service

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 clusterem Správa mají přístup správce.

V clusterech, které nepoužívají ID Microsoft Entra, má role clusterUser stejný vliv na cluster Správa roli.

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:

  1. 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ů.
  2. Pomocí příkazů az account showaz ad user show získejte ID uživatele.
  3. Přiřaďte roli pomocí az role assignment create příkazu.

Následující příklad přiřadí roli clusteru Azure Kubernetes Service Správa jednotlivým uživatelským účtům:

# 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 byl uživateli udělen cluster Správa role:

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.