Dela via


Använda Privileged Identity Management (PIM) för att styra åtkomsten till dina AKS-kluster (Azure Kubernetes Service)

När du konfigurerar behörigheter för olika team kanske du vill ange standardbehörigheter för angivna team och sedan bevilja privilegierad åtkomst till specifika användare när det behövs. Med Azure Kubernetes Service (AKS) med Microsoft Entra ID kan du konfigurera PRIVILEGED Identity Management (PIM) för JIT-begäranden (just-in-time).

I den här artikeln kan du se hur du:

  • Ange standardroller för exempelgrupper för att komma åt eller utföra åtgärder i AKS-kluster baserat på Microsoft Entra-gruppmedlemskap.
  • Konfigurera grundläggande roller för åtkomst till AKS-kluster.
  • Självaktiveringsroller för att få just-in-time-åtkomst till AKS-kluster.
  • Ange att godkännare ska godkänna eller neka begäranden om godkännande för just-in-time-åtkomst.

Kommentar

Microsoft Entra Privileged Identity Management (PIM) har Microsoft Entra ID P2- eller Microsoft Entra ID-styrningsfunktioner som kräver en Premium P2 SKU. Mer information finns i Licensieringsgrunderna och prisguiden för Microsoft Entra ID-styrning.

Förutsättningar

Den här artikeln förutsätter att du har ett befintligt AKS-kluster med Microsoft Entra ID-integrering. Om du inte har något kan du läsa Skapa ett AKS-kluster med Microsoft Entra ID-integrering.

Skapa demogrupper i Microsoft Entra-ID

I det här avsnittet skapar vi tre grupper i Microsoft Entra-ID:

  • Standard: Den här gruppen har skrivskyddad åtkomst (Azure Kubernetes Service RBAC Reader) till resurser i AKS-klustret.
  • Administratör: Den här gruppen har administratörsåtkomst (Azure Kubernetes Service RBAC Admin) till resurser i AKS-klustret.
  • Godkännare: Den här gruppen har behörighet att godkänna eller neka begäranden om just-in-time-åtkomst till AKS-klustret.

Du kan bara använda standard - och administratörsgrupper i stället för att skapa en separat godkännargrupp . Men om du inkluderar godkännandebehörigheter i administratörsgruppen kan den medlem som får just-in-time-åtkomst godkänna sina egna begäranden och andras begäranden. Vi rekommenderar inte att du använder den här konfigurationen i en produktionsmiljö, men den är användbar i testsyfte.

Skapa standardgrupp

  1. Hämta resurs-ID:t för AKS-klustret med hjälp av az aks show kommandot .

    AKS_ID=$(az aks show \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --query id \
        --output tsv)
    
  2. Hämta resursgrupps-ID :t för AKS-klustret med hjälp av az group show kommandot .

    RG_ID=$(az group show \
        --resource-group <resource-group-name> \
        --query id \
        --output tsv)
    
  3. Skapa standardgruppen med kommandot az ad group create .

    DEFAULT_ID=$(az ad group create \
        --display-name default \
        --mail-nickname default \
        --query id \
        --output tsv)
    
  4. Skapa en Azure-rolltilldelning för standardgruppen med kommandot az role assignment create .

    Det finns tre roller som du kan tilldela till standardgruppen beroende på dina specifika krav:

    • Azure Kubernetes Service RBAC Reader: Tilldelad i AKS-klustrets omfång och ger grundläggande skrivskyddad åtkomst till de flesta resurser i klustret.
    • Reader: Tilldelad i resursgruppens omfång och ger skrivskyddad åtkomst till resurser i resursgruppen.
    • Azure Kubernetes Service Cluster User Role: Tilldelad i AKS-klustrets omfång och ger åtkomst för att hämta kubeconfig-kontexten för AKS-klustret.
    # 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
    

Skapa administratörsgrupp

  1. Skapa administratörsgruppen med kommandot az ad group create .

    ADMIN_ID=$(az ad group create \
        --display-name admin \
        --mail-nickname admin \
        --query id \
        --output tsv)
    
  2. Azure Kubernetes Service RBAC Admin Tilldela rollen till administratörsgruppen med kommandot az role assignment create .

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

Kommentar

Om du vill låta användare i administratörsgruppen ändra inställningarna för nodpoolen, till exempel manuell skalning, måste du skapa en Contributor rolltilldelning i klusternodpoolen med hjälp av följande kommando:

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

Tänk på att detta endast ger behörighet att skala in eller ut från AKS-resursen. Om du vill tillåta in- eller utskalning från vm-skalningsuppsättningsresursen måste du skapa en tilldelning på nivån Vm-skalningsuppsättning.

Skapa godkännargrupp

  • Skapa godkännargruppen med kommandot az ad group create .

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

Skapa demoanvändare i Microsoft Entra-ID

I det här avsnittet skapar vi två användare i Microsoft Entra-ID: en normal användare med endast standardrollen och en privilegierad användare som kan godkänna eller neka just-in-time-begäranden från den normala användaren.

  1. Skapa den normala användaren med kommandot az ad user create .

    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. Lägg till den normala användaren i standardgruppen med kommandot az ad group member add .

    az ad group member add \
        --group $DEFAULT_ID \
        --member-id $NUSER_ID
    
  3. Skapa den privilegierade användaren med kommandot az ad user create .

    PUSER_ID=$(az ad user create \
        --display-name p01 \
        --password ${PASSWORD} \
        --user-principal-name p01@${DOMAIN} \
        --query id \
        --output tsv)
    
  4. Lägg till den privilegierade användaren i godkännargruppen med kommandot az ad group member add .

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

Aktivera Privileged Identity Management (PIM) för administratörsgruppen

  1. Välj Microsoft Entra-ID på startsidan för Azure Portal.
  2. På tjänstmenyn går du till Hantera, väljer Grupper och sedan administratörsgruppen .
  3. Välj Privileged Identity Management (Privilegierad identitetshantering) under Aktivitet på tjänstmenyn och välj sedan Aktivera PIM för den här gruppen.

Ange en godkännare för administratörsgruppen

  1. På startsidan för Azure Portal söker du efter och väljer Privileged Identity Management( Privileged Identity Management).

  2. På tjänstmenyn går du till Hantera, väljer Grupper och sedan administratörsgruppen .

  3. På tjänstmenyn går du till Hantera och väljer Tilldelningar>Lägg till tilldelningar.

  4. På fliken Medlemskapsidan Lägg till tilldelningar väljer du Medlem som vald roll och standard som vald medlem och väljer sedan Nästa.

  5. På fliken Inställningar väljer du Berättigad som tilldelningstyp och väljer sedan Tilldela.

  6. På tjänstmenyn går du till Hantera och väljer Inställningar>Medlemsredigering>.

  7. På sidan Redigera rollinställning – Medlem markerar du kryssrutan Kräv godkännande för att aktivera och lägger till godkännargruppen som vald godkännare.

    Kommentar

    Om du inte markerar kryssrutan Kräv godkännande för att aktivera kan användarna i standardgruppen själv aktivera rollen för att få just-in-time-åtkomst till AKS-klustret utan godkännande. Användaren i godkännargruppen måste vara medlem i gruppen. Även om du anger användaren som ägare kan de fortfarande inte granska just-in-time-begäranden eftersom gruppägaren bara har administrativa rättigheter till gruppen, inte rolltilldelningen. Du kan ange användaren som medlem och ägare av samma grupp utan konflikt.

  8. Gör eventuella andra nödvändiga ändringar och välj sedan Uppdatera.

Mer information om PIM-konfiguration finns i Konfigurera PIM för grupper.

Interagera med klusterresurser med hjälp av standardrollen

Nu kan vi försöka komma åt AKS-klustret med hjälp av den normala användaren, som är medlem i standardgruppen .

  1. Logga in på Azure Portal som den normala användaren med kommandot az login .

    az login --username n01@$DOMAIN --password ${PASSWORD}
    
  2. Hämta användarautentiseringsuppgifterna för att komma åt klustret med hjälp av az aks get-credentials kommandot .

    az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>
    
  3. Försök att komma åt klusterpoddarna med hjälp av kubectl get kommandot .

    kubectl get pods --namespace kube-system
    

    Dina utdata bör se ut ungefär som i följande exempelutdata, som visar poddarna i kube-system namnområdet:

    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. Försök att komma åt klusterhemligheterna med hjälp av kubectl get kommandot .

    kubectl get secrets --namespace kube-system
    

    Dina utdata bör se ut ungefär som i följande exempelutdata, som visar ett felmeddelande eftersom användaren inte har behörighet att komma åt hemligheterna:

    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.
    

    Rollen Azure Kubernetes Service RBAC Reader har inte behörighet att komma åt hemligheter, så det här felet förväntas.

Begär just-in-time-åtkomst till AKS-klustret

Den här gången kan vi begära just-in-time-åtkomst som tillfällig Azure Kubernetes Service RBAC Admin med hjälp av stegen i Aktivera ditt gruppmedlemskap eller ägarskap i Privileged Identity Management. Information om hur du godkänner eller nekar begäranden som godkännare finns i Godkänna aktiveringsbegäranden för gruppmedlemmar och ägare.

Interagera med klusterresurser med hjälp av administratörsrollen

När du har lagt till Azure Kubernetes Service RBAC Admin rollen tillfälligt kan du komma åt de klusterresurser som kräver administratörsbehörighet.

  1. Ta bort befintliga lagrade token med följande kubelogin kommando:

    kubelogin remove-tokens
    

    Kommentar

    Om det uppstår ett fel på grund av brist på behörigheter loggar du in för att uppdatera behörigheterna med kommandot az login .

  2. Försök att komma åt klusterhemligheterna igen med kommandot kubectl get secrets .

    kubectl get secrets --namespace kube-system
    

    Dina utdata bör se ut ungefär som i följande exempelutdata, som visar hemligheterna kube-system i namnområdet:

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

    Användaren kan nu komma åt hemligheterna eftersom de har Azure Kubernetes Service RBAC Admin rollen.

Överväganden för tokenlivslängd

Om du beviljar roller till användare som använder CLI-verktyg, t.exkubectl. eller kubelogin, kan aktiveringstiden tekniskt sett inte vara mindre än 60 minuter på grund av tokens livslängdsdesign. Även om varaktigheten är inställd på mindre än 60 minuter förblir den faktiska effektiva varaktigheten mellan 60 och 75 minuter.

När kubelogin du försöker hämta token från Microsofts identitetsplattformaccess_token och refresh_token returneras för ytterligare användning. Gör access_token begäranden till API:et och refresh_token används för att hämta en ny access_token när den aktuella upphör att gälla. Det access_token går inte att återkalla när den har genererats, men kan refresh_token återkallas. Om återkallas refresh_token måste användaren autentisera igen för att få en ny refresh_token. Om du vill återkalla refresh_tokenmanuellt kan du använda Revoke-AzureADUserAllRefreshToken.

Nästa steg

Mer information finns i följande artiklar: