Få säker åtkomst för Azure-resurser i Azure Kubernetes Service med hjälp av betrodd åtkomst
Många Azure-tjänster som integreras med Azure Kubernetes Service (AKS) behöver åtkomst till Kubernetes API-servern. Om du vill undvika att bevilja dessa tjänster administratörsåtkomst eller göra dina AKS-kluster offentliga för nätverksåtkomst kan du använda funktionen för betrodd åtkomst i AKS.
Den här funktionen ger tjänster säker åtkomst till AKS API-servern med hjälp av Azure-serverdelen utan att kräva en privat slutpunkt. I stället för att förlita sig på identiteter som har Microsoft Entra-behörigheter kan den här funktionen använda din systemtilldelade hanterade identitet för att autentisera med de hanterade tjänster och program som du vill använda med dina AKS-kluster.
Den här artikeln visar hur du får säker åtkomst för dina Azure-tjänster till Kubernetes API-servern i AKS med hjälp av betrodd åtkomst.
Kommentar
API:et för betrodd åtkomst är allmänt tillgängligt. Vi tillhandahåller stöd för allmän tillgänglighet (GA) för Azure CLI, men det är fortfarande i förhandsversion och kräver att du använder aks-preview-tillägget.
Översikt över funktionen Betrodd åtkomst
Betrodd åtkomst hanterar följande scenarier:
Om ett auktoriserat IP-intervall har angetts eller i ett privat kluster kanske Azure-tjänsterna inte kan komma åt Kubernetes API-servern om du inte implementerar en privat slutpunktsåtkomstmodell.
Att ge en Azure-tjänstadministratör åtkomst till Kubernetes-API:et följer inte bästa praxis för åtkomst med minsta möjliga behörighet och kan leda till privilegiereskaleringar eller risk för läckage av autentiseringsuppgifter. Du kan till exempel behöva implementera högprivilegierade tjänst-till-tjänst-behörigheter och de är inte idealiska i en granskningsgranskning.
Du kan använda betrodd åtkomst för att ge uttryckligt medgivande till din systemtilldelade hanterade identitet för tillåtna resurser för åtkomst till dina AKS-kluster med hjälp av en Azure-resurs som kallas rollbindning. Dina Azure-resurser får åtkomst till AKS-kluster via den regionala AKS-gatewayen via systemtilldelad hanterad identitetsautentisering. Lämpliga Kubernetes-behörigheter tilldelas via en Azure-resurs som kallas roll. Via betrodd åtkomst kan du komma åt AKS-kluster med olika konfigurationer, inklusive men inte begränsat till privata kluster, kluster som har lokala konton inaktiverade, Microsoft Entra-kluster och auktoriserade IP-intervallkluster.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- Resurstyper som stöder systemtilldelad hanterad identitet.
- Azure CLI version 2.53.0 eller senare. Kör
az --version
för att hitta din version. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. - Information om vilka roller som ska användas i olika scenarier finns i följande artiklar:
Skapa ett AKS-kluster
Skapa ett AKS-kluster i samma prenumeration som den Azure-resurs som du vill komma åt klustret.
Välj de nödvändiga rollerna för betrodd åtkomst
Vilka roller du väljer beror på vilka Azure-tjänster du vill komma åt AKS-klustret. Azure-tjänster hjälper dig att skapa roller och rollbindningar som skapar anslutningen från Azure-tjänsten till AKS.
Skapa en rollbindning för betrodd åtkomst
När du har bekräftat vilken roll du ska använda använder du Azure CLI för att skapa en rollbindning för betrodd åtkomst i AKS-klustret. Rollbindningen associerar din valda roll med Azure-tjänsten.
# Create a Trusted Access role binding in an AKS cluster
az aks trustedaccess rolebinding create --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <role binding name> -s <connected service resource ID> --roles <roleName1, roleName2>
Här är ett exempel:
# Sample command
az aks trustedaccess rolebinding create \
-g myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--source-resource-id /subscriptions/000-000-000-000-000/resourceGroups/myResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/MyMachineLearning \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin
Uppdatera en befintlig rollbindning för betrodd åtkomst
För en befintlig rollbindning som har en associerad källtjänst kan du uppdatera rollbindningen med nya roller.
Kommentar
Tilläggshanteraren uppdaterar kluster var femte minut, så den nya rollbindningen kan ta upp till fem minuter att börja gälla. Innan den nya rollbindningen börjar gälla fungerar fortfarande den befintliga rollbindningen.
Du kan använda az aks trusted access rolebinding list --name <role binding name> --resource-group <resource group>
för att kontrollera den aktuella rollbindningen.
# Update the RoleBinding command
az aks trustedaccess rolebinding update --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <existing role binding name> --roles <newRoleName1, newRoleName2>
Här är ett exempel:
# Update the RoleBinding command with sample resource group, cluster, and roles
az aks trustedaccess rolebinding update \
--resource-group myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin
Visa en rollbindning för betrodd åtkomst
Visa en specifik rollbindning för betrodd åtkomst med hjälp az aks trustedaccess rolebinding show
av kommandot :
az aks trustedaccess rolebinding show --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>
Visa en lista över alla rollbindningar för betrodd åtkomst för ett kluster
Visa en lista över alla rollbindningar för betrodd åtkomst för ett kluster med hjälp az aks trustedaccess rolebinding list
av kommandot :
az aks trustedaccess rolebinding list --resource-group <AKS resource group> --cluster-name <AKS cluster name>
Ta bort en rollbindning för betrodd åtkomst för ett kluster
Varning
Om du tar bort en befintlig rollbindning för betrodd åtkomst kopplas Azure-tjänsten från AKS-klustret.
Ta bort en befintlig rollbindning för betrodd åtkomst med hjälp az aks trustedaccess rolebinding delete
av kommandot :
az aks trustedaccess rolebinding delete --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>