Op rollen gebaseerd toegangsbeheer van Azure gebruiken voor Kubernetes-autorisatie
Wanneer u gebruikmaakt van geïntegreerde verificatie tussen Microsoft Entra ID en AKS, kunt u Microsoft Entra-gebruikers, -groepen of -service-principals gebruiken als onderwerp in Kubernetes RBAC (op rollen gebaseerd toegangsbeheer van Kubernetes). Met deze functie hoeft u geen gebruikersidentiteiten en referenties voor Kubernetes afzonderlijk te beheren. U moet Echter nog steeds Azure RBAC en Kubernetes RBAC afzonderlijk instellen en beheren.
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.
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.
az group create --name myResourceGroup --location westus2
Maak een AKS-cluster met beheerde Microsoft Entra-integratie en Azure RBAC voor Kubernetes-autorisatie met behulp van de az aks create
opdracht.
az aks create -g myResourceGroup -n myManagedCluster --enable-aad --enable-azure-rbac
De uitvoer ziet er ongeveer als volgt uit:
"AADProfile": {
"adminGroupObjectIds": null,
"clientAppId": null,
"enableAzureRbac": true,
"managed": true,
"serverAppId": null,
"serverAppSecret": null,
"tenantId": "****-****-****-****-****"
}
Azure RBAC inschakelen op een bestaand AKS-cluster
Voeg Azure RBAC voor Kubernetes-autorisatie toe aan een bestaand AKS-cluster met behulp van de az aks update
opdracht met de enable-azure-rbac
vlag.
az aks update -g myResourceGroup -n myAKSCluster --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 -g myResourceGroup -n myAKSCluster --disable-azure-rbac
Roltoewijzingen maken voor gebruikers voor toegang tot het cluster
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-Beheer | 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-cluster Beheer | Hiermee kan supergebruiker elke actie uitvoeren op elke resource. Het geeft volledige controle over elke resource in het cluster en in alle naamruimten. |
Rollentoewijzingen binnen het bereik van het hele AKS-cluster kunnen worden uitgevoerd op de blade Toegangsbeheer (IAM) van de clusterresource in Azure Portal of met behulp van de volgende Azure CLI-opdrachten:
Haal uw AKS-resource-id op met behulp van de az aks show
opdracht.
AKS_ID=$(az aks show -g myResourceGroup -n myManagedCluster --query id -o 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.
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>
Notitie
Nadat u in Azure Portal roltoewijzingen hebt gemaakt die zijn gericht op een gewenste naamruimte, kunt u 'roltoewijzingen' niet zien voor naamruimte in een bereik. U kunt deze vinden met behulp van de az role assignment list
opdracht of roltoewijzingen weergeven voor een gebruiker of groep waaraan u de rol hebt toegewezen.
az role assignment list --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 als deploy-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 het deploy-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 -g myResourceGroup -n myManagedCluster
Nu kunt u het cluster beheren kubectl
. U kunt bijvoorbeeld de knooppunten in uw cluster vermelden met behulp van kubectl get nodes
. De eerste keer dat u het uitvoert, moet u zich aanmelden, zoals wordt weergegeven in het volgende voorbeeld:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
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 extra scenario's, zoals niet-interactieve aanmeldingen, oudere kubectl
versies, of gebruik te maken van eenmalige aanmelding op meerdere clusters zonder dat u zich hoeft aan te melden bij een nieuw cluster.
U kunt de kubelogin
invoegtoepassing gebruiken door de volgende opdracht uit te voeren:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig
Net als kubectl
bij de eerste keer dat u het uitvoert, moet u zich aanmelden, zoals wordt weergegeven in het volgende voorbeeld:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
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
# List role assignments
az role assignment list --scope $AKS_ID --query [].id -o tsv
# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Roldefinitie verwijderen
az role definition delete -n "AKS Deployment Reader"
Resourcegroep en AKS-cluster verwijderen
az group delete -n myResourceGroup
Volgende stappen
Zie voor meer informatie over AKS-verificatie, autorisatie, Kubernetes RBAC en Azure RBAC: