Activer l'accès basé sur des certificats pour les VM

Cette page explique comment activer l'accès basé sur les certificats (CBA, certificate-based access) pour vos VM Google Cloud . Vous pouvez utiliser l'authentification basée sur les certificats pour sécuriser l'accès aux VM Google Cloud depuis des appareils vérifiés.

Présentation

L'authentification basée sur les certificats pour les VM utilise la fonctionnalité d'accès contextuel Google Cloud pour sécuriser l'accès à l'aide du protocole TLS mutuel (mTLS). Voici les principaux composants que vous utilisez pour activer et utiliser l'authentification basée sur les certificats pour les VM :

  • Access Context Manager : vous permet de créer des niveaux d'accès nécessitant des certificats pour déterminer l'accès aux applications Web.
  • Identity-Aware Proxy (IAP) : le transfert TCP d'IAP vous permet d'établir un tunnel chiffré sur lequel vous pouvez transférer le trafic SSH, RDP et tout autre trafic vers des instances de VM. De plus, une règle IAP vous permet de contrôler précisément les utilisateurs autorisés à établir des tunnels vers des instances de VM spécifiques et les conditions d'accès que les utilisateurs doivent remplir pour utiliser ces tunnels.
  • Règle Chrome Enterprise : fournit une authentification mutuelle (mTLS) entre les utilisateurs et les VM lorsqu'ils utilisent le navigateur Chrome.
  • Google Cloud CLI : fournit une authentification mutuelle (mTLS) entre les utilisateurs et les VM lorsqu'ils utilisent la gcloud CLI.

Avant de commencer

Assurez-vous d'avoir créé des niveaux d'accès CBA pour votre projet Google Cloud .

Accorder des rôles pour accéder aux VM via le transfert TCP IAP

Vous devez attribuer les rôles IAM (Identity and Access Management) appropriés à un projet pour permettre aux utilisateurs ou aux groupes d'utilisateurs d'utiliser le transfert TCP IAP pour accéder aux VM.

Le tableau suivant présente les rôles prédéfinis que vous devez attribuer aux administrateurs de confiance pour le transfert TCP et les tâches associées.

Tâche Rôles En savoir plus
Transfert TCP Utilisateur de tunnels sécurisés par IAP (roles/iap.tunnelResourceAccessor) Accorder l'accès à toutes les instances de VM d'un projet ou Accorder l'accès à une VM spécifique
Accès SSH Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1)
OS Login (recommandé) Diverses Configurer des rôles de connexion au système d'exploitation pour les comptes utilisateur
Utiliser un compte de service Utilisateur du compte de service (roles/iam.serviceAccountUser) Rôle serviceAccountUser

Pour en savoir plus sur l'attribution de rôles pour le transfert TCP IAP, consultez Attribuer des rôles pour le transfert TCP IAP.

Configurer un accès basé sur un certificat à une VM

Bien qu'IAP-TCP vous permette d'accorder l'accès à toutes les instances de VM d'un projet, vous devez configurer l'accès basé sur les certificats pour chaque instance de VM.

Pour accorder à un utilisateur ou à un groupe d'utilisateurs un accès basé sur des certificats à une VM, attribuez-leur le rôle roles/iap.tunnelResourceAccessor sur l'instance de VM. Les autres rôles peuvent être accordés au niveau du projet.

Console

  1. Ouvrez la page d'administration d'IAP, puis sélectionnez l'onglet Ressources SSH et TCP.

    Accéder à la page IAP

  2. Sélectionnez les instances de VM que vous souhaitez configurer. Cliquez sur Afficher le panneau d'informations si celui-ci n'est pas visible.

  3. Cliquez sur Ajouter un compte principal et configurez les éléments suivants :

    • Nouveaux comptes principaux : spécifiez l'utilisateur ou le groupe d'utilisateurs auxquels vous souhaitez accorder l'accès.
    • Sélectionner un rôle : sélectionnez Cloud IAP > Utilisateur de tunnels sécurisés par IAP.
  4. Cliquez sur Ajouter une condition IAM et configurez une condition :

    • Titre : saisissez un nom pour la condition.
    • Générateur de conditions : sélectionnez Niveau d'accès dans le menu déroulant Type de condition, puis sélectionnez le niveau d'accès basé sur le certificat que vous avez créé précédemment.
  5. Cliquez sur Enregistrer.

API

Pour configurer l'accès à une VM basé sur un certificat, modifiez le fichier policy.json de votre application.

Pour en savoir plus sur l'utilisation de l'API IAM pour gérer les stratégies d'accès, consultez Gérer l'accès aux ressources sécurisées par IAP.

  1. Exportez les variables suivantes.

    export IAP_BASE_URL=https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_tunnel
    # Replace POLICY_FILE.JSON with the name of JSON file to use for setIamPolicy
    export JSON_NEW_POLICY=POLICY_FILE.JSON
    
  2. Obtenez la stratégie IAM pour l'instance Compute Engine à l'aide de la méthode getIamPolicy. Le bit de données vide à la fin transforme la requête curl en POST au lieu de GET.

    curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \
         ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:getIamPolicy \
         -d ''
    
  3. Accordez le rôle iap.tunnelResourceAccessor et l'accès basé sur les certificats à vos principaux en modifiant le fichier JSON de stratégie IAM.

    Vous trouverez ci-dessous un exemple de fichier policy.json qui accorde le rôle iap.tunnelResourceAccessor à un groupe d'administrateurs d'instances de VM, en leur donnant un accès basé sur les certificats aux ressources de tunnel sécurisées par IAP.

    Notez que si un compte principal possède le rôle Propriétaire, il est autorisé à utiliser IAP pour le transfert TCP.

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/iap.tunnelResourceAccessor",
            "members": ["group:instance-admins@example.com"],
            "condition": {
              "expression": "\"accessPolicies/POLICY_NAME/accessLevels/CERTIFICATE_BASED_ACCESS_LEVEL_NAME\" in request.auth.access_levels,
              "title": "CERTIFICATE_BASED_CONDITION_NAME"
            }
          }
        ]
      }
    }
    

    Pour trouver un nom de stratégie, appelez la méthode accessPolicies.list.

    GET https://accesscontextmanager.googleapis.com/v1/accessPolicies
    
  4. Définissez votre nouveau fichier policy.json à l'aide de la méthode setIamPolicy.

    curl -i -H "Content-Type:application/json" \
              -H "Authorization: Bearer $(gcloud auth print-access-token)" \
              ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:setIamPolicy \
              -d @${JSON_NEW_POLICY}
    

Accéder aux VM à l'aide de certificats client

Pour accéder aux VM à l'aide de certificats client, utilisez l'une des méthodes suivantes.

Utiliser des certificats client dans le navigateur Chrome pour accéder aux VM

  1. Configurez le navigateur Chrome à l'aide de l'une des options suivantes.
  2. Dans le navigateur Chrome, saisissez le domaine suivant pour accéder à la consoleGoogle Cloud  : console-secure.cloud.google.com.
  3. Accédez aux VM  Google Cloud à l'aide de l'acheminement par tunnel IAP.

Utiliser des certificats client sur gcloud CLI pour accéder aux VM

  1. Configurez la gcloud CLI à l'aide de l'une des méthodes suivantes.

  2. Accédez aux VM  Google Cloud à l'aide de l'acheminement par tunnel IAP.