Machtigingen en op rollen gebaseerd toegangsbeheer (RBAC) instellen in het AKS-bureaublad

Schermopname van een diagram met AKS-bureaublad-RBAC-roltoewijzingen voor clusteroperator- en ontwikkelaarsrollen

Afhankelijk van uw rol als clusteroperator of ontwikkelaar kunt u een omgeving (Project) in AKS-bureaublad opgeven voor ontwikkelaars om toepassingen te implementeren, migreren of beheren, of om toepassingen zelf te implementeren en beheren op een toegewezen AKS-cluster. U kunt ook meer ontwikkelaars toegang verlenen tot het beheren, observeren en oplossen van problemen met toepassingen.

Wanneer u een Project maakt in het AKS-bureaublad, kunt u dit standaard delen met andere personen in uw organisatie en worden de machtigingen voor u ingesteld. Mogelijk moet u echter machtigingen gedurende een bepaalde periode onderhouden of automatiseren of een operationeel model definiëren door de juiste machtigingen in te stellen.

In dit artikel wordt beschreven hoe u RBAC-machtigingen beheert om teamleden in staat te stellen met AKS-bureaublad te werken.

Opmerking

AKS-bureaublad biedt momenteel geen UI-optie om de projectmachtigingen na het aanmaken te wijzigen. Als u machtigingen wilt bijwerken of toegang wilt verlenen aan extra gebruikers nadat een Project is gemaakt, gebruikt u Azure Portal of Azure CLI, zoals beschreven in dit artikel.

Opmerking

Wanneer u projecten maakt in het AKS-bureaublad, worden door AKS beheerde naamruimten gemaakt in dezelfde resourcegroep als uw cluster.

Vereiste voorwaarden

  • Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken.
  • Azure CLI versie 2.64.0 of hoger geïnstalleerd en geconfigureerd. Controleer uw versie met behulp van de az --version opdracht. Voor het installeren of upgraden, zie Azure CLI installeren.
  • De aks-preview Azure CLI-extensie. Installeer deze met behulp van de az extension add --name aks-preview opdracht.
  • Een basiskennis van op rollen gebaseerd toegangsbeheer van Azure (RBAC), zie Wat is Azure RBAC? en ingebouwde Azure-rollen.
  • Een Azure-resourcegroep die uw AKS-cluster en alle AKS-beheerde projecten bevat die zijn gemaakt via AKS Desktop.
  • Een AKS Standard-cluster dat voldoet aan de AKS-bureaubladvereisten of een automatisch AKS-cluster. Dit is het Kubernetes-cluster waarop uw toepassingen worden uitgevoerd.
  • Een Azure Container Registry (ACR) voor het opslaan van uw containerinstallatiekopieën voor implementatie.

Verantwoordelijkheden van clusteroperator

Als clusteroperator bent u verantwoordelijk voor het inrichten en configureren van de basisinfrastructuur waarmee ontwikkelteams toepassingen kunnen bouwen en implementeren. Uw verantwoordelijkheden zijn onder andere:

  • De vereiste Azure-infrastructuur maken (resourcegroep, AKS-cluster, ACR).
  • ACR-integratie configureren met uw AKS-cluster.
  • Machtigingen toewijzen voor gebruikers om projecten te maken.
  • U kunt eventueel machtigingsbeheer delegeren aan projectmakers.

Infrastructuurbronnen maken

Als u de infrastructuurmiddelen wilt maken, hebt u machtigingen nodig om resources te maken in Azure. Als u de rol Eigenaar RBAC niet hebt toegewezen, hebt u de rol Inzender nodig om resources te maken en de rol Beheerder voor gebruikerstoegang om machtigingen toe te wijzen aan andere gebruikers. Wijs machtigingen toe aan gebruikers zodat ze resources in de resourcegroep kunnen maken met behulp van de volgende stappen:

  1. Stel omgevingsvariabelen in voor uw resourcegroep en clusternaam. Zorg ervoor dat u de plaatsaanduidingen vervangt door de werkelijke resourcegroepen en clusternamen.

    export RESOURCE_GROUP=<infra-resource-group>
    export CLUSTER_NAME=<cluster-name>
    export SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    export ACR_NAME=<acr-name>
    
  2. Wijs de benodigde rol toe om resources in de resourcegroep te maken met behulp van de az role assignment create opdracht. Zorg ervoor dat u <user-id> vervangt door de juiste gebruiker- of service-principal-id.

    az role assignment create --role "Contributor" \
        --assignee <user-id> \
        --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP
    

ACR integreren met uw AKS-cluster

Koppel uw Azure-containerregister aan uw AKS-cluster met behulp van de az aks update opdracht.

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --attach-acr $ACR_NAME

Een model voor het maken van een project selecteren

Als clusteroperator hebt u twee opties voor hoe ontwikkelaars met projecten werken in AKS desktop.

  • Selfservicemodel: ontwikkelaars maken en beheren hun eigen projecten. Deze benadering biedt ontwikkelaars volledige autonomie, maar vereist dat de rol Azure Kubernetes Service Namespace Contributor aan hen wordt verleend. Wanneer ontwikkelaars hun eigen projecten maken, ontvangen ze automatisch de rol Eigenaar in de beheerde naamruimte en kunnen ze direct beginnen met het implementeren van toepassingen.
  • Beheerd model: U maakt projecten voor ontwikkelaars en verleent ze toegang. Op dit moment kunt u dit configureren tijdens het maken van Project. Deze aanpak biedt meer controle over het maken van Project, maar als u meer teamleden wilt toewijzen aan het maken van Project, moet u ze de benodigde machtigingen toewijzen met behulp van Azure Portal of Azure CLI, zoals beschreven in de volgende secties.

Selfservicemodel: ontwikkelaars toestaan hun eigen projecten te maken

Als u wilt dat ontwikkelaars hun eigen projecten kunnen maken, wijst u hen de rol Azure Kubernetes Service-naamruimtebijdrager toe aan het AKS-cluster. AKS-bureaubladprojecten maken achter de schermen beheerde AKS-naamruimten en deze rol verleent de benodigde machtigingen.

Wijs ontwikkelaars de rol Inzender voor Azure Kubernetes Service-naamruimte toe met behulp van de az role assignment create opdracht. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id.

az role assignment create \
    --role "Azure Kubernetes Service Namespace Contributor" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Beheerd model: Projecten maken voor ontwikkelaars en toegang toewijzen

Als u liever projecten wilt maken namens ontwikkelaars, moet u drie essentiële rollen toewijzen om ze toegang te geven tot het cluster en binnen hun toegewezen naamruimte te werken:

  • Gebruikersrol Azure Kubernetes Service-cluster: hiermee kunnen ontwikkelaars de clusterreferenties downloaden met behulp van de az aks get-credentials opdracht.
  • Azure Kubernetes Service Namespace User: verleent toegang tot de beheerde naamruimte.
  • Een van de Kubernetes RBAC-rollen (Lezer, Schrijver of Beheerder): bepaalt welke acties ze in de naamruimte kunnen uitvoeren.

Alle drie de rollen zijn vereist voor ontwikkelaars om toegang te krijgen tot en te werken met hun projecten in het AKS-bureaublad. Zonder de gebruikersrol Azure Kubernetes Service-cluster kunnen ontwikkelaars het kubeconfig-bestand dat nodig is om verbinding te maken met het cluster niet downloaden.

Clustertoegang toewijzen

Wijs de Azure Kubernetes Service Cluster-gebruikersrol toe om het downloaden van de kubeconfig in te schakelen met behulp van de az role assignment create commando. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id.

az role assignment create \
    --role "Azure Kubernetes Service Cluster User Role" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Toegang tot naamruimte toewijzen

Wijs de rol Azure Kubernetes Service Namespace User toe aan het specifieke project of de naamruimte met de opdracht az role assignment create. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id.

export NAMESPACE_NAME=<namespace-or-project-name>

az role assignment create \
    --role "Azure Kubernetes Service Namespace User" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME/namespaces/$NAMESPACE_NAME

Kubernetes RBAC-rol toewijzen

Wijs de juiste Kubernetes RBAC-rol toe op basis van wat de ontwikkelaar moet doen:

  • Azure Kubernetes Service RBAC Reader voor alleen-lezentoegang.
  • Azure Kubernetes Service RBAC Writer voor het implementeren van toepassingen.
  • Azure Kubernetes Service RBAC Admin voor volledig beheer.
  1. Haal de AKS-cluster-id op met behulp van de az aks show opdracht.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Wijs de juiste Kubernetes RBAC-rol toe met behulp van de az role assignment create opdracht. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id. In het volgende voorbeeld wordt de rol Azure Kubernetes Service RBAC Writer toegewezen:

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Writer" \
        --assignee <developer-user-id> \
        --scope $AKS_ID/namespaces/$NAMESPACE_NAME
    

Toestaan dat projectmakers toegangsmachtigingen toewijzen (optioneel)

Als u wilt dat projectmakers toegangsmachtigingen kunnen toewijzen aan andere gebruikers, verleent u hen de rol Beheerder voor gebruikerstoegang . Met deze machtiging kan de gebruiker machtigingen instellen voor alle resources in de infrastructuurresourcegroep.

Wijs de rol Administrator voor gebruikerstoegang toe met behulp van de az role assignment create opdracht. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id.

az role assignment create \
    --role "User Access Administrator" \
    --assignee <user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP

Verantwoordelijkheden voor ontwikkelaars

Als ontwikkelaar werkt u in een bestaande AKS-bureaubladomgeving om toepassingen te implementeren, projecten te beheren en uw workloads te bewaken. De clusteroperator verleent u de benodigde machtigingen om deze taken uit te voeren. Uw verantwoordelijkheden zijn onder andere:

  • Toepassingen implementeren in Projecten.
  • Geïmplementeerde toepassingen weergeven en beheren.
  • Metrische gegevens en logboeken van toepassingen bewaken.
  • Projecttoegang wijzigen (indien nodig).

Vereiste gebruikersrollen voor ontwikkelaars

Als u als ontwikkelaar met AKS-bureaublad wilt werken, moet uw clusteroperator u drie essentiële rollen toewijzen:

  • Gebruikersrol Azure Kubernetes Service-cluster: hiermee kunt u clusterreferenties downloaden met behulp van de az aks get-credentials opdracht. Dit is een vereiste om vanaf uw lokale computer of via het AKS-bureaublad verbinding te maken met het cluster.

  • Azure Kubernetes Service Namespace User: verleent toegang tot uw toegewezen beheerde naamruimte/Project.

  • Een van de Kubernetes RBAC-rollen (Lezer, Schrijver of Beheerder): bepaalt welke acties u in de naamruimte kunt uitvoeren.

    • Azure Kubernetes Service RBAC Reader voor alleen-lezentoegang.
    • Azure Kubernetes Service RBAC Writer voor het implementeren van toepassingen.
    • Azure Kubernetes Service RBAC Admin voor volledig beheer.

Hoe machtigingen worden toegewezen

Machtigingen worden toegewezen op basis van hoe projecten worden gemaakt in het AKS-bureaublad:

  • Projectmaker: ontvangt automatisch de rol Eigenaar in de beheerde naamruimte en alle benodigde machtigingen voor het implementeren van toepassingen.

  • Andere gebruikers: moet toegang krijgen door de clusteroperator of projectmaker. Ze ontvangen:

    • Gebruikersrol Azure Kubernetes Service-cluster op het cluster.
    • De rol 'Azure Kubernetes Service Namespace User' op de naamruimte.
    • Een van de Kubernetes RBAC-rollen (Lezer, Schrijver of Beheerder).

Als u toepassingen wilt implementeren, hebt u de rol Schrijver of Beheerder nodig. Zie Ingebouwde rollen voor beheerde naamruimten voor meer informatie.

Metrische toepassingsgegevens weergeven

Opmerking

Het kan tot tien minuten duren voordat de metrische gegevens zijn ingevuld zodra een toepassing is geïmplementeerd.

In het beginscherm van Project kunt u metrische gegevens voor uw toepassing bekijken, zoals CPU, geheugen en netwerkgebruik. Deze metrische gegevens zijn afkomstig van het beheerde Prometheus-eindpunt dat wordt ondersteund door een Azure Monitor-werkruimte.

Als u metrische gegevens wilt weergeven, hebt u de rol Bewakingsgegevenslezer in de Azure Monitor-werkruimte nodig. Deze rol verleent toegang tot alle metrische gegevens voor het cluster, niet alleen uw specifieke projecten.

Uw clusteroperator kan deze machtiging toewijzen met behulp van de volgende stappen:

  1. Identificeer de Azure Monitor-werkruimte die door uw cluster wordt gebruikt met behulp van de az alerts-management prometheus-rule-group list opdracht.

    export WORKSPACE_ACC_FOR_PROM_RULES=$(az alerts-management prometheus-rule-group list \
        --resource-group "$RESOURCE_GROUP" \
        --query "[?clusterName=='$CLUSTER_NAME'] | [0].scopes[0]" \
        --output tsv)
    
  2. Wijs de rol Bewakingsgegevenslezer toe met behulp van de az role assignment create opdracht. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id.

    az role assignment create \
        --role "Monitoring Data Reader" \
        --assignee <user-id> \
        --scope $WORKSPACE_ACC_FOR_PROM_RULES
    

Project-toegangsmachtigingen wijzigen

Op dit moment biedt het AKS-bureaublad geen UI-optie voor het wijzigen van Project-machtigingen na het maken. Als u uw machtigingen moet bijwerken of toegang wilt verlenen aan anderen, moet u contact opnemen met uw clusteroperator om machtigingen bij te werken met behulp van Azure Portal of Azure CLI. In de volgende stappen wordt beschreven hoe u de benodigde rollen toewijst met behulp van Azure CLI:

Clustertoegang toewijzen

Wijs de Azure Kubernetes Service Cluster-gebruikersrol toe om het downloaden van de kubeconfig in te schakelen met behulp van de az role assignment create commando. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id.

az role assignment create \
    --role "Azure Kubernetes Service Cluster User Role" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Toegang tot naamruimte toewijzen

Wijs de rol Azure Kubernetes Service Namespace User toe aan het specifieke project of de naamruimte met de opdracht az role assignment create. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id.

export NAMESPACE_NAME=<namespace-or-project-name>

az role assignment create \
    --role "Azure Kubernetes Service Namespace User" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME/namespaces/$NAMESPACE_NAME

Kubernetes RBAC-rol toewijzen

Wijs de juiste Kubernetes RBAC-rol toe op basis van wat de ontwikkelaar moet doen:

  • Azure Kubernetes Service RBAC Reader voor alleen-lezentoegang.
  • Azure Kubernetes Service RBAC Writer voor het implementeren van toepassingen.
  • Azure Kubernetes Service RBAC Admin voor volledig beheer.
  1. Haal de AKS-cluster-id op met behulp van de az aks show opdracht.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Wijs de juiste Kubernetes RBAC-rol toe met behulp van de az role assignment create opdracht. Zorg ervoor dat u de tijdelijke aanduiding vervangt door de juiste gebruikers- of service-principal-id. In het volgende voorbeeld wordt de rol Azure Kubernetes Service RBAC Writer toegewezen:

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Writer" \
        --assignee <developer-user-id> \
        --scope $AKS_ID/namespaces/$NAMESPACE_NAME
    

Machtigingen verlenen voor het weergeven van metrische gegevens (optioneel)

Als u machtigingen wilt verlenen om metrische gegevens weer te geven, volgt u de stappen in de sectie Metrische gegevens van de toepassing weergeven .