Sécuriser l'accès aux applications Web privées

Ce document explique comment configurer une passerelle sécurisée Chrome Enterprise Premium pour sécuriser l'accès à vos applications Web privées.

Une passerelle sécurisée Chrome Enterprise Premium fonctionne comme un proxy inverse, appliquant un framework d'accès zéro confiance et offrant un contrôle précis et contextuel sur les personnes qui accèdent à vos applications Web privées.

Fonctionnement de la sécurisation de l'accès aux applications Web privées

En établissant un tunnel sécurisé et en appliquant des règles d'accès contextuel, la passerelle sécurisée protège les applications privées et les met à l'abri de l'exposition à l'Internet public. Une configuration de navigateur côté client dirige le trafic de ces applications via le point de terminaison du proxy de passerelle sécurisée. La passerelle sécurisée applique ensuite la règle d'accès appropriée et, si elle est autorisée, achemine la requête vers l'application de destination.

La passerelle sécurisée peut protéger les applications Web privées hébergées dans les environnements suivants :

  • Google Cloud project : la passerelle sécurisée peut permettre un accès direct aux applications qui s'exécutent dans votre réseau VPC Google Cloud .

  • Non-Google Cloud (centres de données sur site ou autres clouds) : vous devez d'abord établir une connexion entre votre réseau VPC privé surGoogle Cloud et le réseau non-Google Cloud . Cette opération est généralement effectuée à l'aide de Cloud VPN ou Cloud Interconnect. La passerelle sécurisée utilise ensuite la connexion pour envoyer le trafic à votre réseau VPC privé, qui le redirige à son tour vers l'environnement non-Google Cloud .

Avant de commencer

Avant de configurer la passerelle sécurisée, vérifiez que vous disposez des éléments suivants :

Configurer votre environnement shell

Pour simplifier le processus de configuration et interagir avec les API de la passerelle sécurisée, définissez les variables d'environnement suivantes dans votre shell de travail.

  • Paramètres généraux

    API="beyondcorp.googleapis.com"
    API_VERSION=v1
    PROJECT_ID=MY_PROJECT_ID

    Remplacez les éléments suivants :

    • MY_PROJECT_ID : ID du projet dans lequel la passerelle sécurisée est créée.
  • Paramètres de la passerelle sécurisée

    SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"

    Remplacez les éléments suivants :

    • MY_SECURITY_GATEWAY_ID : ID de la passerelle sécurisée que vous souhaitez créer. L'ID peut comporter jusqu'à 63 caractères et peut contenir des lettres minuscules, des chiffres et des traits d'union. Le premier caractère doit être une lettre, et le dernier peut être une lettre ou un chiffre.
    • MY_SECURITY_GATEWAY_DISPLAY_NAME : nom lisible de la passerelle sécurisée. Le nom peut comporter jusqu'à 63 caractères et inclure des caractères imprimables.

Créer une passerelle sécurisée

Une passerelle sécurisée Chrome Enterprise Premium est un élément fondamental pour établir des connexions sécurisées à vos applications. Il alloue un projet et un réseau dédiés, ce qui assure l'isolation et la sécurité.

gcloud

gcloud beta beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
  --project=${PROJECT_ID} \
  --location=global \
  --display-name="${SECURITY_GATEWAY_DISPLAY_NAME}"
      

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME" }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
      

Configurer une application Web privée

Avant de pouvoir définir des ressources d'application spécifiques dans la passerelle sécurisée, vous devez configurer les autorisations et les paramètres réseau nécessaires pour activer la connectivité et le routage approprié.

Accordez des autorisations au compte de service.

Pour envoyer du trafic à votre réseau VPC, la passerelle de sécurité a besoin de certaines autorisations IAM accordées à son compte de service de délégation. Cela permet à la passerelle sécurisée d'accéder à vos applications privées, qu'elles soient hébergées dans un VPC Google Cloud ou dans un environnement non Google Cloud connecté via Cloud VPN ou Cloud Interconnect.Google Cloud

  1. Obtenez les détails de votre passerelle sécurisée pour identifier l'adresse e-mail du compte de service de délégation. L'adresse e-mail se trouve dans le champ delegatingServiceAccount de la réponse.

    gcloud

    gcloud beta beyondcorp security-gateways describe ${SECURITY_GATEWAY_ID} \
       --project=${PROJECT_ID} \
       --location=global
                   

    REST

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
                   
  2. Définissez des variables d'environnement pour le compte de service et votre projet VPC cible.
    DELEGATING_SERVICE_ACCOUNT="security-gateway@my-gateway-service-account.iam.gserviceaccount.com" # Replace with actual value
          
  3. Attribuez le rôle IAM roles/beyondcorp.upstreamAccess au compte de service déléguant dans votre projet VPC privé.
    gcloud projects add-iam-policy-binding PRIVATE_VPC_PROJECT_ID \
       --role=roles/beyondcorp.upstreamAccess \
       --member=serviceAccount:${DELEGATING_SERVICE_ACCOUNT}
        
    Remplacez PRIVATE_VPC_PROJECT_ID par l'ID du projet du réseau VPC dans lequel l'application Web privée est déployée ou dans lequel Cloud VPN/Interconnect est configuré.

Une fois le rôle attribué, la prise en compte de la stratégie Identity and Access Management peut prendre environ deux minutes.

Configurer le routage réseau et les règles de pare-feu

Pour autoriser le trafic provenant de la passerelle sécurisée à atteindre vos applications Web privées, configurez les règles de pare-feu, le routage réseau et les paramètres DNS.

Règles de pare-feu pour les applications dans Google Cloud

Si votre application Web privée est hébergée dans votre réseau VPC Google Cloud , par exemple sur une VM Compute Engine, un service Google Kubernetes Engine avec une adresse IP interne ou derrière un équilibreur de charge TCP/UDP interne, configurez des règles de pare-feu VPCGoogle Cloud . Cela autorise le trafic TCP entrant provenant des plages d'adresses IP de la passerelle sécurisée : 34.158.8.0/21 et 136.124.16.0/20.

Règles de pare-feu pour les applications dans des environnements non-Google Cloud

Si votre application Web privée réside dans un centre de données sur site ou sur le réseau d'un autre fournisseur de cloud, et qu'elle est connectée à votre réseau VPC Google Cloudà l'aide de Cloud VPN ou Cloud Interconnect, configurez des règles de pare-feu sur votre pare-feu sur site ou les contrôles de sécurité réseau équivalents, tels que les groupes de sécurité et les ACL réseau, dans l'autre environnement cloud. Cela autorise le trafic TCP entrant provenant des plages d'adresses IP de la passerelle sécurisée.

Configurer le routage des environnements non-Google Cloud vers une passerelle sécurisée

Pour faciliter la communication bidirectionnelle pour les applications privées hébergées dans des environnements nonGoogle Cloud , tels que sur site ou dans d'autres clouds, votre réseau externe doit créer un chemin de retour vers les plages d'adresses IP de passerelle sécurisée suivantes : 34.158.8.0/21 et 136.124.16.0/20.

Vérifiez que votre réseau privé peut accéder aux plages d'adresses IP de la passerelle sécurisée via Cloud VPN ou Cloud Interconnect :

  • Routage dynamique : si vous utilisez le routage dynamique, tel que le protocole BGP (Border Gateway Protocol) avec Cloud Router, vérifiez que votre Cloud Router dans Google Cloud annonce explicitement les plages d'adresses IP de la passerelle sécurisée à votre appareil BGP sur site. Bien que BGP échange dynamiquement de nombreuses routes, les plages d'adresses IP de la passerelle sécurisée nécessitent une annonce explicite.

  • Routage statique : si vous utilisez des routes statiques, vous devez ajouter manuellement des routes pour chacune des plages d'adresses IP de la passerelle sécurisée sur l'équipement de votre réseau sur site, tel que votre routeur ou votre pare-feu. Ces routes statiques doivent spécifier que le trafic destiné aux plages d'adresses IP de la passerelle sécurisée doit être envoyé via la connexion Cloud VPN ou Cloud Interconnect.

    Lorsque vous utilisez le routage statique, Cloud VPN doit se trouver dans l'une des régions compatibles suivantes :

    • africa-south1
    • asia-east1
    • asia-south1
    • asia-south2
    • asia-southeast1
    • europe-central2
    • europe-north1
    • europe-southwest1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west8
    • europe-west9
    • northamerica-northeast1
    • northamerica-northeast2
    • northamerica-south1
    • southamerica-east1
    • southamerica-west1
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-west1

Configuration DNS pour la résolution de noms d'hôte privés de la passerelle sécurisée

Pour que la passerelle sécurisée puisse résoudre les noms d'hôte de votre application privée, votre réseau VPCGoogle Cloud doit pouvoir résoudre les noms d'hôte à l'aide de Cloud DNS. La configuration Cloud DNS spécifique dépend de l'emplacement où vos enregistrements DNS privés sont hébergés de manière autoritaire :

  • Applications dans Google Cloud utilisant des zones privées Cloud DNS : si vos applications privées sont hébergées dans Google Cloud et que leurs enregistrements DNS sont gérés dans des zones privées Cloud DNS associées à votre réseau VPC, vérifiez que les zones sont correctement configurées et accessibles. La passerelle sécurisée utilise les fonctionnalités de résolution Cloud DNS existantes de votre VPC.

  • Applications dans des environnements non-Google Cloud ou utilisant des serveurs DNS externes : si vos applications privées se trouvent dans des environnements non-Google Cloud(sur site ou dans d'autres clouds) ou si leurs enregistrements DNS sont gérés par des serveurs DNS externes aux zones privées Cloud DNS de votre VPC, vous devez configurer Cloud DNS pour qu'il transfère les requêtes pour ces domaines privés. Cela implique généralement de créer des zones de transfert Cloud DNS dans votre VPC. Ces zones redirigeront les requêtes DNS pour vos domaines privés spécifiés vers vos serveurs DNS privés faisant autorité, tels que les serveurs sur site ou d'autres clouds.

Pour obtenir des instructions détaillées sur la configuration du DNS, consultez Créer une zone de transfert.

Créer une ressource d'application

Pour fournir un accès à une application Web privée, vous devez établir l'application dans le framework de passerelle sécurisée en créant une ressource d'application. Cette ressource définit la manière dont la passerelle sécurisée identifie le trafic de votre application (en fonction du nom d'hôte) et où l'acheminer.

  1. Définissez les variables d'environnement requises en exécutant la commande suivante :
       APPLICATION_ID=MY_APPLICATION_ID
       APP_DISPLAY_NAME="MY_APP_DISPLAY_NAME"
       HOST_NAME=MY_HOST_NAME
       PRIVATE_NETWORK_RESOURCE_NAME=MY_PRIVATE_NETWORK_RESOURCE_NAME
       
    Remplacez les éléments suivants :
    • MY_APPLICATION_ID : ID unique de la ressource d'application.
    • MY_APP_DISPLAY_NAME : nom lisible à afficher.
    • MY_HOST_NAME : nom d'hôte principal auquel les utilisateurs accèdent (par exemple, private.local).
    • MY_PRIVATE_NETWORK_RESOURCE_NAME : nom complet de la ressource du réseau VPC (par exemple, projects/my-project/global/networks/my-network).
  2. Créez la ressource d'application.

    gcloud

    Exécutez la commande suivante pour créer la ressource d'application.

    gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
      --project=${PROJECT_ID} \
      --security-gateway=${SECURITY_GATEWAY_ID} \
      --location=global \
      --display-name="${APP_DISPLAY_NAME}" \
      --endpoint-matchers="hostname=${HOST_NAME}" \
      --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}"
            

    Pour spécifier une région de sortie (par exemple, lorsque vous utilisez des routes statiques), ajoutez l'option --egress-regions :

    gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
      --project=${PROJECT_ID} \
      --security-gateway=${SECURITY_GATEWAY_ID} \
      --location=global \
      --display-name="${APP_DISPLAY_NAME}" \
      --endpoint-matchers="hostname=${HOST_NAME}" \
      --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}",egressPolicy=regions=us-central1
            

    Remplacez us-central1 par la région Google Cloud (par exemple, europe-west1 ou asia-northeast1) qui correspond à votre configuration de routage statique régional. Si vous n'avez pas d'exigences spécifiques en matière de routage statique régional, vous pouvez omettre la règle de sortie de votre configuration.

    REST

    Pour créer une ressource d'application avec l'API, procédez comme suit :

    1. Créez un fichier nommé application.json.

      {
      "display_name": "MY_APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "MY_HOST_NAME"}
      ],
      "upstreams": [{
         "network": {
            "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME"
         }
      }]
      }
               

      Pour spécifier une région de sortie (par exemple, lorsque vous utilisez des routes statiques), ajoutez un egress_policy à la configuration en amont :

      {
      "display_name": "MY_APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "MY_HOST_NAME"}
      ],
      "upstreams": [{
         "network": {
            "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME"
         },
         "egress_policy": {
            "regions": [
            "us-central1"
            ]
         }
      }]
      }
                

      Remplacez us-central1 par la région Google Cloud (par exemple, europe-west1 ou asia-northeast1) qui correspond à votre configuration de routage statique régional. Si vous n'avez pas d'exigences spécifiques en matière de routage statique régional, vous pouvez omettre la règle de sortie de votre configuration.

    2. Appelez la méthode API Create.

      curl \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -X POST \
      -d @application.json \
      "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
                

Configurer le mode proxy Google Chrome

Pour acheminer le trafic de la ressource d'application via la passerelle sécurisée, configurez Chrome en appliquant un fichier PAC dans les paramètres Chrome de la console d'administration Google.

  1. Créez ou mettez à jour un fichier PAC.

    • Si vous créez votre première application, créez un fichier pac_config.js à l'aide de l'exemple de fichier PAC suivant.

    • Si vous créez une deuxième application ou une application ultérieure, mettez à jour votre fichier pac_config.js existant et ajoutez les domaines de votre nouvelle application au tableau des sites, comme indiqué dans l'exemple de fichier PAC suivant.

    function FindProxyForURL(url, host) {
     const PROXY = "HTTPS ingress.cloudproxy.app:443";
     const sites = ["MY_HOST_NAME"];
    
     for (const site of sites) {
       if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
         return PROXY;
       }
     }
    return 'DIRECT';
    }

    Si vous utilisez un fichier PAC existant qui n'est pas spécifique à une passerelle sécurisée, fusionnez les fichiers PAC en ajoutant les domaines de votre application au tableau des sites.

  2. Importez le fichier pour qu'il soit téléchargeable publiquement. Par exemple, vous pouvez importer le fichier dans Cloud Storage et le rendre téléchargeable publiquement en attribuant le rôle Utilisateur d'objets Storage à tous les utilisateurs pour le bucket.

  3. Pour vérifier que le fichier importé est toujours la dernière version, vous pouvez ajuster son comportement de mise en cache en définissant l'en-tête Cache-Control sur no-cache. Ce paramètre empêche les navigateurs et les serveurs intermédiaires de stocker une copie du fichier. Chrome télécharge ainsi toujours la version la plus récente.

    Pour en savoir plus sur Cache-Control et son impact sur la mise en cache du navigateur, consultez En-tête Cache-Control.

  4. Copiez l'URL publique du fichier importé.

Modifier les paramètres du mode proxy

  1. Accédez à la console d'administration Google.
  2. Cliquez sur Appareils > Chrome > Paramètres.
  3. Sélectionnez une unité organisationnelle ou un groupe, puis cliquez sur Mode proxy.
  4. Sur la page "Mode proxy", sélectionnez Toujours utiliser la configuration automatique du proxy indiquée ci-dessous, puis saisissez l'URL du fichier PAC depuis Cloud Storage.

Configurer une règle d'accès

Vous pouvez appliquer une règle d'accès au niveau de la passerelle sécurisée ou de l'application :

  • Ressource de passerelle sécurisée : appliquez une règle au niveau de la passerelle sécurisée pour contrôler l'accès à toutes les applications associées.
  • Application individuelle : pour un contrôle plus précis, vous pouvez appliquer une règle d'accès à une application individuelle.
  1. Créez un fichier au format JSON nommé setIamPolicy.json et ajoutez-y les éléments suivants.

    {
     "policy": {
       object (POLICY)
     }
    }

    Remplacez POLICY par une stratégie d'autorisation IAM. Le etag de la règle doit être identique à celui de la règle active, que vous pouvez obtenir en appelant la méthode getIamPolicy.etag

  2. Pour autoriser un groupe spécifique à utiliser la passerelle sécurisée, accordez-lui le rôle roles/beyondcorp.securityGatewayUser.

    {
     "policy": {
       "version": 3,
       "bindings": [
         {
           "role": "roles/beyondcorp.securityGatewayUser",
           "members": [
                   "group:"
           ]
         }
       ],
       "etag": "AA1jlb"
     }
    }

    Pour en savoir plus sur les identifiants, tels que serviceAccount, user, group, principal et principalSet, dans les associations de stratégie, consultez Compte principal IAM.

  3. Appliquez le règlement d'accès à la passerelle sécurisée spécifiée dans le fichier JSON en appelant l'API setIamPolicy.

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d @setIamPolicy.json \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}:setIamPolicy"

    Pour appliquer la règle d'accès à une application, utilisez la commande suivante :

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d @setIamPolicy.json \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_NAME}:setIamPolicy"

Vous pouvez également définir des règles d'accès avec des niveaux d'accès comme condition, comme illustré dans l'exemple suivant.

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
                "group:"
        ],
        "condition": {
                "expression": "'accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels",
                "title": "Source IP must be in US"
        }
      }
    ],
    "etag": "A1jlb"
  }
}'

Installer l'extension Chrome Enterprise Premium

L'extension Chrome Enterprise Premium fait partie intégrante d'une passerelle sécurisée et facilite l'authentification. Installez l'extension pour tous les utilisateurs de la passerelle sécurisée. Pour savoir comment déployer l'extension, consultez Afficher et configurer des applications et des extensions.

  1. Accédez à la console d'administration Google.
  2. Cliquez sur Navigateur Chrome > Applications et extensions.
  3. Cliquez sur l'onglet Utilisateurs et navigateurs.
  4. Pour ajouter une extension Chrome, cliquez sur le bouton +.
  5. Recherchez ekajlcmdfcigmdbphhifahdfjbkciflj, puis forcez l'installation pour tous les utilisateurs de l'unité organisationnelle ou du groupe.
  6. Cliquez sur l'extension installée, puis accédez au champ Règles relatives aux extensions et fournissez la valeur JSON suivante :

    {
     "securityGateway": {
       "Value": {
         "authentication": {},
         "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" }
       }
     }
    }

Expérience de l'utilisateur final

Une fois la configuration terminée, l'accès des utilisateurs finaux à l'application SaaS protégée est accordé ou refusé en fonction de la règle d'accès appliquée à l'application.

Accéder à l'application dans Chrome

L'extension Chrome Enterprise Premium est requise pour rediriger le trafic via la passerelle sécurisée. L'extension gère l'authentification entre l'utilisateur et la passerelle sécurisée. L'extension est installée automatiquement via la règle de domaine.

Lorsque les utilisateurs accèdent à l'application SaaS que vous avez configurée, leur trafic passe par la passerelle sécurisée, qui vérifie s'ils respectent la règle d'accès. Si les utilisateurs réussissent les vérifications des règles d'accès, ils peuvent accéder à l'application.

Lorsque l'accès au navigateur à l'application est refusé par la règle d'autorisation, les utilisateurs reçoivent un message Access denied.

Étapes suivantes