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-serviceclusterbeheerderrol
- 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 de clusterAdmin-rol .
- Hiermee heeft u toegang tot
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 .
- Hiermee heeft u toegang tot
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 clusteradmin-rol hebben beheerderstoegang.
Op clusters die geen Microsoft Entra-id gebruiken, heeft de rol clusterUser hetzelfde effect van de clusterAdmin-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:
- 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. - Gebruik de
az account show
enaz ad user show
opdrachten om uw gebruikers-id op te halen. - Wijs een rol toe met behulp van de
az role assignment create
opdracht.
In het volgende voorbeeld wordt de azure Kubernetes-serviceclusterbeheerderrol 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 werken als de gebruiker de clusterbeheerderrol 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.
Azure Kubernetes Service