Dela via


Felsöka felet "Förbjudet" när du försöker komma åt AKS-klusterresurser

I den här artikeln beskrivs hur du felsöker och löser fel från servern (förbjudet) som är relaterade till rollbaserad åtkomstkontroll (RBAC) när du försöker visa Kubernetes-resurser i ett AKS-kluster (Azure Kubernetes Service).

Förutsättningar

Kommandoradsverktyget för Kubernetes-klustret (kubectl)

Kommentar

Om du använder Azure Cloud Shell för att köra gränssnittskommandon är kubectl redan installerat. Om du använder ett lokalt gränssnitt och redan har Azure CLI installerat kan du också installera kubectl genom att köra kommandot az aks install-cli .

Symptom

När du kör kubectl kommandon för att visa information om en Kubernetes-resurstyp, till exempel en distributions-, podd- eller arbetsnod, får du följande felmeddelande:

$ kubectl get nodes
Error from server (Forbidden): nodes is forbidden: User "aaaa11111-11aa-aa11-a1a1-111111aaaaa" cannot list resource "nodes" in API group "" at the cluster scope

Orsak

Det här felet anger att du försöker komma åt Kubernetes-resurser med hjälp av ett Microsoft Entra-ID-konto som inte har de behörigheter som krävs för rollbaserad åtkomstkontroll (RBAC).

Lösning

Beroende på vilken RBAC-typ som har konfigurerats för klustret (Kubernetes RBAC eller Azure RBAC) kan olika lösningar gälla. Kör följande kommando för att avgöra vilken RBAC-typ klustret använder:

	az aks show -g <CLUSTER_RESOURCE_GROUP> -n <CLUSTER_NAME> --query aadProfile.enableAzureRbac

Lösa behörighetsproblem i Kubernetes RBAC-baserade AKS-kluster

Om klustret använder Kubernetes RBAC konfigureras behörigheter för användarkontot genom skapandet av RoleBinding- eller ClusterRoleBinding Kubernetes-resurser. Mer information finns i Kubernetes RBAC-dokumentation.

I integrerade Microsoft Entra-ID-kluster skapas dessutom automatiskt en ClusterRoleBinding-resurs för att ge administratören åtkomst till klustret till medlemmar i en fördefinierad Microsoft Entra-ID-grupp.

Om du vill lösa felet "Fel från servern (förbjudet)" för en viss användare använder du någon av följande metoder.

Metod 1: Skapa en anpassad RoleBinding- eller ClusterRoleBinding-resurs

Du kan skapa en anpassad RoleBinding- eller ClusterRoleBinding-resurs för att ge användaren nödvändiga behörigheter (eller en grupp som användaren är medlem i). Detaljerade steg finns i Använda rollbaserad Åtkomstkontroll i Kubernetes med Microsoft Entra ID i Azure Kubernetes Service.

Metod 2: Lägg till användaren i den fördefinierade Administratörsgruppen för Microsoft Entra-ID

  1. Hämta ID:t för den fördefinierade Microsoft Entra-ID-administratörsgruppen. Gör detta genom att köra följande kommando:

    az aks show -g <CLUSTER_RESOURCE_GROUP> -n <CLUSTER_NAME> --query aadProfile.adminGroupObjectIDs
    
  2. Lägg till användaren i den fördefinierade Administratörsgruppen för Microsoft Entra-ID med hjälp av grupp-ID:t som du hämtade i föregående steg. Mer detaljerade steg finns i Lägga till medlemmar eller ägare av en grupp.

Lösa behörighetsproblem i Azure RBAC-baserade AKS-kluster

Om klustret använder Azure RBAC konfigureras behörigheter för användare genom att azure-rolltilldelningar skapas.

AKS tillhandahåller en uppsättning inbyggda roller som kan användas för att skapa rolltilldelningar för Microsoft Entra-ID-användare eller -grupper för att ge dem åtkomst till Kubernetes-objekt i ett specifikt namnområde eller i klusteromfånget. Detaljerade steg för att tilldela inbyggda roller till användare eller grupper i Azure RBAC-baserade kluster finns i inbyggda AKS-roller.

Du kan också skapa egna anpassade Azure-rolldefinitioner för att tillhandahålla en mer detaljerad hantering av behörigheter för specifika typer av Kubernetes-objekt och -åtgärder. Detaljerad vägledning för att skapa och tilldela anpassade roller till användare och grupper i Azure RBAC-baserade kluster finns i Skapa definitioner för anpassade roller.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.