Op rollen gebaseerd toegangsbeheer van Azure gebruiken voor Kubernetes-autorisatie
In dit artikel wordt beschreven hoe u Azure RBAC gebruikt voor Kubernetes-autorisatie, waarmee u geïntegreerd beheer en toegangsbeheer kunt uitvoeren voor Azure-resources, AKS- en Kubernetes-resources. Zie Azure RBAC voor Kubernetes-autorisatie voor meer informatie.
Notitie
Wanneer u geïntegreerde verificatie gebruikt tussen Microsoft Entra-id en AKS, kunt u Microsoft Entra-gebruikers, -groepen of -service-principals gebruiken als onderwerp in Kubernetes-op rollen gebaseerd toegangsbeheer (Kubernetes RBAC). Met deze functie hoeft u gebruikersidentiteiten en referenties voor Kubernetes niet afzonderlijk te beheren. U moet Echter nog steeds Azure RBAC en Kubernetes RBAC afzonderlijk instellen en beheren.
Voordat u begint
- U moet Azure CLI versie 2.24.0 of hoger hebben geïnstalleerd en geconfigureerd. 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. - U hebt een minimumversie van 1.18.3 nodig
kubectl
. - U hebt beheerde Microsoft Entra-integratie in uw cluster nodig voordat u Azure RBAC voor Kubernetes-autorisatie kunt toevoegen. Zie Microsoft Entra-id gebruiken in AKS als u beheerde Microsoft Entra-integratie wilt inschakelen.
- Als u CRD's hebt en aangepaste roldefinities maakt, is het gebruik van CRD's de enige manier om crd's te gebruiken
Microsoft.ContainerService/managedClusters/*/read
. Voor de resterende objecten kunt u de specifieke API-groepen gebruiken, zoalsMicrosoft.ContainerService/apps/deployments/read
. - Het kan vijf minuten duren voordat nieuwe roltoewijzingen zijn doorgegeven en bijgewerkt door de autorisatieserver.
- Azure RBAC voor Kubernetes-autorisatie vereist dat de Microsoft Entra-tenant die is geconfigureerd voor verificatie, hetzelfde is als de tenant voor het abonnement dat uw AKS-cluster bevat.
Een nieuw AKS-cluster maken met beheerde Microsoft Entra-integratie en Azure RBAC voor Kubernetes-autorisatie
Maak een Azure-resourcegroep met behulp van de
az group create
opdracht.export RESOURCE_GROUP=<resource-group-name> export LOCATION=<azure-region> az group create --name $RESOURCE_GROUP --location $LOCATION
Maak een AKS-cluster met beheerde Microsoft Entra-integratie en Azure RBAC voor Kubernetes-autorisatie met behulp van de
az aks create
opdracht.export CLUSTER_NAME=<cluster-name> az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-aad \ --enable-azure-rbac \ --generate-ssh-keys
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
"AADProfile": { "adminGroupObjectIds": null, "clientAppId": null, "enableAzureRbac": true, "managed": true, "serverAppId": null, "serverAppSecret": null, "tenantId": "****-****-****-****-****" }
Azure RBAC inschakelen op een bestaand AKS-cluster
Schakel Azure RBAC in voor Kubernetes-autorisatie op een bestaand AKS-cluster met behulp van de
az aks update
opdracht met de--enable-azure-rbac
vlag.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-azure-rbac
Azure RBAC uitschakelen voor Kubernetes-autorisatie vanuit een AKS-cluster
Verwijder Azure RBAC voor Kubernetes-autorisatie uit een bestaand AKS-cluster met behulp van de
az aks update
opdracht met de--disable-azure-rbac
vlag.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-azure-rbac
Ingebouwde AKS-rollen
AKS biedt de volgende ingebouwde rollen:
Rol | Beschrijving |
---|---|
Azure Kubernetes Service RBAC Reader | Staat alleen-lezentoegang toe om de meeste objecten in een naamruimte te zien. Het is niet toegestaan om rollen of rolbindingen weer te geven. Deze rol staat weergave niet toe Secrets , omdat het lezen van de inhoud van Geheimen toegang biedt tot ServiceAccount-referenties in de naamruimte, waardoor API-toegang wordt toegestaan als een ServiceAccount in de naamruimte (een vorm van escalatie van bevoegdheden). |
Azure Kubernetes Service RBAC Writer | Hiermee staat u lees-/schrijftoegang toe tot de meeste objecten in een naamruimte. Deze rol staat het weergeven of wijzigen van rollen of rolbindingen niet toe. Met deze rol kunnen pods echter worden geopend Secrets en uitgevoerd als een ServiceAccount in de naamruimte, zodat deze kan worden gebruikt om de API-toegangsniveaus van een ServiceAccount in de naamruimte te verkrijgen. |
Azure Kubernetes Service RBAC-beheerder | Hiermee staat u beheerderstoegang toe, bedoeld om binnen een naamruimte te worden verleend. Hiermee staat u lees-/schrijftoegang toe tot de meeste resources in een naamruimte (of clusterbereik), inclusief de mogelijkheid om rollen en rolbindingen binnen de naamruimte te maken. Met deze rol is schrijftoegang tot het resourcequotum of de naamruimte zelf niet toegestaan. |
Azure Kubernetes Service RBAC-clusterbeheerder | Hiermee kan supergebruiker elke actie uitvoeren op elke resource. Het geeft volledige controle over elke resource in het cluster en in alle naamruimten. |
Roltoewijzingen maken voor clustertoegang
Haal uw AKS-resource-id op met behulp van de
az aks show
opdracht.AKS_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query id --output tsv)
Maak een roltoewijzing met behulp van de
az role assignment create
opdracht.<AAD-ENTITY-ID>
kan een gebruikersnaam of de client-id van een service-principal zijn. In het volgende voorbeeld wordt een roltoewijzing gemaakt voor de azure Kubernetes Service RBAC-beheerdersrol .az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Notitie
U kunt de roltoewijzingen azure Kubernetes Service RBAC Reader en Azure Kubernetes Service RBAC Writer maken die zijn gericht op een specifieke naamruimte binnen het cluster met behulp van de
az role assignment create
opdracht en het bereik instellen op de gewenste naamruimte.az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
Aangepaste rollendefinities maken
Met de volgende aangepaste roldefinitie kan een gebruiker alleen implementaties lezen en niets anders. Zie Microsoft.ContainerService-bewerkingen voor de volledige lijst met mogelijke acties.
Als u uw eigen aangepaste roldefinities wilt maken, kopieert u het volgende bestand, vervangt u
<YOUR SUBSCRIPTION ID>
uw eigen abonnements-id en slaat u deze op alsdeploy-view.json
.{ "Name": "AKS Deployment Reader", "Description": "Lets you view all deployments in cluster/namespace.", "Actions": [], "NotActions": [], "DataActions": [ "Microsoft.ContainerService/managedClusters/apps/deployments/read" ], "NotDataActions": [], "assignableScopes": [ "/subscriptions/<YOUR SUBSCRIPTION ID>" ] }
Maak de roldefinitie met behulp van de
az role definition create
opdracht en stel het--role-definition
in op hetdeploy-view.json
bestand dat u in de vorige stap hebt gemaakt.az role definition create --role-definition @deploy-view.json
Wijs de roldefinitie toe aan een gebruiker of een andere identiteit met behulp van de
az role assignment create
opdracht.az role assignment create --role "AKS Deployment Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Azure RBAC gebruiken voor Kubernetes-autorisatie met kubectl
Zorg ervoor dat u de ingebouwde rol Azure Kubernetes Service-clustergebruiker hebt en haal vervolgens de kubeconfig van uw AKS-cluster op met behulp van de
az aks get-credentials
opdracht.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
U kunt nu uw
kubectl
cluster beheren. U kunt bijvoorbeeld de knooppunten in uw cluster vermelden met behulp vankubectl get nodes
.kubectl get nodes
Voorbeelduitvoer:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Azure RBAC gebruiken voor Kubernetes-autorisatie met kubelogin
AKS heeft de kubelogin
invoegtoepassing gemaakt om scenario's zoals niet-interactieve aanmeldingen, oudere kubectl
versies of het gebruik van eenmalige aanmelding op meerdere clusters op te heffen zonder dat u zich hoeft aan te melden bij een nieuw cluster.
Gebruik de
kubelogin
invoegtoepassing door de volgende opdracht uit te voeren:export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
U kunt nu uw
kubectl
cluster beheren. U kunt bijvoorbeeld de knooppunten in uw cluster vermelden met behulp vankubectl get nodes
.kubectl get nodes
Voorbeelduitvoer:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Resources opschonen
Roltoewijzing verwijderen
Geef roltoewijzingen weer met behulp van de
az role assignment list
opdracht.az role assignment list --scope $AKS_ID --query [].id --output tsv
Verwijder roltoewijzingen met behulp van de
az role assignment delete
opdracht.az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Roldefinitie verwijderen
Verwijder de aangepaste roldefinitie met behulp van de
az role definition delete
opdracht.az role definition delete --name "AKS Deployment Reader"
Resourcegroep en AKS-cluster verwijderen
Verwijder de resourcegroep en het AKS-cluster met behulp van de
az group delete
opdracht.az group delete --name $RESOURCE_GROUP --yes --no-wait
Volgende stappen
Zie voor meer informatie over AKS-verificatie, autorisatie, Kubernetes RBAC en Azure RBAC:
Azure Kubernetes Service