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 contextuelles, la passerelle sécurisée protège les applications privées et les empêche d'être exposées à l'Internet public. Une configuration de navigateur côté client dirige le trafic de ces applications vers 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 s'exécutant 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é sur Google 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 l'achemine à 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 (lettres minuscules, chiffres et 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 de base essentiel 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é.

Pour créer une passerelle sécurisée, procédez comme suit.

  1. Créez un fichier nommé securityGateway.json en utilisant l'exemple suivant.

    {
       "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME",
    }
    
  2. Créez une ressource de passerelle sécurisée en appelant l'API Create.

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d @securityGateway.json \
    "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 permettre la connectivité et le routage approprié.

Accordez des autorisations au compte de service.

Pour que la passerelle sécurisée puisse envoyer du trafic vers votre réseau VPC, elle 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 nonGoogle Cloud connecté via Cloud VPN ou Cloud Interconnect.

  1. Identifiez l'adresse e-mail du compte de service déléguant. Cette adresse e-mail se trouve dans le champ delegatingServiceAccount de la ressource de votre passerelle de sécurité.

    {
       "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}",
       "createTime": "2024-10-28T20:46:50.949740776Z",
       "updateTime": "2024-10-29T18:41:18.520661431Z",
       "state": "RUNNING",
       "delegatingServiceAccount": "security-gateway@my-gateway-service-account.iam.gserviceaccount.com"
    }
    
  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égué 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é, comptez environ deux minutes pour que la stratégie Identity and Access Management prenne effet.

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 services 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 permet le trafic TCP entrant à partir 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 une communication bidirectionnelle lors de la protection d'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 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 dansGoogle 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 capacité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 l'accès à une application Web privée, vous devez l'établir 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"
    

    Remplacez les éléments suivants :

    • MY_APPLICATION_ID : ID unique de la ressource d'application.
    • MY_APP_DISPLAY_NAME : nom lisible à afficher.
  2. Créez un fichier JSON nommé application.json en utilisant l'exemple suivant.

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

    Remplacez MY_HOST_NAME par le nom d'hôte principal auquel les utilisateurs accèdent. Exemple :private.local Le nom d'hôte peut comporter jusqu'à 253 caractères et doit respecter l'un des formats suivants :

    • Une adresse IPv4 valide
    • Une adresse IPv6 valide
    • Un nom DNS valide
    • Un astérisque (*)
    • Un astérisque (*) suivi d'un nom DNS valide

    Remplacez MY_PRIVATE_NETWORK_RESOURCE_NAME par le nom complet de la ressource du réseau VPC sur lequel votre application est hébergée ou connectée à votre environnement non-Google Cloud . Le nom du réseau doit être au format projects/{project}/global/networks/{network}.

  3. Facultatif : Spécifiez une région de sortie.

    Dans certaines configurations réseau, vous devrez peut-être contrôler la régionGoogle Cloud où le trafic de la passerelle sécurisée quitte votre application privée. Par exemple, cela s'applique si vous utilisez des routes statiques sur votre Cloud VPN ou Cloud Interconnect. Pour ces configurations, vous pouvez ajouter une règle de sortie à la configuration en amont de votre application. Cette règle de sortie indique à la passerelle sécurisée de router le trafic de l'application depuis la région Google Cloudspécifiée vers votre réseau privé.

    Voici un exemple de fichier JSON qui inclut un egress_policy.

    {
    "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 Google Cloud région (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.

  4. Créez la ressource d'application en appelant l'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_ID}: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