Op rollen gebaseerd toegangsbeheer (RBAC) van Azure gebruiken voor Kubernetes-autorisatie
Van toepassing op: AKS op Azure Local, versie 23H2
Infrastructuurbeheerders kunnen op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruiken om te bepalen wie toegang heeft tot het kubeconfig-bestand en de machtigingen die ze hebben. Kubernetes-operators kunnen communiceren met Kubernetes-clusters met behulp van het kubectl-hulpprogramma op basis van de opgegeven machtigingen. 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.
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 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-clusterautorisatie met Microsoft Entra ID en Azure-roltoewijzingen.
Zie Azure RBAC voor Kubernetes-autorisatie voor AKS die door Azure Arc is ingeschakeld voor een conceptueel overzicht.
Voordat u begint
Zorg ervoor dat u voordat u begint over het volgende beschikt:
AKS op Azure Local, versie 23H2 ondersteunt momenteel het inschakelen van Azure RBAC alleen tijdens het maken van kubernetes-clusters. U kunt Azure RBAC niet inschakelen nadat het Kubernetes-cluster is gemaakt.
Installeer de nieuwste versie van de Azure CLI-extensies aksarc en connectedk8s . Houd er rekening mee dat u de aksarc-extensie versie 1.1.1 of hoger moet uitvoeren om Azure RBAC in te schakelen. Voer deze opdracht uit
az --version
om de huidige versie te vinden. Als u Azure CLI wilt installeren of upgraden, raadpleegt u Azure CLI installeren.az extension add --name aksarc az extension add --name connectedk8s
Als u de
aksarc
extensie al hebt geïnstalleerd, werkt u de extensie bij naar de nieuwste versie:az extension update --name aksarc az extension update --name connectedk8s
Als u wilt communiceren met Kubernetes-clusters, moet u kubectl en kubelogin installeren.
U hebt de volgende machtigingen nodig om Azure RBAC in te schakelen tijdens het maken van een Kubernetes-cluster:
- Als u een Kubernetes-cluster wilt maken, hebt u de rol Azure Kubernetes Service Arc-inzender nodig.
- Als u de
--enable-azure-rbac
parameter wilt gebruiken, hebt u de rol op basis van toegangsbeheer op basis van rollen nodig voor toegang tot de machtiging Microsoft.Authorization/roleAssignments/write . Zie Ingebouwde rollen in Azure voor meer informatie. - Het kan vijf minuten duren voordat nieuwe roltoewijzingen zijn doorgegeven en bijgewerkt door de autorisatieserver.
Zodra Azure RBAC is ingeschakeld, hebt u toegang tot uw Kubernetes-cluster met de opgegeven machtigingen met behulp van de directe modus of proxymodus.
- Als u rechtstreeks toegang wilt krijgen tot het Kubernetes-cluster met behulp van de
az aksarc get-credentials
opdracht, hebt u de machtiging Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action nodig, die is opgenomen in de rol gebruiker van het Azure Kubernetes Service Arc-cluster. - Voor toegang tot het Kubernetes-cluster vanaf elke locatie met een proxymodus met behulp van de
az connectedk8s proxy
opdracht of vanuit Azure Portal hebt u de actie Microsoft.Kubernetes/connectedClusterS/listClusterUserCredential/action nodig, die is opgenomen in de machtiging Kubernetes-clustergebruiker met Azure Arc. Ondertussen moet u controleren of de agents en de computer die het onboardingproces uitvoeren, voldoen aan de netwerkvereisten die zijn opgegeven in kubernetes-netwerkvereisten met Azure Arc.
- Als u rechtstreeks toegang wilt krijgen tot het Kubernetes-cluster met behulp van de
Als u kubectl wilt gebruiken, kunt u deze openen met behulp van Azure RBAC of de AAD-beheergroep.
- Als u kubectl wilt gebruiken met Azure RBAC, hebt u de rol Azure Arc Kubernetes Viewer nodig die is afgestemd op de verbonden clusterresource.
- Als u kubectl wilt gebruiken met de AAD-beheergroep, hebt u geen specifieke rol nodig, maar moet u ervoor zorgen dat u zich in een van de groepen in de lijst met invoegtoepassingsbeheerdersgroepen van de verbonden clusterresource bevindt.
Stap 1: Een Kubernetes-cluster met Azure RBAC maken
U kunt een Kubernetes-cluster met Azure RBAC maken voor autorisatie en een Microsoft Entra-id voor verificatie.
az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --enable-azure-rbac
Na enkele minuten is de opdracht voltooid en retourneert deze informatie over het cluster in JSON-indeling.
Stap 2: Roltoewijzingen maken voor gebruikers voor toegang tot het cluster
AKS ingeschakeld door Arc biedt de volgende vijf ingebouwde rollen. Ze zijn vergelijkbaar met de ingebouwde Kubernetes-rollen met enkele verschillen, zoals het ondersteunen van CRD's. Bekijk de volledige lijst met acties die zijn toegestaan voor elke ingebouwde Azure-rol.
Rol | Beschrijving |
---|---|
Kubernetes-clustergebruiker met Azure Arc | Hiermee kunt u het kubeconfig-bestand op basis van Cluster Connect ophalen om clusters vanaf elke locatie te beheren. |
Azure Arc Kubernetes Viewer | Staat alleen-lezentoegang toe om de meeste objecten in een naamruimte te zien. Het weergeven van geheimen is niet toegestaan, omdat leesmachtigingen voor geheimen toegang tot ServiceAccount-referenties in de naamruimte mogelijk maken. Deze referenties staan op hun beurt API-toegang toe via die ServiceAccount-waarde (een vorm van escalatie van bevoegdheden). |
Azure Arc Kubernetes Writer | Hiermee staat u lees-/schrijftoegang toe tot de meeste objecten in een naamruimte. Het weergeven of wijzigen van rollen of rolbindingen is niet toegestaan. Deze rol biedt echter toegang tot geheimen en het uitvoeren van pods als elke ServiceAccount-waarde in de naamruimte, zodat deze kan worden gebruikt om de API-toegangsniveaus van een dergelijke ServiceAccount-waarde in de naamruimte te verkrijgen. |
Azure Arc Kubernetes-beheerder | Hiermee staat u beheerderstoegang toe. Het is bedoeld om te worden verleend binnen een naamruimte via RoleBinding. Als u deze gebruikt in RoleBinding, is het mogelijk om lees-/schrijftoegang te krijgen tot de meeste resources in een naamruimte, inclusief de mogelijkheid om rollen en rolbindingen in de naamruimte te maken. Met deze rol is schrijftoegang tot het resourcequotum of de naamruimte zelf niet toegestaan. |
Azure Arc Kubernetes-clusterbeheerder | Hiermee staat u 'superuser'-toegang toe om elke actie op elke resource uit te voeren. Wanneer u deze gebruikt in ClusterRoleBinding, krijgt u volledige controle over elke resource in het cluster en in alle naamruimten. Wanneer u deze gebruikt in RoleBinding, krijgt u volledige controle over elke resource in de naamruimte van de rolbinding, inclusief de naamruimte zelf. |
U kunt de az role assignment create
opdracht gebruiken om roltoewijzingen te maken.
Haal eerst het $ARM-ID
doelcluster op waaraan u een rol wilt toewijzen.
$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)
Gebruik vervolgens de az role assignment create
opdracht om rollen toe te wijzen aan uw Kubernetes-cluster. U moet de $ARM_ID
eerste stap en de assignee-object-id
voor deze stap opgeven. Dit assignee-object-id
kan een Microsoft Entra-id of een client-id van een service-principal zijn.
In het volgende voorbeeld wordt de rol Azure Arc Kubernetes Viewer toegewezen aan het Kubernetes-cluster:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
In dit voorbeeld is het bereik de Azure Resource Manager-id van het cluster. Dit kan ook de resourcegroep zijn die het Kubernetes-cluster bevat.
Aangepaste roldefinities maken
U kunt ervoor kiezen om uw eigen roldefinitie te maken voor gebruik in roltoewijzingen.
In het volgende voorbeeld ziet u een roldefinitie waarmee een gebruiker alleen implementaties kan lezen. Zie de volledige lijst met gegevensacties die u kunt gebruiken om een roldefinitie te maken voor meer informatie. Zie Stappen voor het maken van een aangepaste rol voor meer informatie over het maken van een aangepaste rol
Als u uw eigen aangepaste roldefinities wilt maken, kopieert u het volgende JSON-object naar een bestand met de naam custom-role.json. Vervang de <subscription-id>
tijdelijke aanduiding door de werkelijke abonnements-id. De aangepaste rol maakt gebruik van een van de gegevensacties en stelt u in staat om alle implementaties in het bereik (cluster of naamruimte) weer te geven waar de roltoewijzing wordt gemaakt.
{
"Name": "AKS Arc Deployment Reader",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<YOUR SUBSCRIPTION ID>"
]
}
Zie aangepaste Azure-rollen voor informatie over aangepaste rollen en hoe u deze ontwerpt.
Maak de roldefinitie met behulp van de az role definition create
opdracht en stel de --role-definition
parameter 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 Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID
Stap 3: Toegang tot Kubernetes-cluster
U hebt nu toegang tot uw Kubernetes-cluster met de opgegeven machtigingen, met behulp van de directe modus of proxymodus.
Toegang tot uw cluster met kubectl (directe modus)
Voor toegang tot het Kubernetes-cluster met de opgegeven machtigingen heeft de Kubernetes-operator de Microsoft Entra kubeconfig nodig, die u kunt krijgen met behulp van de az aksarc get-credentials
opdracht. Deze opdracht biedt toegang tot de kubeconfig op basis van beheerders, evenals een kubeconfig op basis van een gebruiker. Het kubeconfig-bestand op basis van een beheerder bevat geheimen en moet veilig worden opgeslagen en periodiek worden gedraaid. Aan de andere kant bevat de kubeconfig van de Microsoft Entra-id op basis van de gebruiker geen geheimen en kan deze worden gedistribueerd naar gebruikers die verbinding maken vanaf hun clientcomputers.
Als u deze Azure CLI-opdracht wilt uitvoeren, hebt u de machtiging Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action nodig. Deze is opgenomen in de rolmachtiging Azure Kubernetes Service Arc-cluster:
az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>
U kunt nu kubectl gebruiken om uw cluster te beheren. 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
Toegang tot uw cluster vanaf een clientapparaat (proxymodus)
Voor toegang tot het Kubernetes-cluster vanaf elke locatie met een proxymodus met behulp van az connectedk8s proxy
de opdracht hebt u de machtiging Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action nodig, die is opgenomen in de machtiging Kubernetes-clustergebruiker met Azure Arc.
Voer de volgende stappen uit op een ander clientapparaat:
Aanmelden met Microsoft Entra-verificatie
Haal de kubeconfig voor de clusterverbinding op die nodig is om vanaf elke locatie met het cluster te communiceren (zelfs van buiten de firewall rondom het cluster):
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Notitie
Met deze opdracht wordt de proxy geopend en wordt de huidige shell geblokkeerd.
Gebruik
kubectl
in een andere shellsessie om aanvragen naar het cluster te verzenden:kubectl get pods -A
U ziet nu een antwoord van het cluster met de lijst met alle pods onder de default
naamruimte.
Zie Toegang tot uw cluster vanaf een clientapparaat voor meer informatie.
Resources opschonen
Roltoewijzing verwijderen
# List role assignments
az role assignment list --scope $ARM_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 Arc Deployment Reader"
Volgende stappen
- Azure RBAC (op rollen gebaseerd toegangsbeheer van Azure)
- Toegangs- en identiteitsopties voor AKS ingeschakeld door Azure Arc
- Een Azure-service-principal maken met Azure CLI
- Beschikbare Azure-machtigingen voor hybride en multicloud