Teilen über


Verwenden von Azure RBAC auf Azure Arc-fähigen Kubernetes-Clustern

Die Kubernetes-Objekttypen „ClusterRoleBinding“ und „RoleBinding“ bieten Unterstützung bei der nativen Definition der Autorisierung in Kubernetes. Wenn Sie dieses Feature verwenden, können Sie unter Verwendung von Microsoft Entra ID und Rollenzuweisungen in Azure die Autorisierungsüberprüfungen für das Cluster steuern. Mit Azure-Rollenzuweisungen können Sie präzise steuern, welche Benutzer Kubernetes-Objekte wie Bereitstellung, Pod und Dienst lesen, schreiben und löschen können.

Eine konzeptionelle Übersicht zu dieser Funktion finden Sie unter Azure RBAC für Kubernetes mit Azure Arc-Unterstützung.

Voraussetzungen

  • Installieren Sie die Azure-Befehlszeilenschnittstelle, oder upgraden Sie sie auf die neueste Version.

  • Installieren Sie die neueste Version der Azure CLI-Erweiterung connectedk8s:

    az extension add --name connectedk8s
    

    Wenn die Erweiterung connectedk8s bereits installiert ist, kann sie mit dem folgenden Befehl auf die neueste Version aktualisiert werden:

    az extension update --name connectedk8s
    
  • Herstellen einer Verbindung mit einem vorhandenen Kubernetes-Cluster mit Azure Arc-Unterstützung:

Hinweis

Azure RBAC ist für Red Hat OpenShift- oder verwaltete Kubernetes-Angebote nicht verfügbar, bei denen der Benutzerzugriff auf den API-Server eingeschränkt ist (z. B. Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE)).

Azure RBAC unterstützt derzeit keine Kubernetes-Cluster, die auf der ARM64-Architektur ausgeführt werden. Verwenden Sie Kubernetes RBAC, um die Zugriffssteuerung für ARM64-basierte Kubernetes-Cluster zu verwalten.

Für Azure Kubernetes Service-Cluster (AKS) ist dieses Feature nativ verfügbar und erfordert nicht, dass der AKS-Cluster mit Azure Arc verbunden ist.

Für Azure Kubernetes Service (AKS)-Cluster mit Azure Arc-Unterstützung in Azure Stack HCI 23H2 wird die Aktivierung von Azure RBAC derzeit nur während der Erstellung von Kubernetes-Clustern unterstützt. Zum Erstellen eines Azure Arc-fähigen AKS-Clusters mit aktiviertem Azure RBAC folgen Sie der Anleitung Verwenden von Azure RBAC für die Kubernetes-Autorisierung. Beachten Sie, dass Azure RBAC für Azure Stack HCI, Version 22H2, nicht unterstützt wird.

Das Aktivieren von Azure RBAC auf dem Cluster

  1. Rufen Sie die CLUSTER-MSI-Identität ab, indem Sie den folgenden Befehl ausführen:

    az connectedk8s show -g <resource-group> -n <connected-cluster-name>
    
  2. Rufen Sie die ID (identity.principalId) aus der Ausgabe ab, und führen Sie den folgenden Befehl aus, um der Cluster-MSI die Rolle Connected Cluster Managed Identity CheckAccess Reader (CheckAccess-Leser für verwaltete Identitäten verbundener Cluster) zuzuweisen:

    az role assignment create --role "Connected Cluster Managed Identity CheckAccess Reader" --assignee "<Cluster MSI ID>" --scope <cluster ARM ID>
    
  3. Aktivieren Sie die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) in Ihrem Kubernetes-Cluster mit Azure Arc-Unterstützung, indem Sie den folgenden Befehl ausführen:

    az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features azure-rbac
    

    Hinweis

    Stellen Sie vor der Ausführung des obigen Befehls sicher, dass die kubeconfig-Datei auf dem Computer auf den Cluster verweist, für den Sie die Azure RBAC-Funktion aktivieren möchten.

    Verwenden Sie --skip-azure-rbac-list mit dem vorherigen Befehl, um eine kommagetrennte Liste mit Benutzernamen, E-Mails und OpenID-Verbindungen zu erhalten, die den Berechtigungsprüfungen unterzogen werden. Verwenden Sie hierzu native Kubernetes ClusterRoleBinding- und RoleBinding-Objekte anstelle von Azure RBAC.

Ein generisches Cluster ohne ausgeführte Synchronisierung in der apiserver-Spezifikation

  1. Stellen Sie über SSH eine Verbindung mit jedem Masterknoten des Clusters her, folgen Sie den nachstehenden Schritten:

    Wenn Ihr kube-apiserver ein statischer Pod ist:

    1. Das azure-arc-guard-manifests-Geheimnis im kube-system-Namespace enthält zwei Dateien: guard-authn-webhook.yaml und guard-authz-webhook.yaml. Kopieren Sie diese Dateien in das Verzeichnis /etc/guard des Knotens.

      sudo mkdir -p /etc/guard
      kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authn-webhook.yaml"' | base64 -d > /etc/guard/guard-authn-webhook.yaml
      kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authz-webhook.yaml"' | base64 -d > /etc/guard/guard-authz-webhook.yaml
      
    2. Öffnen Sie das apiserver-Manifest im Bearbeitungsmodus:

      sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
      
    3. Fügen Sie unter volumes die folgende Spezifikation hinzu:

      - hostPath
          path: /etc/guard
          type: Directory
      name: azure-rbac
      
    4. Fügen Sie unter volumeMounts die folgende Spezifikation hinzu:

      - mountPath: /etc/guard
          name: azure-rbac
          readOnly: true
      

    Wenn Ihr kube-apiserver kein statischer Pod ist:

    1. Öffnen Sie das apiserver-Manifest im Bearbeitungsmodus:

      sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
      
    2. Fügen Sie unter volumes die folgende Spezifikation hinzu:

      - name: azure-rbac
          secret:
          secretName: azure-arc-guard-manifests
      
    3. Fügen Sie unter volumeMounts die folgende Spezifikation hinzu:

      - mountPath: /etc/guard
          name: azure-rbac
          readOnly: true
      
  2. Fügen Sie die folgenden apiserver-Argumente hinzu:

    - --authentication-token-webhook-config-file=/etc/guard/guard-authn-webhook.yaml
    - --authentication-token-webhook-cache-ttl=5m0s
    - --authorization-webhook-cache-authorized-ttl=5m0s
    - --authorization-webhook-config-file=/etc/guard/guard-authz-webhook.yaml
    - --authorization-webhook-version=v1
    - --authorization-mode=Node,RBAC,Webhook
    

    Wenn Sie das Kubernetes-Cluster mit der Version 1.19.0 oder höher verwenden, müssen Sie auch das folgende apiserver-Argument festlegen:

    - --authentication-token-webhook-version=v1
    
  3. Speichern und schließen Sie den Editor, um den apiserver-Pod zu aktualisieren.

Mit Cluster-API erstellte Cluster

  1. Kopieren Sie das Wächtergeheimnis, das die Authentifizierungs- und Autorisierungs-Webhookkonfigurationsdateien aus dem Workloadcluster enthält, auf Ihren Computer:

    kubectl get secret azure-arc-guard-manifests -n kube-system -o yaml > azure-arc-guard-manifests.yaml
    
  2. Ändern Sie das Feld namespace in der Datei azure-arc-guard-manifests.yaml in den Namespace innerhalb des Verwaltungsclusters in dem Sie die benutzerdefinierten Ressourcen zur Erstellung von Workloadclustern hinzufügen.

  3. Wenden Sie dieses Manifest an:

    kubectl apply -f azure-arc-guard-manifests.yaml
    
  4. Bearbeiten Sie das Objekt KubeadmControlPlane durch Ausführung von kubectl edit kcp <clustername>-control-plane:

    1. Fügen Sie unter files den folgenden Codeausschnitt hinzu:

      - contentFrom:
          secret:
            key: guard-authn-webhook.yaml
            name: azure-arc-guard-manifests
        owner: root:root
        path: /etc/kubernetes/guard-authn-webhook.yaml
        permissions: "0644"
      - contentFrom:
          secret:
            key: guard-authz-webhook.yaml
            name: azure-arc-guard-manifests
        owner: root:root
        path: /etc/kubernetes/guard-authz-webhook.yaml
        permissions: "0644"
      
    2. Fügen Sie unter apiServer>extraVolumes den folgenden Codeausschnitt hinzu:

      - hostPath: /etc/kubernetes/guard-authn-webhook.yaml
          mountPath: /etc/guard/guard-authn-webhook.yaml
          name: guard-authn
          readOnly: true
      - hostPath: /etc/kubernetes/guard-authz-webhook.yaml
          mountPath: /etc/guard/guard-authz-webhook.yaml
          name: guard-authz
          readOnly: true
      
    3. Fügen Sie unter apiServer>extraArgs den folgenden Codeausschnitt hinzu:

      authentication-token-webhook-cache-ttl: 5m0s
      authentication-token-webhook-config-file: /etc/guard/guard-authn-webhook.yaml
      authentication-token-webhook-version: v1
      authorization-mode: Node,RBAC,Webhook
      authorization-webhook-cache-authorized-ttl: 5m0s
      authorization-webhook-config-file: /etc/guard/guard-authz-webhook.yaml
      authorization-webhook-version: v1
      
    4. Wählen Sie speichern und schließen, um das Objekt KubeadmControlPlane zu aktualisieren. Warten Sie, bis diese Änderungen auf dem Workloadcluster angezeigt werden.

Erstellen von Rollenzuweisungen für Benutzer zum Zugriff auf den Cluster

Die Besitzer*innen der Azure Arc-fähigen Kubernetes-Ressource können entweder integrierte oder benutzerdefinierte Rollen verwenden, um anderen Benutzer*innen den Zugriff auf die Kubernetes-Cluster zu gewähren.

Integrierte Rollen

Rolle Beschreibung
Anzeigeberechtigter für Azure Arc Kubernetes Ermöglicht schreibgeschützten Zugriff, um die meisten Objekte in einem Namespace anzuzeigen. Diese Rolle lässt das Anzeigen von geheimen Schlüsseln nicht zu, da die read-Berechtigung für geheime Schlüssel den Zugriff auf ServiceAccount-Anmeldeinformationen im Namespace ermöglichen würde. Diese Anmeldeinformationen würden wiederum den API-Zugriff über den Wert ServiceAccount (eine Form der Rechteauswertung) ermöglichen.
Schreibberechtigter für Azure Arc Kubernetes Ermöglicht Lese-/Schreibzugriff auf die meisten Objekte in einem Namespace. Diese Rolle lässt das Anzeigen oder Ändern von Rollen oder Rollenbindungen nicht zu. Diese Rolle ermöglicht jedoch den Zugriff auf Geheimnisse und das Ausführen von Pods als beliebigen ServiceAccount-Wert im Namespace, sodass sie verwendet werden kann, um die API-Zugriffsebenen für einen beliebigen ServiceAccount-Wert im Namespace zu erhalten.
Azure Arc Kubernetes-Administrator Mit dieser Rolle wird Administratorzugriff gewährt. Sie soll innerhalb eines Namespace durch RoleBinding vergeben werden. Wenn Sie sie in RoleBinding verwenden, wird der Lese-/Schreibzugriff auf die meisten Ressourcen in einem Namespace gewährt, einschließlich der Möglichkeit zum Erstellen von Rollen und Rollenbindungen innerhalb des Namespace. Diese Rolle lässt keinen Schreibzugriff auf das Ressourcenkontingent oder den Namespace selbst zu.
Azure Arc Kubernetes-Clusteradministrator Es ermöglicht den Administratoren-Zugriff, um beliebige Aktionen für beliebige Ressourcen auszuführen. Wenn Sie sie in ClusterRoleBinding verwenden, wird die vollständige Steuerung über jede Ressource in dem Cluster und in allen Namespaces gewährt. Wenn Sie sie in RoleBinding verwenden, wird die vollständige Steuerung über jede Ressource im Namespace der Rollenbindung, einschließlich des Namespace selbst gewährt.

Sie können Rollenzuweisungen, die auf den Azure Arc-fähigen Kubernetes-Cluster beschränkt sind, im Azure-Portal im Bereich Zugriffssteuerung (IAM) der Clusterressource erstellen. Sie können auch die folgenden Azure CLI-Befehle verwenden:

az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID

Bei diesen Befehlen kann AZURE-AD-ENTITY-ID ein Benutzername (z. B. testuser@mytenant.onmicrosoft.com) oder sogar der appId-Wert eines Dienstprinzipals sein.

Hier sehen Sie ein weiteres Beispiel für die Erstellung einer Rollenzuweisung, die auf einen bestimmten Namespace innerhalb des Clusters bezogen ist:

az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>

Hinweis

Sie können auf den Cluster bezogene Rollenzuweisungen erstellen, indem Sie entweder das Azure-Portal oder die Azure CLI verwenden. Rollenzuweisungen, die auf Namespaces bezogen sind, können aber nur mithilfe der Azure CLI erstellt werden.

Benutzerdefinierte Rollen

Sie können Ihre eigene Rollendefinition für die Verwendung in den Rollenzuweisungen erstellen.

Das folgende Beispiel zeigt eine Rollendefinition, die zulässt, dass der Benutzer die Bereitstellungen nur lesen kann. Weitere Informationen finden Sie in der vollständigen Liste der Datenaktionen, die zum Erstellen einer Rollendefinition verwendet werden können.

Kopieren Sie das nachstehende JSON-Objekt in eine Datei mit dem Namen custom-role.json. Ersetzen Sie den Platzhalter <subscription-id> durch die tatsächliche Abonnement-ID. Die benutzerdefinierte Rolle verwendet eine der Datenaktionen. Sie ermöglicht Ihnen die Anzeige aller Bereitstellungen in dem Bereich (Cluster oder Namespace), in dem die Rollenzuweisung erstellt wird.

{
    "Name": "Arc Deployment Viewer",
    "Description": "Lets you view all deployments in cluster/namespace.",
    "Actions": [],
    "NotActions": [],
    "DataActions": [
        "Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
    ],
    "NotDataActions": [],
    "assignableScopes": [
        "/subscriptions/<subscription-id>"
    ]
}
  1. Das Erstellen Sie die Rollendefinition, indem Sie den folgenden Befehl aus dem Ordner ausführen, in dem Sie die Datei custom-role.json gespeichert haben:

    az role definition create --role-definition @custom-role.json
    
  2. Das Erstellen einer Rollenzuweisung unter Verwendung dieser benutzerdefinierten Rollendefinition:

    az role assignment create --role "Arc Deployment Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>
    

Konfigurieren von kubectl mit Benutzeranmeldeinformationen

Es gibt zwei Möglichkeiten, die kubeconfig-Datei abzurufen, die Sie für den Zugriff auf den Cluster benötigen:

  • Verwenden Sie die Funktion für die Clusterverbindung (az connectedk8s proxy) des Kubernetes-Clusters mit Azure Arc-Unterstützung.
  • Der Clusteradministrator gibt die kubeconfig-Datei für jeden anderen Benutzer frei.

Verwenden der Clusterverbindung

Führen Sie den folgenden Befehl aus, um den Proxy-Prozess zu starten:

az connectedk8s proxy -n <clusterName> -g <resourceGroupName>

Nachdem der Proxy-Prozess ausgeführt wird, können Sie eine weitere Registerkarte in Ihrer Konsole öffnen, um Anforderungen an den Cluster zu senden.

Verwenden einer freigegebenen kubeconfig-Datei

Die Verwendung einer freigegebenen Kubeconfig erfordert je nach Kubernetes-Version geringfügig unterschiedliche Schritte.

  1. Führen Sie den folgenden Befehl aus, um die Anmeldeinformationen für den Benutzer festzulegen. Geben Sie serverApplicationId als 6256c85f-0aad-4d50-b960-e6e9b21efe35 und clientApplicationId als 3f4439ff-e698-4d6d-84fe-09c9d574f06b an:

    kubectl config set-credentials <testuser>@<mytenant.onmicrosoft.com> \
    --auth-provider=azure \
    --auth-provider-arg=environment=AzurePublicCloud \
    --auth-provider-arg=client-id=<clientApplicationId> \
    --auth-provider-arg=tenant-id=<tenantId> \
    --auth-provider-arg=apiserver-id=<serverApplicationId>
    
  2. Öffnen Sie die kubeconfig-Datei, die Sie vorher erstellt haben. Überprüfen Sie unter contexts, dass der mit dem Cluster verknüpfte Kontext auf die Benutzeranmeldeinformationen verweist, die Sie im vorherigen Schritt erstellt haben. Führen Sie den folgenden Befehl aus, um den aktuellen Kontext auf diese Benutzeranmeldeinformationen festzulegen:

    kubectl config set-context --current=true --user=<testuser>@<mytenant.onmicrosoft.com>
    
  3. Hinzufügen der config-mode-Einstellung unter user>config:

    name: testuser@mytenant.onmicrosoft.com
    user:
        auth-provider:
        config:
            apiserver-id: $SERVER_APP_ID
            client-id: $CLIENT_APP_ID
            environment: AzurePublicCloud
            tenant-id: $TENANT_ID
            config-mode: "1"
        name: azure
    

    Hinweis

    Das Exec-Plug-In ist eine Kubernetes-Authentifizierungsstrategie, mit der kubectl einen externen Befehl ausführen kann, um Benutzeranmeldeinformationen zu empfangen, die an apiserver gesendet werden sollen. Ab Kubernetes Version 1.26 ist das standardmäßige Azure-Autorisierungs-Plug-In nicht mehr in client-go und kubectl enthalten. Mit späteren Versionen müssen Sie Azure Kubelogin, ein client-goexec-Plug-In, das die Azure-Authentifizierung implementiert, verwenden, um das exec-Plug-In zu verwenden, um Benutzeranmeldeinformationen zu erhalten.

  4. Azure Kubelogin installieren:

    • Folgen Sie für Windows oder Mac den Installationsanweisungen von Azure Kubelogin.

    • Laden Sie für Linux oder Ubuntu die neueste Version von Kubelogin herunter und führen Sie dann die folgenden Befehle aus:

      curl -LO https://github.com/Azure/kubelogin/releases/download/"$KUBELOGIN_VERSION"/kubelogin-linux-amd64.zip 
      
      unzip kubelogin-linux-amd64.zip 
      
      sudo mv bin/linux_amd64/kubelogin /usr/local/bin/ 
      
      sudo chmod +x /usr/local/bin/kubelogin 
      
  5. Mit Kubelogin können Sie sich mit Azure Arc-fähigen Clustern authentifizieren, indem Sie ein PoP-Token (Proof-of-Possession) anfordern. Konvertieren Sie den kubeconfig mithilfe von kubelogin so, dass der richtige Anmeldemodus verwendet wird. Für die Gerätecodeanmeldung bei einem Microsoft Entra-Benutzer würden die Befehle z. B. wie folgt aussehen:

    export KUBECONFIG=/path/to/kubeconfig
    
    kubelogin convert-kubeconfig --pop-enabled --pop-claims 'u=<ARM ID of cluster>"
    

Versenden von Anforderungen an den Cluster

  1. Führen Sie einen beliebigen kubectl-Befehl aus. Beispiel:

    • kubectl get nodes
    • kubectl get pods
  2. Wenn Sie zur Durchführung der browserbasierten Authentifizierung aufgefordert werden, kopieren Sie die URL (https://microsoft.com/devicelogin) für die Geräteanmeldung, und öffnen Sie diese in Ihrem Webbrowser.

  3. Geben Sie den auf Ihrer Konsole aufgedruckten Code ein. Kopieren Sie den Code und fügen Sie ihn auf Ihrem Endgerät in die Eingabeaufforderung für die Geräteauthentifizierung ein.

  4. Geben Sie den Benutzernamen (testuser@mytenant.onmicrosoft.com) und das zugehörige Kennwort ein.

  5. Falls eine Fehlermeldung, wie die folgende, angezeigt wird, sind Sie nicht berechtigt auf die angeforderte Ressource zuzugreifen:

    Error from server (Forbidden): nodes is forbidden: User "testuser@mytenant.onmicrosoft.com" cannot list resource "nodes" in API group "" at the cluster scope: User doesn't have access to the resource in Azure. Update role assignment to allow access.
    

    Ein Administrator muss eine neue Rollenzuweisung erstellen, die diesem Benutzer den Zugriff auf die Ressource gewährt.

Bedingten Zugriff mit Microsoft Entra ID verwenden

Wenn Sie Microsoft Entra ID mit Ihrem Azure Arc-fähigen Kubernetes-Cluster integrieren, können Sie den Zugriff darauf auch mithilfe des bedingten Zugriffs steuern.

Hinweis

Microsoft Entra Conditional Access ist eine Microsoft Entra ID P2-Funktion.

So erstellen Sie eine Beispielrichtlinie für bedingten Zugriff, die mit dem Cluster verwendet werden soll

  1. Suchen Sie ganz oben im Azure-Portal nach Microsoft Entra ID und wählen Sie den Eintrag aus.

  2. Wählen Sie im Menü für Microsoft Entra-ID auf der linken Seite Enterprise-Anwendungenaus.

  3. Wählen Sie auf der linken Seite im Menü „Unternehmensanwendungen“ Bedingter Zugriff aus.

  4. Wählen Sie auf der linken Seite im Menü „Bedingter Zugriff“ Richtlinien>Neue Richtlinie aus.

    Screenshot: Hinzufügen einer Richtlinie für bedingten Zugriff im Azure-Portal

  5. Geben Sie einen Namen für die Richtlinie, z. B. arc-k8s-Richtlinie, ein.

  6. Wählen Sie Benutzer und Gruppen aus. Wählen Sie unter Einschließen die Option Benutzer und Gruppen auswählenaus. Wählen Sie dann die Benutzer und Gruppen aus, auf die Sie die Richtlinie anwenden möchten. Wählen Sie in diesem Beispiel dieselbe Microsoft Entra-Gruppe aus, die Administratorzugriff auf Ihr Cluster hat.

    Screenshot: Das Auswählen von Benutzern oder Gruppen, um die Richtlinie für den bedingten Zugriff anzuwenden.

  7. Wählen Sie Cloud-Apps oder -aktionen aus. Wählen Sie unter Einschließen die Option Apps auswählen aus. Suchen Sie dann nach der Serveranwendung, die Sie zuvor erstellt haben, und wählen Sie sie aus.

    Screenshot: Auswählen einer Serveranwendung im Azure-Portal

  8. Klicken Sie unter Zugriffssteuerungen auf Gewähren. Wählen Sie Zugriff gewähren>Markieren des Geräts als konform erforderlich aus.

    Screenshot: Zulassen nur von konformen Geräten im Azure-Portal

  9. Wählen Sie unter Richtlinie aktivieren die Option An>Erstellen aus.

    Screenshot: Aktivieren einer Richtlinie für bedingten Zugriff im Azure-Portal

Ein erneutes Zugreifen auf den Cluster. Das Ausführen des kubectl get nodes-Befehls zum Anzeigen der Knoten im Cluster:

kubectl get nodes

Befolgen Sie die Anweisungen zum erneuten Anmelden. Eine Fehlermeldung zeigt an, dass Sie erfolgreich angemeldet sind. Ihr Administrator fordert aber an, dass das Zugriff anfordernde Gerät von Ihrem Microsoft Entra ID verwaltet werden muss, damit es auf die Ressource zugreifen kann. Führen Sie folgende Schritte aus:

  1. Navigieren Sie im Azure-Portal zu Microsoft Entra ID.

  2. Wählen Sie Unternehmensanwendungen. Wählen Sie dann unter Aktivität die Option Anmeldungen aus.

  3. Ein Eintrag oben zeigt einen Fehler für den Status und den Erfolg für den bedingten Zugriff an. Wählen Sie den Eintrag und dann unter Details die Option Bedingter Zugriff aus. Wie Sie sehen können, ist Ihre Richtlinie für den bedingten Zugriff aufgeführt.

    Screenshot: Eintrag für fehlerhafte Anmeldung im Azure-Portal

Konfigurieren des Just-in-Time-Clusterzugriffs mit Microsoft Entra ID

Eine weitere Option für die Clusterzugriffssteuerung ist die Verwendung von Privileged Identity Management (PIM) für Just-In-Time-Anforderungen.

Hinweis

Microsoft Entra PIM ist eine Microsoft Entra ID P2-Funktion. Weitere Informationen zu Microsoft Entra ID SKUs finden Sie im Preisleitfaden.

Führen Sie die folgenden Schritte aus, um die Just-In-Time-Zugriffsanforderungen für Ihren Cluster zu konfigurieren:

  1. Suchen Sie ganz oben im Azure-Portal nach Microsoft Entra ID und wählen Sie den Eintrag aus.

  2. Notieren Sie die Mandanten-ID. Im nachfolgenden Teil dieser Anleitung bezeichnen wir diese ID als <tenant-id>.

    Screenshot mit Microsoft Entra-ID-Details im Azure-Portal.

  3. Wählen Sie im Menü für die Microsoft Entra-ID auf der linken Seite unter Verwalten Gruppen>Neue Gruppe aus.

  4. Stellen Sie sicher, dass die Sicherheit als Gruppentyp ausgewählt ist. Die Eingabe eine Gruppennamens, z. B. myJITGroup. Wählen Sie unter Microsoft Entra-Rollen können der Gruppe zugewiesen werden (Vorschau) die Option Ja aus. Wählen Sie abschließend Erstellen.

    Screenshot: Details für die neue Gruppe im Azure-Portal

  5. Sie werden zur Seite Gruppen zurückgeleitet. Wählen Sie Ihre neu erstellte Gruppe aus, und notieren Sie die Objekt-ID. Im nachfolgenden Teil dieser Anleitung bezeichnen wir diese ID als <object-id>.

    Screenshot: Objekt-ID für die neue Gruppe im Azure-Portal

  6. Zurück im Azure-Portal, wählen Sie auf der linken Seite im Menü Aktivität die Option Privilegierter Zugriff (Vorschau) aus. Wählen Sie dann Privilegierten Zugriff aktivieren aus.

    Screenshot: Auswahl zum Aktivieren des privilegierten Zugriffs im Azure-Portal

  7. Wählen Sie Zuweisungen hinzufügen aus, um mit der Zugriffsgewährung zu beginnen.

    Screenshot: Hinzufügen von aktiven Zuweisungen im Azure-Portal

  8. Wählen Sie eine Rolle für das Mitglied und anschließend die Benutzer und Gruppen aus, denen Sie Clusterzugriff gewähren möchten. Ein Gruppenadministrator kann diese Zuweisungen jederzeit ändern. Wenn Sie so weit sind, wählen Sie Weiter aus.

    Screenshot: Hinzufügen von Zuweisungen im Azure-Portal

  9. Wählen Sie einen Zuweisungstyp von Aktiv und die gewünschte Dauer aus, und geben Sie eine Begründung an. Wenn Sie so weit sind, wählen Sie Zuweisen aus. Weitere Informationen zu Zuweisungstypen finden Sie unter Zuweisen eines Besitzers oder Mitglieds einer Gruppe.

    Screenshot: Zuweisungseigenschaften im Azure-Portal

Überprüfen Sie sich nach dem Einrichtung der Zuweisungen, dass der Just-In-Time-Zugriff funktioniert, indem Sie auf den Cluster zugreifen. Verwenden Sie dafür z. B. den kubectl get nodes-Befehl zum Anzeigen der Knoten im Cluster:

kubectl get nodes

Beachten Sie die Authentifizierungsanforderung, und führen Sie die Authentifizierungsschritte aus. Wenn der Authentifizierungsvorgang erfolgreich war, sollte eine Ausgabe wie diese angezeigt werden:

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

NAME      STATUS   ROLES    AGE      VERSION
node-1    Ready    agent    6m36s    v1.18.14
node-2    Ready    agent    6m42s    v1.18.14
node-3    Ready    agent    6m33s    v1.18.14

Nächste Schritte