Op rollen gebaseerd toegangsbeheer van Azure gebruiken om toegang tot het Kubernetes-configuratiebestand in Azure Kubernetes Service (AKS) te definiëren

U kunt communiceren met Kubernetes-clusters met behulp van het kubectl hulpprogramma. De Azure CLI biedt een eenvoudige manier om de toegangsreferenties en het kubeconfig-configuratiebestand op te halen om verbinding te maken met uw AKS-clusters met behulp van kubectl. U kunt op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruiken om te beperken wie toegang kan krijgen tot het kubeconfig-bestand en de machtigingen die ze hebben.

In dit artikel leest u hoe u Azure-rollen toewijst die beperken wie de configuratiegegevens voor een AKS-cluster kan ophalen.

Voordat u begint

  • In dit artikel wordt ervan uitgegaan dat u een bestaand AKS-cluster hebt. Als u een AKS-cluster nodig hebt, maakt u er een met behulp van Azure CLI, Azure PowerShell of Azure Portal.
  • Voor dit artikel is ook vereist dat u Azure CLI versie 2.0.65 of hoger gebruikt. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Beschikbare machtigingen voor clusterrollen

Wanneer u communiceert met een AKS-cluster met behulp van het kubectl hulpprogramma, definieert een configuratiebestand, kubeconfig, clusterverbindingsgegevens. Dit configuratiebestand wordt doorgaans opgeslagen in ~/.kube/config. Er kunnen meerdere clusters worden gedefinieerd in dit kubeconfig-bestand . U kunt schakelen tussen clusters met behulp van de kubectl config use-context opdracht.

Met az aks get-credentials de opdracht kunt u de toegangsreferenties voor een AKS-cluster ophalen en deze referenties samenvoegen in het kubeconfig-bestand . U kunt Azure RBAC gebruiken om de toegang tot deze referenties te beheren. Met deze Azure-rollen kunt u definiëren wie het kubeconfig-bestand kan ophalen en welke machtigingen ze hebben binnen het cluster.

Er zijn twee Azure-rollen die u kunt toepassen op een Microsoft Entra-gebruiker of -groep:

  • Azure Kubernetes Service Cluster Beheer-rol

    • Hiermee heeft u toegang tot Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action een API-aanroep. Deze API-aanroep bevat de referenties van de clusterbeheerder.
    • Hiermee downloadt u kubeconfig voor het cluster Beheer rol.
  • Gebruikersrol Azure Kubernetes Service-cluster

    • Hiermee heeft u toegang tot Microsoft.ContainerService/managedClusters/listClusterUserCredential/action een API-aanroep. Deze API-aanroep bevat de referenties van de clustergebruiker.
    • Hiermee downloadt u kubeconfig voor de clusterUser-rol .

Notitie

Op clusters die gebruikmaken van Microsoft Entra-id hebben gebruikers met de rol clusterUser een leeg kubeconfig-bestand waarin een aanmelding wordt gevraagd. Zodra ze zijn aangemeld, hebben gebruikers toegang op basis van hun Microsoft Entra-gebruikers- of groepsinstellingen. Gebruikers met de rol cluster Beheer hebben beheerderstoegang.

Op clusters die geen Microsoft Entra-id gebruiken, heeft de clusterUser-rol hetzelfde effect van cluster Beheer rol.

Rolmachtigingen toewijzen aan een gebruiker of groep

Als u een van de beschikbare rollen wilt toewijzen, moet u de resource-id van het AKS-cluster en de id van het Microsoft Entra-gebruikersaccount of de groep ophalen met behulp van de volgende stappen:

  1. Haal de clusterresource-id op met behulp van de opdracht voor het cluster met de az aks show naam myAKSCluster in de resourcegroep myResourceGroup . Geef indien nodig uw eigen cluster- en resourcegroepnaam op.
  2. Gebruik de az account show en az ad user show opdrachten om uw gebruikers-id op te halen.
  3. Wijs een rol toe met behulp van de az role assignment create opdracht.

In het volgende voorbeeld wordt het Azure Kubernetes Service-cluster Beheer rol toegewezen aan een afzonderlijk gebruikersaccount:

# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)

# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)

# Assign the 'Cluster Admin' role to the user
az role assignment create \
    --assignee $ACCOUNT_ID \
    --scope $AKS_CLUSTER \
    --role "Azure Kubernetes Service Cluster Admin Role"

Als u machtigingen wilt toewijzen aan een Microsoft Entra-groep, werkt u de --assignee parameter bij die in het vorige voorbeeld wordt weergegeven met de object-id voor de groep in plaats van de gebruiker.

Gebruik de opdracht om de object-id voor een groep op te az ad group show halen. Met de volgende opdracht wordt de object-id opgehaald voor de Microsoft Entra-groep met de naam appdev:

az ad group show --group appdev --query objectId -o tsv

Belangrijk

In sommige gevallen, zoals Gastgebruikers van Microsoft Entra, is de user.name in het account anders dan de userPrincipalName.

$ az account show --query user.name -o tsv
user@contoso.com

$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com

In dit geval stelt u de waarde van ACCOUNT_UPN in op userPrincipalName van de Microsoft Entra-gebruiker. Als uw account bijvoorbeeld user.name is user@contoso.com, ziet deze actie eruit als in het volgende voorbeeld:

ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)

De configuratiegegevens ophalen en verifiëren

Zodra de rollen zijn toegewezen, gebruikt u de az aks get-credentials opdracht om de kubeconfig-definitie voor uw AKS-cluster op te halen. In het volgende voorbeeld worden de --admin-referenties opgehaald, die correct werkt als de gebruiker de cluster-Beheer-rol heeft gekregen:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin

Vervolgens kunt u de kubectl config view opdracht gebruiken om te controleren of de context voor het cluster laat zien dat de configuratiegegevens van de beheerder zijn toegepast.

$ kubectl config view

De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://myaksclust-myresourcegroup-19da35-4839be06.hcp.eastus.azmk8s.io:443
  name: myAKSCluster
contexts:
- context:
    cluster: myAKSCluster
    user: clusterAdmin_myResourceGroup_myAKSCluster
  name: myAKSCluster-admin
current-context: myAKSCluster-admin
kind: Config
preferences: {}
users:
- name: clusterAdmin_myResourceGroup_myAKSCluster
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: e9f2f819a4496538b02cefff94e61d35

Rolmachtigingen verwijderen

Gebruik de az role assignment delete opdracht om roltoewijzingen te verwijderen. Geef de account-id en clusterresource-id op die u in de vorige stappen hebt verkregen. Als u de rol hebt toegewezen aan een groep in plaats van een gebruiker, geeft u de juiste groepsobject-id op in plaats van accountobject-id voor de --assignee parameter.

az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER

Volgende stappen

Integreer Microsoft Entra-verificatie voor verbeterde beveiliging bij toegang tot AKS-clusters.