Åtkomst- och identitetsalternativ för AKS som aktiveras av Azure Arc
Gäller för: AKS på Azure Local, version 23H2
Du kan autentisera, auktorisera, skydda och kontrollera åtkomsten till Kubernetes-kluster på olika sätt:
- Med rollbaserad åtkomstkontroll i Kubernetes (Kubernetes RBAC) kan du ge användare, grupper och tjänstkonton åtkomst till endast de Kubernetes-resurser som de behöver.
- Med AKS-kluster aktiverade med Azure RBAC kan du ytterligare förbättra säkerhets- och behörighetsstrukturen med hjälp av Microsoft Entra ID och Azure RBAC.
Kubernetes RBAC och Azure RBAC hjälper dig att skydda klusteråtkomsten och endast ge de minsta behörigheter som krävs för utvecklare och operatörer.
Den här artikeln beskriver de grundläggande begreppen som hjälper dig att autentisera och tilldela behörigheter i AKS.
Kubernetes RBAC
Kubernetes RBAC tillhandahåller detaljerad filtrering av användaråtgärder. Med den här kontrollmekanismen:
- Du tilldelar användare eller användargrupper behörighet att skapa och ändra resurser eller visa loggar från programarbetsbelastningar som körs.
- Du kan begränsa behörigheter till ett enda namnområde eller i hela AKS-klustret.
- Du skapar roller för att definiera behörigheter och tilldelar sedan dessa roller till användare med rollbindningar.
Mer information finns i Använda Kubernetes RBAC-auktorisering.
Roller och ClusterRoles
Roller
Innan du tilldelar behörigheter till användare med Kubernetes RBAC definierar du användarbehörigheter som en roll. Bevilja behörigheter inom ett Kubernetes-namnområde med hjälp av roller.
Kubernetes-roller beviljar behörigheter; de nekar inte behörigheter. Om du vill bevilja behörigheter över hela klustret eller till klusterresurser utanför ett angivet namnområde kan du använda ClusterRoles.
ClusterRoles
En ClusterRole beviljar och tillämpar behörigheter för resurser i hela klustret, inte ett specifikt namnområde.
RoleBindings och ClusterRoleBindings
När du har definierat roller för att bevilja behörigheter till resurser tilldelar du dessa Kubernetes RBAC-behörigheter med ett Rollbinding. Om AKS-klustret integreras med Microsoft Entra-ID beviljar RoleBindings behörigheter till Microsoft Entra-användare för att utföra åtgärder i klustret. Se Kontrollera åtkomst med Microsoft Entra ID och Kubernetes RBAC
Rollbindningar
Tilldela roller till användare för ett angivet namnområde med hjälp av RoleBindings. Med RoleBindings kan du logiskt separera ett enda AKS-kluster, vilket bara gör det möjligt för användare att komma åt programresurserna i sitt tilldelade namnområde.
Om du vill binda roller över hela klustret eller till klusterresurser utanför ett angivet namnområde använder du ClusterRoleBindings.
ClusterRoleBinding
Med en ClusterRoleBinding binder du roller till användare och tillämpar på resurser i hela klustret, inte ett specifikt namnområde. Med den här metoden kan du ge administratörer eller supporttekniker åtkomst till alla resurser i AKS-klustret.
Kubernetes-tjänstkonton
Tjänstkonton är en av de primära användartyperna i Kubernetes. Kubernetes API innehåller och hanterar tjänstkonton. Autentiseringsuppgifter för tjänstkonton lagras som Kubernetes-hemligheter, vilket gör att de kan användas av auktoriserade poddar för att kommunicera med API-servern. De flesta API-begäranden tillhandahåller en autentiseringstoken för ett tjänstkonto eller ett normalt användarkonto.
Vanliga användarkonton ger mer traditionell åtkomst för mänskliga administratörer eller utvecklare, inte bara tjänster och processer. Kubernetes tillhandahåller ingen identitetshanteringslösning för att lagra vanliga användarkonton och lösenord, men du kan integrera externa identitetslösningar i Kubernetes. För AKS-kluster är den här integrerade identitetslösningen Microsoft Entra-ID.
Mer information om identitetsalternativen i Kubernetes finns i Kubernetes-autentisering.
Azure rollbaserad åtkomstkontroll
Rollbaserad åtkomstkontroll i Azure (RBAC) är ett auktoriseringssystem som bygger på Azure Resource Manager och som ger detaljerad åtkomsthantering av Azure-resurser.
RBAC-system | beskrivning |
---|---|
Kubernetes RBAC | Utformad för att fungera med Kubernetes-resurser i ditt AKS-kluster. |
Azure RBAC | Utformad för att fungera med resurser i din Azure-prenumeration. |
Med Azure RBAC skapar du en rolldefinition som beskriver de behörigheter som ska tillämpas. Sedan tilldelar du en användare eller grupp den här rolldefinitionen via en rolltilldelning för ett visst omfång. Omfånget kan vara en enskild resurs, en resursgrupp eller i hela prenumerationen.
Mer information finns i Vad är rollbaserad åtkomstkontroll i Azure (Azure RBAC)?
Det finns två nödvändiga åtkomstnivåer för att köra ett AKS Arc-kluster fullt ut:
- Få åtkomst till AKS-resursen i din Azure-prenumeration.
- Kontrollera skalning eller uppgradering av klustret med hjälp av AKS som aktiveras av Azure Arc-API:er.
- Hämta din administratör, certifikatbaserad kubeconfig.
- Hämta ditt Entra-ID aktiverat kubeconfig.
- Åtkomst till Kubernetes API. Den här åtkomsten styrs av antingen:
- Kubernetes RBAC, eller
- Integrera Azure RBAC med AKS för Kubernetes-auktorisering.
Azure RBAC för att auktorisera åtkomst till AKS-resursen
Med Azure RBAC kan du ge dina användare (eller identiteter) detaljerad åtkomst till AKS-resurser i en eller flera prenumerationer. Det finns tre roller för den här kontrollplansåtgärden: Azure Kubernetes Service Arc-klusteradministratörsroll, Azure Kubernetes Service Arc-klusteranvändarroll och Azure Kubernetes Service Arc-deltagarroll. Varje roll har olika behörighetsomfång enligt beskrivningen i inbyggda Azure-roller för containrar. Du kan till exempel använda rollen Azure Kubernetes Service Arc-deltagare för att skapa, skala och uppgradera klustret. Samtidigt har en annan användare med Azure Kubernetes Service Arc-klusteradministratörsrollen endast behörighet att hämta administratörens kubeconfig.
Azure RBAC för Kubernetes-auktorisering
Med Azure RBAC-integrering använder AKS en Kubernetes-auktoriseringswebbhookserver så att du kan hantera Microsoft Entra-integrerade Kubernetes-klusterresursbehörigheter och tilldelningar med hjälp av Azure-rolldefinitioner och rolltilldelningar.
Som du ser i det här diagrammet följer alla begäranden till Kubernetes-API:et samma autentiseringsflöde som beskrivs i Microsoft Entra-integreringen när du använder Azure RBAC-integreringen.
Om den identitet som gör begäran finns i Microsoft Entra-ID: t, azure-team med Kubernetes RBAC för att auktorisera begäran. Om identiteten finns utanför Microsoft Entra-ID (till exempel ett Kubernetes-tjänstkonto) defersar auktoriseringen till den normala Kubernetes RBAC.
I det här scenariot använder du Azure RBAC-mekanismer och API:er för att tilldela användare inbyggda roller eller skapa anpassade roller, precis som med Kubernetes-roller.
Med den här funktionen ger du inte bara användarna behörighet till AKS-resursen mellan prenumerationer, utan du konfigurerar även rollen och behörigheterna för i vart och ett av dessa kluster som styr Kubernetes API-åtkomst. Det finns fyra inbyggda roller för den här dataplansåtgärden, var och en med sin egen behörighetsomfång, enligt beskrivningen i avsnittet inbyggda roller .
Viktigt!
Du måste aktivera Azure RBAC för Kubernetes-auktorisering innan du utför rolltilldelning. Mer information och stegvis vägledning finns i Använda Azure RBAC för Kubernetes-auktorisering.
Inbyggda roller
AKS som aktiveras av Arc innehåller följande fem inbyggda roller. De liknar de inbyggda Kubernetes-rollerna med några skillnader, till exempel stöd för CRD:er. Se den fullständiga listan över åtgärder som tillåts av varje inbyggd Azure-roll.
Roll | beskrivning |
---|---|
Azure Arc-aktiverad Kubernetes-klusteranvändare | Gör att du kan hämta den Klusteranslutningsbaserade kubeconfig-filen för att hantera kluster var som helst. |
Azure Arc Kubernetes Viewer | Tillåter skrivskyddad åtkomst för att se de flesta objekt i ett namnområde. Tillåter inte visning av hemligheter eftersom läsbehörighet för hemligheter ger åtkomst till ServiceAccount-autentiseringsuppgifter i namnområdet. Dessa autentiseringsuppgifter tillåter i sin tur API-åtkomst via det ServiceAccount-värdet (en form av eskalering av privilegier). |
Azure Arc Kubernetes Writer | Tillåter läs-/skrivåtkomst till de flesta objekt i ett namnområde. Tillåter inte visning eller ändring av roller eller rollbindningar. Den här rollen tillåter dock åtkomst till hemligheter och poddar som alla ServiceAccount-värden i namnområdet, så den kan användas för att få API-åtkomstnivåerna för ett sådant ServiceAccount-värde i namnområdet. |
Azure Arc Kubernetes-administratör | Tillåter administratörsåtkomst. Det är avsett att beviljas inom ett namnområde via RoleBinding. Om du använder det i Rollbindning tillåter det läs-/skrivåtkomst till de flesta resurser i ett namnområde, inklusive möjligheten att skapa roller och rollbindningar i namnområdet. Den här rollen tillåter inte skrivåtkomst till resurskvoten eller till själva namnområdet. |
Azure Arc Kubernetes-klusteradministratör | Tillåter "superanvändaråtkomst" för att köra alla åtgärder på alla resurser. När du använder den i ClusterRoleBinding ger den fullständig kontroll över varje resurs i klustret och i alla namnområden. När du använder den i RoleBinding ger den fullständig kontroll över varje resurs i namnområdet rollbindning, inklusive själva namnområdet. |
Microsoft Entra-integrering
Förbättra säkerheten för AKS-kluster med Microsoft Entra-integrering. Microsoft Entra ID bygger på en företagsidentitetshanteringsupplevelse och är en molnbaserad katalog- och identitetshanteringstjänst med flera klientorganisationer som kombinerar kärnkatalogtjänster, hantering av programåtkomst och identitetsskydd. Med Microsoft Entra-ID kan du integrera lokala identiteter i AKS-kluster för att tillhandahålla en enda källa för kontohantering och säkerhet.
Med Microsoft Entra-integrerade AKS-kluster kan du ge användare eller grupper åtkomst till Kubernetes-resurser inom ett namnområde eller i hela klustret.
- Kör kommandot az aksarc get-credentials för att hämta en kubectl-konfigurationskontext.
- När en användare interagerar med AKS-klustret med kubectl uppmanas de att logga in med sina Microsoft Entra-autentiseringsuppgifter.
Den här metoden ger en enda källa för hantering av användarkonton och autentiseringsuppgifter för lösenord. Användaren kan bara komma åt de resurser som definierats av Kubernetes-klusteradministratören.
Microsoft Entra-autentisering tillhandahålls till AKS-kluster med OpenID Connect. OpenID Connect är ett identitetslager som bygger på OAuth 2.0-protokollet. Mer information om OpenID Connect finns i OpenID Connect-dokumentationen. Inifrån Kubernetes-klustret används Webhook Token Authentication för att verifiera autentiseringstoken. Webhook-tokenautentisering konfigureras och hanteras som en del av AKS-klustret.
Sammanfattning
Följande tabell innehåller en sammanfattning av hur användare kan autentisera till Kubernetes när Microsoft Entra-integrering är aktiverat. I samtliga fall är sekvensen med kommandon:
- Kör
az login
för att autentisera till Azure. - Kör
az aksarc get-credentials
för att ladda ned autentiseringsuppgifter för Kubernetes-klustret till.kube/config
. - Kör
kubectl
kommandon.- Det första kommandot kan utlösa webbläsarbaserad autentisering för att autentisera till Kubernetes-klustret enligt beskrivningen i följande tabell.
beskrivning | Rollbidrag krävs | Microsoft Entra-grupper för klusteradministratör | Användningsområde för |
---|---|---|---|
Administratörsinloggning med klientcertifikat | Administratörsroll för Azure Kubernetes Service Arc-kluster. Den här rollen kan az aksarc get-credentials användas med --admin flaggan, som hämtar ett administratörscertifikat för ett icke-Microsoft Entra-kluster till användarens .kube/config. Det här är det enda syftet med azure Kubernetes-administratörsrollen. |
saknas | Om du är permanent blockerad genom att inte ha åtkomst till en giltig Microsoft Entra-grupp med åtkomst till klustret. |
Microsoft Entra-ID med manuella (kluster) rollbindningar | Användarroll för Azure Kubernetes Service Arc-kluster. Användarrollen kan az aksarc get-credentials användas utan --admin flaggan. Det här är det enda syftet med azure Kubernetes Service-klusteranvändarrollen.) Resultatet i ett Microsoft Entra ID-aktiverat kluster är nedladdningen av en tom post till .kube/config, som utlöser webbläsarbaserad autentisering när den först används av kubectl. |
Eftersom användaren inte finns i någon klusteradministratörsgrupp styrs deras rättigheter helt av rollbindningar eller ClusterRoleBindings som konfigureras av klusteradministratörer. Rollbindningar för (kluster) nominerar Microsoft Entra-användare eller Microsoft Entra-grupper som sina ämnen. Om inga sådana bindningar har konfigurerats kan användaren inte ta ut några kubectl-kommandon . | Om du vill ha detaljerad åtkomstkontroll och inte använder Azure RBAC för Kubernetes-auktorisering. Observera att användaren som konfigurerar bindningarna måste logga in med någon av de andra metoderna som anges i den här tabellen. |
Microsoft Entra-ID efter medlem i klusteradministratören Microsoft Entra-gruppen (ange med flaggan --aad-admin-group-object-ids i Azure CLI) |
Samma som tidigare. | Användaren är medlem i en av grupperna som anges här. AKS genererar automatiskt en ClusterRoleBinding som binder alla listade grupper till cluster-admin Kubernetes-rollen. Så att användare i dessa grupper kan köra alla kubectl kommandon som cluster-admin . |
Om du vill ge användarna fullständiga administratörsrättigheter och inte använder Azure RBAC för Kubernetes-auktorisering. |
Microsoft Entra-ID med Azure RBAC för Kubernetes-auktorisering | Två roller: Azure Kubernetes Service Arc-klusteranvändarroll (enligt beskrivningen tidigare). En av de Azure Arc Kubernetes-roller som beskrevs tidigare, eller ditt eget anpassade alternativ. |
Fältet administratörsroller på fliken Konfiguration är irrelevant när Azure RBAC för Kubernetes-auktorisering är aktiverat. | Du använder Azure RBAC för Kubernetes-auktorisering. Den här metoden ger dig detaljerad kontroll, utan att behöva konfigurera RoleBindings eller ClusterRoleBindings. |
Nästa steg
- Information om hur du kommer igång med Kubernetes RBAC för Kubernetes-auktorisering finns i Kontrollera åtkomst med Microsoft Entra ID och Kubernetes RBAC
- Information om hur du kommer igång med Azure RBAC för Kubernetes-auktorisering finns i Använda Azure RBAC för Kubernetes-auktorisering