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

Cette page explique comment activer l'accès basé sur un certificat (CBA) pour vos VM Google Cloud. Vous pouvez utiliser la CBA pour sécuriser l'accès depuis vers des VM Google Cloud.

Présentation

L'AC pour les VM utilise la fonctionnalité d'accès contextuel de Google Cloud pour sécuriser à l'aide de TLS mutuel (mTLS). Voici les principaux composants avec lesquels vous travaillez pour activer et utiliser la CBA 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é via lequel vous pouvez transférer le trafic SSH et RDP, ainsi que tout autre trafic destiné aux instances de VM. De plus, une stratégie IAP vous offre un contrôle pour contrôler quels utilisateurs sont autorisés à établir des tunnels vers des VM spécifiques et les conditions d'accès auxquelles les utilisateurs doivent répondre via les tunnels Cloud Storage.
  • Règle Chrome Enterprise : fournit une authentification mutuelle (mTLS) entre les utilisateurs et les VM lors de l'utilisation du navigateur Chrome.
  • Google Cloud CLI: fournit une authentification mutuelle (mTLS) entre les utilisateurs et les VM lorsque vous utilisez la gcloud CLI.

Avant de commencer

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

Attribuer des rôles permettant d'accéder aux VM via le transfert TCP IAP

Vous devez attribuer les rôles IAM (Identity and Access Management) appropriés sur un projet pour permettent 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 administrateurs 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é) Divers 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 consultez la page Attribuer des rôles pour le transfert TCP IAP.

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

Bien que 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 un certificat, accordez le roles/iap.tunnelResourceAccessor sur l'instance de VM. Les autres rôles peut être accordé sur le projet.

Console

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

    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 auquel 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 Type de condition, puis sélectionnez l'accès basé sur le certificat niveau créé précédemment.
  5. Cliquez sur Enregistrer.

API

Pour configurer un accès basé sur un certificat pour une VM, modifiez le policy.json.

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

  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. Accorder le rôle iap.tunnelResourceAccessor et l'accès basé sur les certificats à vos comptes principaux en modifiant 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 dispose du 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 console Google Cloud : console-secure.cloud.google.com.
  3. Accéder aux VM Google Cloud à l'aide de Tunnelisation IAP

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

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

  2. Accédez aux VM Google Cloud à l'aide du tunneling IAP.