Udostępnij przez


Rozwiązywanie problemów z błędem "Zabronione" podczas próby uzyskania dostępu do zasobów klastra usługi AKS

W tym artykule wyjaśniono, jak rozwiązywać problemy z błędami "Błąd z serwera (zabronione)", które są związane z kontrolą dostępu opartą na rolach (RBAC) podczas próby wyświetlenia zasobów Kubernetes w klastrze usługi Azure Kubernetes Service (AKS).

Wymagania wstępne

Narzędzie wiersza polecenia klastra Kubernetes (kubectl)

Uwaga 16.

Jeśli używasz usługi Azure Cloud Shell do uruchamiania poleceń powłoki, narzędzie kubectl jest już zainstalowane. Jeśli używasz powłoki lokalnej i masz już zainstalowany interfejs wiersza polecenia platformy Azure, możesz też zainstalować narzędzie kubectl, uruchamiając polecenie az aks install-cli .

Symptomy

Po uruchomieniu kubectl poleceń w celu wyświetlenia szczegółów typu zasobu Kubernetes, takiego jak wdrożenie, zasobnik lub węzeł procesu roboczego, zostanie wyświetlony następujący komunikat o błędzie:

$ 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

Przyczyna

Ten błąd wskazuje, że próbujesz uzyskać dostęp do zasobów platformy Kubernetes przy użyciu konta Microsoft Entra ID, które nie ma wymaganych uprawnień kontroli dostępu opartej na rolach (RBAC).

Rozwiązanie

W zależności od typu kontroli dostępu opartej na rolach skonfigurowanego dla klastra (kontrola dostępu oparta na rolach platformy Kubernetes lub kontrola dostępu oparta na rolach platformy Azure) mogą mieć zastosowanie różne rozwiązania. Uruchom następujące polecenie, aby określić, którego typu kontroli dostępu opartej na rolach używa klaster:

Uruchom następujące polecenie, aby określić typ RBAC używany przez klaster AKS.

az aks show -g $RESOURCE_GROUP -n $CLUSTER_NAME --query aadProfile.enableAzureRbac

Wyniki:

false

Rozwiązywanie problemów związanych z uprawnieniami w lokalnych klastrach RBAC Kubernetes

Jeśli klaster nie ma integracji z usługą Azure AD (wynik miał wartość null), używa poświadczeń administratora klastra:

# Get admin credentials for full access
az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --admin

# Verify access
kubectl get nodes

Ostrzeżenie: Poświadczenia administratora zapewniają pełny dostęp do klastra. Należy uważnie użyć i rozważyć włączenie integracji usługi Azure AD w celu uzyskania lepszych zabezpieczeń.

Rozwiązywanie problemów z uprawnieniami w klastrach AKS opartych na kontroli dostępu opartej na rolach platformy Kubernetes

Jeśli klaster korzysta z kontroli dostępu opartej na rolach platformy Kubernetes, uprawnienia dla konta użytkownika są konfigurowane za pośrednictwem tworzenia zasobów RoleBinding lub ClusterRoleBinding Kubernetes. Aby uzyskać więcej informacji, zobacz dokumentację kontroli dostępu opartej na rolach platformy Kubernetes.

Ponadto w klastrach zintegrowanych z identyfikatorem Entra firmy Microsoft zasób ClusterRoleBinding jest tworzony automatycznie w celu udzielenia administratorowi dostępu do klastra członkom wstępnie wyznaczonej grupy Identyfikator entra firmy Microsoft.

Aby usunąć błąd "Błąd z serwera (zabronione)" dla określonego użytkownika, użyj jednej z następujących metod.

Metoda 1. Tworzenie niestandardowego zasobu RoleBinding lub ClusterRoleBinding

Możesz utworzyć niestandardowy zasób RoleBinding lub ClusterRoleBinding, aby udzielić użytkownikowi niezbędnych uprawnień (lub grupie, której użytkownik jest członkiem). Aby uzyskać szczegółowe instrukcje, zobacz Use Kubernetes role-based access control with Microsoft Entra ID in Azure Kubernetes Service (Używanie kontroli dostępu opartej na rolach platformy Kubernetes za pomocą identyfikatora Entra firmy Microsoft w usłudze Azure Kubernetes Service).

Metoda 2. Dodawanie użytkownika do wstępnie wyznaczonej grupy administracyjnej Identyfikator entra firmy Microsoft

  1. Pobierz identyfikator wstępnie wyznaczonej grupy administracyjnej Microsoft Entra ID. Aby to zrobić, uruchom następujące polecenie:

    az aks show -g $RESOURCE_GROUP -n $CLUSTER_NAME --query aadProfile.adminGroupObjectIDs
    

    Wyniki:

    [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    ]
    
  2. Dodaj użytkownika do wstępnie wyznaczonej grupy administracyjnej Identyfikator entra firmy Microsoft przy użyciu identyfikatora grupy pobranego w poprzednim kroku. Aby uzyskać bardziej szczegółowe instrukcje, zobacz Dodawanie członków lub właścicieli grupy.

Rozwiązywanie problemów z uprawnieniami w klastrach AKS opartych na kontroli dostępu opartej na rolach platformy Azure

Jeśli klaster używa kontroli dostępu opartej na rolach platformy Azure, uprawnienia dla użytkowników są konfigurowane za pośrednictwem tworzenia przypisań ról platformy Azure.

Usługa AKS udostępnia zestaw wbudowanych ról, które mogą służyć do tworzenia przypisań ról dla użytkowników lub grup microsoft Entra ID w celu zapewnienia im dostępu do obiektów Kubernetes w określonej przestrzeni nazw lub w zakresie klastra. Aby uzyskać szczegółowe instrukcje przypisywania wbudowanych ról do użytkowników lub grup w klastrach opartych na kontroli dostępu opartej na rolach platformy Azure, zobacz Role wbudowane usługi AKS.

Alternatywnie możesz utworzyć własne niestandardowe definicje ról platformy Azure, aby zapewnić bardziej szczegółowe zarządzanie uprawnieniami w przypadku określonych typów obiektów i operacji platformy Kubernetes. Aby uzyskać szczegółowe wskazówki dotyczące tworzenia i przypisywania ról niestandardowych do użytkowników i grup w klastrach opartych na kontroli dostępu opartej na rolach platformy Azure, zobacz Tworzenie definicji ról niestandardowych.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania, możesz zadać pomoc techniczną społeczności platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.