Delen via


Privileged Identity Management (PIM) gebruiken om de toegang tot uw AKS-clusters (Azure Kubernetes Service) te beheren

Bij het instellen van machtigingen voor verschillende teams wilt u mogelijk standaardmachtigingen instellen voor opgegeven teams en vervolgens bevoegde toegang verlenen aan specifieke gebruikers wanneer dat nodig is. Met Behulp van Azure Kubernetes Service (AKS) met Microsoft Entra ID kunt u Privileged Identity Management (PIM) instellen voor Just-In-Time-aanvragen (JIT).

In dit artikel leert u het volgende:

  • Stel standaardrollen in voor bijvoorbeeld groepen voor toegang tot of het uitvoeren van bewerkingen op AKS-clusters op basis van Microsoft Entra-groepslidmaatschappen.
  • Basisrollen configureren voor toegang tot AKS-clusters.
  • Zelf activeren van rollen voor Just-In-Time-toegang tot AKS-clusters.
  • Stel goedkeurders in om goedkeuringsaanvragen voor Just-In-Time-toegang goed te keuren of te weigeren.

Notitie

Microsoft Entra Privileged Identity Management (PIM) heeft Microsoft Entra ID P2 of Microsoft Entra ID-governance mogelijkheden waarvoor een Premium P2-SKU is vereist. Zie Microsoft Entra ID-governance basisprincipes en prijshandleiding voor licenties voor meer informatie.

Vereisten

In dit artikel wordt ervan uitgegaan dat u een bestaand AKS-cluster hebt met Microsoft Entra ID-integratie. Zie Een AKS-cluster maken met Microsoft Entra ID-integratie als u er nog geen hebt.

Demogroepen maken in Microsoft Entra-id

In deze sectie maken we drie groepen in Microsoft Entra ID:

  • Standaard: deze groep heeft alleen-lezentoegang (Azure Kubernetes Service RBAC Reader) tot resources in het AKS-cluster.
  • Beheerder: Deze groep heeft beheerderstoegang (Azure Kubernetes Service RBAC Admin) tot resources in het AKS-cluster.
  • Fiatteur: deze groep heeft machtigingen om aanvragen voor Just-In-Time-toegang tot het AKS-cluster goed te keuren of te weigeren.

U kunt alleen de standaard - en beheergroepen gebruiken in plaats van een afzonderlijke fiatteurgroep te maken. Als u echter goedkeuringsmachtigingen opneemt in de beheergroep , kan het lid dat Just-In-Time-toegang krijgt, hun eigen aanvragen en de aanvragen van anderen goedkeuren. We raden u niet aan deze configuratie te gebruiken in een productieomgeving, maar dit is handig voor testdoeleinden.

Standaardgroep maken

  1. Haal de resource-id van het AKS-cluster op met behulp van de az aks show opdracht.

    AKS_ID=$(az aks show \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --query id \
        --output tsv)
    
  2. Haal de resourcegroep-id van het AKS-cluster op met behulp van de az group show opdracht.

    RG_ID=$(az group show \
        --resource-group <resource-group-name> \
        --query id \
        --output tsv)
    
  3. Maak de standaardgroep met behulp van de az ad group create opdracht.

    DEFAULT_ID=$(az ad group create \
        --display-name default \
        --mail-nickname default \
        --query id \
        --output tsv)
    
  4. Maak een Azure-roltoewijzing voor de standaardgroep met behulp van de az role assignment create opdracht.

    Er zijn drie rollen die u kunt toewijzen aan de standaardgroep , afhankelijk van uw specifieke vereisten:

    • Azure Kubernetes Service RBAC Reader: Toegewezen aan het bereik van het AKS-cluster en biedt eenvoudige alleen-lezentoegang tot de meeste resources in het cluster.
    • Reader: Toegewezen aan het bereik van de resourcegroep en geeft alleen-lezen toegang tot resources in de resourcegroep.
    • Azure Kubernetes Service Cluster User Role: Toegewezen aan het bereik van het AKS-cluster en geeft toegang om de kubeconfig-context voor het AKS-cluster op te halen.
    # Assign the Azure Kubernetes Service RBAC Reader role to the default group
    az role assignment create \
        --role "Azure Kubernetes Service RBAC Reader" \
        --assignee $DEFAULT_ID \
        --scope $AKS_ID
    
    # Assign the Reader role to the default group
    az role assignment create \
        --role "Reader" \
        --assignee $DEFAULT_ID \
        --scope $RG_ID
    
    # Assign the Azure Kubernetes Service Cluster User Role to the default group
    az role assignment create \
        --role "Azure Kubernetes Service Cluster User Role" \
        --assignee $DEFAULT_ID \
        --scope $AKS_ID
    

Beheerdersgroep maken

  1. Maak de beheergroep met behulp van de az ad group create opdracht.

    ADMIN_ID=$(az ad group create \
        --display-name admin \
        --mail-nickname admin \
        --query id \
        --output tsv)
    
  2. Wijs de Azure Kubernetes Service RBAC Admin rol toe aan de beheergroep met behulp van de az role assignment create opdracht.

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Admin" \
        --assignee $ADMIN_ID \
        --scope $AKS_ID
    

Notitie

Als u wilt dat gebruikers in de beheergroep instellingen voor knooppuntgroepen wijzigen, zoals handmatig schalen, moet u een Contributor roltoewijzing maken in de clusterknooppuntgroep met behulp van de volgende opdracht:

az role assignment create \
   --role "Contributor" \
   --assignee $ADMIN_ID \
   --scope $AKS_ID/nodepools/<node-pool-name>

Houd er rekening mee dat hiermee alleen machtigingen worden verleend voor het in- of uitschalen van de AKS-resource. Als u in- of uitschalen wilt toestaan vanuit de virtuele-machineschaalsetresource, moet u een toewijzing maken op het niveau van de virtuele-machineschaalset.

Fiatteurgroep maken

  • Maak de fiatteurgroep met behulp van de az ad group create opdracht.

    APPROVER_ID=$(az ad group create \
        --display-name approver \
        --mail-nickname approver \
        --query id \
        --output tsv)
    

Demogebruikers maken in Microsoft Entra ID

In deze sectie maken we twee gebruikers in Microsoft Entra ID: een normale gebruiker met alleen de standaardrol en een bevoegde gebruiker die Just-In-Time-aanvragen van de normale gebruiker kan goedkeuren of weigeren.

  1. Maak de normale gebruiker met behulp van de az ad user create opdracht.

    DOMAIN=contoso.com
    PASSWORD=Password1
    
    NUSER_ID=$(az ad user create \
        --display-name n01 \
        --password ${PASSWORD} \
        --user-principal-name n01@${DOMAIN} \
        --query id \
        --output tsv)
    
  2. Voeg de normale gebruiker toe aan de standaardgroep met behulp van de az ad group member add opdracht.

    az ad group member add \
        --group $DEFAULT_ID \
        --member-id $NUSER_ID
    
  3. Maak de bevoegde gebruiker met behulp van de az ad user create opdracht.

    PUSER_ID=$(az ad user create \
        --display-name p01 \
        --password ${PASSWORD} \
        --user-principal-name p01@${DOMAIN} \
        --query id \
        --output tsv)
    
  4. Voeg de bevoegde gebruiker toe aan de fiatteurgroep met behulp van de az ad group member add opdracht.

    az ad group member add \
        --group $APPROVER_ID \
        --member-id $PUSER_ID
    

Privileged Identity Management (PIM) inschakelen voor de beheergroep

  1. Selecteer microsoft Entra-id op de startpagina van Azure Portal.
  2. Selecteer groepen in het servicemenu onder Beheren en selecteer vervolgens de beheergroep.
  3. Selecteer Privileged Identity Management in het servicemenu onder Activiteit en selecteer PIM inschakelen voor deze groep.

Een fiatteur instellen voor de beheergroep

  1. Zoek en selecteer Op de startpagina van Azure Portal Privileged Identity Management.

  2. Selecteer groepen in het servicemenu onder Beheren en selecteer vervolgens de beheergroep.

  3. Selecteer opdrachten>toevoegen in het servicemenu onder Beheren.

  4. Selecteer Op het tabblad Lidmaatschap van de pagina Toewijzingen toevoegen de optie Lid als de geselecteerde rol en standaard als het geselecteerde lid en selecteer vervolgens Volgende.

  5. Selecteer Op het tabblad Instellingen de optie In aanmerking komen als toewijzingstype en selecteer vervolgens Toewijzen.

  6. Selecteer In het servicemenu onder Beheren de optie Instellingenlid>>bewerken.

  7. Schakel op de instelling Rol bewerken - Lidpagina het selectievakje Goedkeuring vereisen in om het selectievakje te activeren en voeg de fiatteurgroep toe als de geselecteerde fiatteur.

    Notitie

    Als u het selectievakje Goedkeuring vereisen om te activeren niet inschakelt, kunnen de gebruikers in de standaardgroep de rol zelf activeren om just-in-time toegang te krijgen tot het AKS-cluster zonder goedkeuring. De gebruiker in de fiatteurgroep moet lid zijn van de groep. Zelfs als u de gebruiker instelt als de eigenaar, kunnen ze nog steeds geen Just-In-Time-aanvragen controleren omdat de groepseigenaar alleen beheerdersrechten heeft voor de groep, niet de roltoewijzing. U kunt de gebruiker instellen als lid en eigenaar van dezelfde groep zonder conflict.

  8. Breng eventuele andere benodigde wijzigingen aan en selecteer Vervolgens Bijwerken.

Zie PIM configureren voor groepen voor meer informatie over PIM-configuratie.

Interactie met clusterbronnen met behulp van de standaardrol

Nu kunnen we proberen toegang te krijgen tot het AKS-cluster met behulp van de normale gebruiker, die lid is van de standaardgroep .

  1. Meld u als normale gebruiker aan bij Azure Portal met behulp van de az login opdracht.

    az login --username n01@$DOMAIN --password ${PASSWORD}
    
  2. Haal de gebruikersreferenties op voor toegang tot het cluster met behulp van de az aks get-credentials opdracht.

    az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>
    
  3. Probeer toegang te krijgen tot de clusterpods met behulp van de kubectl get opdracht.

    kubectl get pods --namespace kube-system
    

    Uw uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarin de pods in de kube-system naamruimte worden weergegeven:

    NAME                                   READY   STATUS    RESTARTS   AGE
    azure-ip-masq-agent-2rdd9              1/1     Running   0          30h
    azure-policy-767c9d9d9d-886rf          1/1     Running   0          31h
    cloud-node-manager-92t6h               1/1     Running   0          30h
    coredns-789789675-b2dhg                1/1     Running   0          31h
    coredns-autoscaler-77bbc46446-pgt92    1/1     Running   0          31h
    csi-azuredisk-node-lnzrf               3/3     Running   0          30h
    csi-azurefile-node-lhbxr               3/3     Running   0          31h
    konnectivity-agent-7645d94b-9wqct      1/1     Running   0          30h
    kube-proxy-lkx4w                       1/1     Running   0          31h
    metrics-server-5955767688-lpbjb        2/2     Running   0          30h
    
  4. Probeer toegang te krijgen tot de clustergeheimen met behulp van de kubectl get opdracht.

    kubectl get secrets --namespace kube-system
    

    Uw uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarin een foutbericht wordt weergegeven omdat de gebruiker geen toegang heeft tot de geheimen:

    Error from server (Forbidden): secrets is forbidden: User "[email protected]" cannot list resource "secrets" in API group "" in the namespace "kube-system": User does not have access to the resource in Azure. Update role assignment to allow access.
    

    De Azure Kubernetes Service RBAC Reader rol heeft geen toegang tot geheimen, dus deze fout wordt verwacht.

Just-In-Time-toegang tot het AKS-cluster aanvragen

Deze keer kunnen we Just-In-Time-toegang aanvragen als tijdelijk Azure Kubernetes Service RBAC Admin met behulp van de stappen in Uw groepslidmaatschap activeren of eigendom in Privileged Identity Management. Zie Activeringsaanvragen goedkeuren voor groepsleden en eigenaren voor meer informatie over het goedkeuren of weigeren van aanvragen als fiatteur.

Interactie met clusterbronnen met behulp van de beheerdersrol

Nadat u de Azure Kubernetes Service RBAC Admin rol tijdelijk hebt toegevoegd, hebt u toegang tot de clusterbronnen waarvoor beheerdersmachtigingen zijn vereist.

  1. Verwijder bestaande opgeslagen tokens met behulp van de volgende kubelogin opdracht:

    kubelogin remove-tokens
    

    Notitie

    Als er een fout optreedt vanwege een gebrek aan machtigingen, meldt u zich aan om de machtigingen te vernieuwen met behulp van de az login opdracht.

  2. Probeer opnieuw toegang te krijgen tot de clustergeheimen met behulp van de kubectl get secrets opdracht.

    kubectl get secrets --namespace kube-system
    

    Uw uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarin de geheimen in de kube-system naamruimte worden weergegeven:

    NAME                     TYPE                            DATA   AGE
    bootstrap-token-sw3rck   bootstrap.kubernetes.io/token   4      35h
    konnectivity-certs       Opaque                          3      35h
    

    De gebruiker heeft nu toegang tot de geheimen omdat deze de Azure Kubernetes Service RBAC Admin rol heeft.

Overwegingen voor levensduur van tokens

Als u vanwege het levensduurontwerp van tokens rollen verleent aan gebruikers die CLI-hulpprogramma's gebruiken, zoals kubectl ofkubelogin, kan de activeringsduur technisch niet minder dan 60 minuten zijn. Zelfs als de duur is ingesteld op minder dan 60 minuten, blijft de werkelijke effectieve duur tussen 60-75 minuten.

Wanneer kubelogin wordt geprobeerd tokens op te halen van het Microsoft Identity Platformaccess_token en refresh_token worden ze geretourneerd voor verder gebruik. Hiermee access_token worden aanvragen naar de API verzonden en wordt refresh_token deze gebruikt om een nieuw access_token exemplaar op te halen wanneer de huidige verloopt. De access_token kan niet worden ingetrokken nadat deze is gegenereerd, maar de refresh_token kan worden ingetrokken. Als de gebruiker refresh_token is ingetrokken, moet de gebruiker zich opnieuw verifiëren om een nieuwe refresh_tokente verkrijgen. Als u de refresh_tokenfunctie handmatig wilt intrekken, kunt u dit gebruiken Revoke-AzureADUserAllRefreshToken.

Volgende stappen

Raadpleeg voor meer informatie de volgende artikelen: