Activer IAP pour GKE

Cette page explique comment sécuriser une instance Google Kubernetes Engine (GKE) avec Identity-Aware Proxy (IAP).

Présentation

IAP est intégré via l'objet Entrée pour GKE. Cette intégration permet de contrôler l'accès des employés au niveau de la ressource au lieu d'utiliser un VPN.

Dans un cluster GKE, le trafic entrant est géré par l'équilibrage de charge HTTP(S), un composant de Cloud Load Balancing. L'équilibreur de charge HTTP(S) est généralement configuré par le contrôleur Ingress Kubernetes. Le contrôleur d'entrée obtient les informations de configuration à partir d'un objet Ingress Kubernetes associé à un ou plusieurs objets Service. Chaque objet Service contient des informations de routage qui permettent de diriger une requête entrante vers un pod et un port particuliers.

À partir de la version 1.10.5-gke.3 de Kubernetes, vous pouvez ajouter une configuration pour l'équilibreur de charge en associant un service à un objet BackendConfig. BackendConfig est une définition de ressource personnalisée (CRD, Custom Resource Definition) spécifiée dans le dépôt kubernetes/ingress-gce.

Le contrôleur Kubernetes Ingress lit les informations de configuration à partir de BackendConfig et configure l'équilibreur de charge en conséquence. BackendConfig contient les informations de configuration propres à Cloud Load Balancing et permet de définir une configuration distincte pour chaque service de backend de l'équilibrage de charge HTTP(S).

Avant de commencer

Pour activer IAP pour GKE, vous avez besoin des éléments suivants :

  • Un projet de console Google Cloud avec la facturation activée
  • Un groupe d'une ou de plusieurs instances GKE desservies par un équilibreur de charge HTTPS. L'équilibreur de charge doit se créer automatiquement lorsque vous créez un objet Ingress dans un cluster GKE.
  • Un nom de domaine enregistré à l'adresse de votre équilibreur de charge
  • Un code d'application pour vérifier que toutes les requêtes ont une identité.

IAP utilise un client OAuth géré par Google pour authentifier les utilisateurs. Seuls les utilisateurs de l'organisation peuvent accéder à l'application compatible avec IAP. Si vous souhaitez autoriser l'accès à des utilisateurs externes à votre organisation, consultez la section Activer IAP pour les applications externes.

Activer IAP

Si vous n'avez pas configuré l'écran d'autorisation OAuth de votre projet, vous êtes invité à le faire. Pour configurer votre écran d'autorisation OAuth, consultez la section Configurer l'écran de consentement OAuth.

Si vous exécutez des clusters GKE version 1.24 ou ultérieure, vous pouvez configurer l'IAP et GKE à l'aide de l'API Kubernetes Gateway. Pour ce faire, procédez comme suit, puis suivez les instructions de la section Configurer IAP. Ne configurez pas BackendConfig.

Configurer l'accès à IAP

  1. Accédez à la page Identity-Aware Proxy.
    Accéder à la page "Identity-Aware Proxy"
  2. Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
  3. Cochez la case à côté de la ressource à laquelle vous souhaitez accorder l'accès.

    Si aucune ressource ne s'affiche, assurez-vous qu'elle a été créée et que le contrôleur d'entrée Compute Engine BackendConfig est synchronisé.

    Pour vérifier que le service de backend est disponible, exécutez la commande gcloud suivante:

    gcloud compute backend-services list
  4. Dans le panneau de droite, cliquez sur Ajouter un compte principal.
  5. Dans la boîte de dialogue Ajouter des comptes principaux qui s'affiche, ajoutez les adresses e-mail des groupes ou des personnes auxquels vous souhaitez accorder le rôle Utilisateur de l'application Web sécurisée par IAP dans le cadre du projet.

    Les types de comptes principaux suivants peuvent disposer de ce rôle:

    Veillez à ajouter un compte Google auquel vous avez accès.

  6. Sélectionnez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP dans la liste déroulante Rôles.
  7. Cliquez sur Save.

Configurer BackendConfig

Vous pouvez configurer un BackendConfig pour IAP en ajoutant un bloc iap.

Ajouter un bloc iap à BackendConfig

Pour configurer BackendConfig pour IAP, vous devez spécifier la valeur enabled. Vérifiez que vous disposez de l'autorisation compute.backendServices.update, puis ajoutez le bloc iap à BackendConfig.

Pour les versions 1.16.8-gke.3 et ultérieures de GKE, utilisez la version de l'API cloud.google.com/v1. Si vous utilisez une version antérieure de GKE, utilisez cloud.google.com/v1beta1.

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: CONFIG_DEFAULT
  namespace: my-namespace
spec:
  iap:
    enabled: true

Associer un port de service à un BackendConfig

Vous devez également associer des ports de service à votre ressource BackendConfig pour déclencher l'activation d'IAP. Pour ce faire, vous pouvez par exemple définir tous les ports du service comme ports par défaut pour votre ressource BackendConfig. Pour cela, ajoutez l'annotation suivante à votre ressource Service :

metadata:
  annotations:
    beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'

Vérifier le BackendConfig

Pour tester la configuration, exécutez kubectl get event. Si le message "no BackendConfig for service port exists" s'affiche, cela signifie que vous avez bien associé un port de service à votre ressource BackendConfig, mais que celle-ci est introuvable. Cette erreur peut se produire si vous n'avez pas créé la ressource BackendConfig, l'avez créée dans le mauvais espace de noms ou si vous avez mal orthographié la référence dans l'annotation Service.

Désactiver IAP

Pour désactiver IAP, vous devez définir enabled sur false dans BackendConfig. Si vous supprimez le bloc IAP de BackendConfig, les paramètres sont conservés. Par exemple, si IAP est activé et que vous supprimez le bloc, IAP reste activé.

Étape suivante