Obtenir un accès sécurisé pour les ressources Azure dans Azure Kubernetes Service en utilisant Truster Access

De nombreux services Azure qui s’intègrent dans Azure Kubernetes Service (AKS) doivent accéder au serveur d’API Kubernetes. Pour éviter d’octroyer à ces services un accès administrateur ou de rendre vos clusters AKS publics pour l’accès réseau, vous pouvez utiliser la fonctionnalité AKS Trusted Access.

Cette fonctionnalité offre aux services un accès sécurisé au serveur d’API AKS en utilisant le back end Azure sans nécessiter de point de terminaison privé. Au lieu de s’appuyer sur des identités avec des autorisations Microsoft Entra ID, cette fonctionnalité peut utiliser votre identité managée affectée par le système pour s’authentifier sur les services managés et les applications que vous voulez utiliser avec vos clusters AKS.

Cet article vous montre comment obtenir un accès sécurisé pour vos services Azure à votre serveur d’API Kubernetes dans AKS en utilisant Trusted Access.

Remarque

L’API Trusted Access est en disponibilité générale. Nous fournissons une prise en charge de la disponibilité générale (GA) pour Azure CLI, mais elle est toujours en préversion et nécessite l’utilisation de l’extension aks-preview.

Vue d’ensemble de la fonctionnalité Trusted Access

Trusted Access répond aux scénarios suivants :

  • Si une plage d’adresses IP autorisées est définie ou dans un cluster privé, les services Azure peuvent ne pas être en mesure d’accéder au serveur d’API Kubernetes, sauf si vous implémentez un modèle d’accès de point de terminaison privé.

  • Donner à un administrateur de service Azure l’accès à l’API Kubernetes ne suit pas la meilleure pratique d’accès aux privilèges minimum et peut entraîner des élévations de privilèges ou un risque de fuite d’informations d’identification. Par exemple, vous pourriez devoir implémenter des autorisations service-à-service à haut niveau de privilège, et elles ne sont pas idéales dans une revue d’audit.

Vous pouvez utiliser Trusted Access pour donner le consentement explicite à votre identité managée affectée par le système des ressources autorisées d’accéder à vos clusters AKS en utilisant une ressource Azure appelée liaison de rôles. Vos ressources Azure accèdent aux clusters AKS grâce à la passerelle régionale AKS via une authentification par identité managée affectée par le système. Les autorisations Kubernetes appropriées sont affectées via une ressource Azure appelée rôle. En utilisant Trusted Access, vous pouvez accéder aux clusters AKS avec différentes configurations, y compris, mais sans s’y limiter, les clusters privés, les clusters qui ont des comptes locaux désactivés, les clusters Microsoft Entra et les clusters de plage IP autorisée.

Prérequis

Créer un cluster AKS

Dans le même abonnement que la ressource Azure pour laquelle vous voulez un accès au cluster, créez un cluster AKS.

Sélectionnez les rôles Trusted Access requis

Les rôles que vous sélectionnez dépendent des services Azure pour laquelle vous voulez un accès au cluster AKS. Ces services permettent de créer les rôles et les liaisons de rôles qui établissent la connexion du service Azure à AKS.

Pour trouver les rôles dont vous avez besoin, consultez la documentation du service Azure que vous voulez connecter à AKS. Vous pouvez également utiliser Azure CLI pour lister les rôles disponibles pour le service Azure. Par exemple, afin de lister les rôles pour Azure Machine Learning, utilisez la commande suivante :

az aks trustedaccess role list --location $LOCATION

Créer une liaison de rôles Trusted Access

Après avoir confirmé le rôle à utiliser, utilisez Azure CLI pour créer une liaison de rôles Trusted Access dans le cluster AKS. La liaison de rôles associe le rôle que vous avez choisi au service Azure.

# Create a Trusted Access role binding in an AKS cluster

az aks trustedaccess rolebinding create  --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --source-resource-id $SOURCE_RESOURCE_ID --roles $ROLE_NAME_1,$ROLE_NAME_2

Voici un exemple :

# Sample command

az aks trustedaccess rolebinding create --resource-group myResourceGroup --cluster-name myAKSCluster --name test-binding --source-resource-id /subscriptions/000-000-000-000-000/resourceGroups/myResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/MyMachineLearning --roles Microsoft.MachineLearningServices/workspaces/mlworkload

Mettre à jour une liaison de rôles Trusted Access existante

Dans les cas d’une liaison de rôles existante avec un service source associé, vous pouvez la mettre à jour avec de nouveaux rôles.

Remarque

Le gestionnaire de modules complémentaires met à jour les clusters toutes les cinq minutes, de sorte que la nouvelle liaison de rôles peut mettre jusqu’à cinq minutes pour prendre effet. Avant que la nouvelle liaison de rôles ne prenne effet, la liaison de rôles existante fonctionne toujours.

Vous pouvez utiliser la commande az aks trusted access rolebinding list pour vérifier la liaison de rôles actuelle.

az aks trustedaccess rolebinding update --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --roles $ROLE_NAME_3,$ROLE_NAME_4

Afficher une liaison de rôles Trusted Access

Afficher une liaison de rôle Trusted Access spécifique en utilisant la commande az aks trustedaccess rolebinding show :

az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME

Lister toutes les liaisons de rôles Trusted Access pour un cluster

Lister toutes les liaisons de rôles Trusted Access pour un cluster en utilisant la commande az aks trustedaccess rolebinding list:

az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME

Supprimer une liaison de rôles Trusted Access pour un cluster

Avertissement

La suppression d’une liaison de rôles Trusted Access existante déconnecte le service Azure du cluster AKS.

Supprimer une liaison de rôles Trusted Access existante en utilisant la commande az aks trustedaccess rolebinding delete:

az aks trustedaccess rolebinding delete --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME