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
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)
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)
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)
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
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)
Wijs de
Azure Kubernetes Service RBAC Admin
rol toe aan de beheergroep met behulp van deaz 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.
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)
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
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)
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
- Selecteer microsoft Entra-id op de startpagina van Azure Portal.
- Selecteer groepen in het servicemenu onder Beheren en selecteer vervolgens de beheergroep.
- Selecteer Privileged Identity Management in het servicemenu onder Activiteit en selecteer PIM inschakelen voor deze groep.
Een fiatteur instellen voor de beheergroep
Zoek en selecteer Op de startpagina van Azure Portal Privileged Identity Management.
Selecteer groepen in het servicemenu onder Beheren en selecteer vervolgens de beheergroep.
Selecteer opdrachten>toevoegen in het servicemenu onder Beheren.
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.
Selecteer Op het tabblad Instellingen de optie In aanmerking komen als toewijzingstype en selecteer vervolgens Toewijzen.
Selecteer In het servicemenu onder Beheren de optie Instellingenlid>>bewerken.
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.
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 .
Meld u als normale gebruiker aan bij Azure Portal met behulp van de
az login
opdracht.az login --username n01@$DOMAIN --password ${PASSWORD}
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>
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
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.
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.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_token
te verkrijgen. Als u de refresh_token
functie handmatig wilt intrekken, kunt u dit gebruiken Revoke-AzureADUserAllRefreshToken
.
Volgende stappen
Raadpleeg voor meer informatie de volgende artikelen:
Azure Kubernetes Service