Utiliser des comptes de service pour créer des règles

Un compte de service est un compte Google non humain spécial que les applications, les processus automatisés ou les charges de travail de calcul, telles qu'une instance Compute Engine, utilisent pour effectuer des appels d'API autorisés. Contrairement aux comptes utilisateur, un compte de service est identifié uniquement par son adresse e-mail unique.

Les applications utilisent des comptes de service pour s'authentifier et accéder aux ressourcesGoogle Cloud . Lorsqu'une application s'authentifie à l'aide d'un compte de service, elle obtient l'accès aux ressources pour lesquelles le compte de service a reçu des autorisations Identity and Access Management explicites. Cela fournit une méthode sécurisée, auditable et centralisée pour l'autorisation de machine à machine.

Pour Secure Web Proxy, les comptes de service jouent un rôle essentiel dans l'autorisation et l'application des règles. En utilisant un compte de service pour identifier la source de trafic d'une charge de travail, vous pouvez créer des règles Secure Web Proxy précises qui autorisent ou refusent spécifiquement le trafic Web en fonction de l'identité de l'application, et pas seulement de son adresse IP.

Cette page vous explique comment :

Avant de commencer

Créer une instance Secure Web Proxy avec une règle vide

Pour créer une instance de Secure Web Proxy, vous devez d'abord créer une stratégie de sécurité vide, puis créer un proxy Web qui utilise cette stratégie.

Créer une règle de sécurité vide

Console

  1. Dans la console Google Cloud , accédez à la page Règles SWP.

    Accéder aux règles SWP

  2. Cliquez sur Créer une règle.

  3. Dans le champ Nom, saisissez un nom pour la règle, tel que myswppolicy.

  4. Dans le champ Description, saisissez une description de la règle, par exemple My new swp policy.

  5. Pour Régions, sélectionnez la région dans laquelle vous souhaitez créer le règlement, par exemple us-central1.

  6. Cliquez sur Créer.

Cloud Shell

  1. Utilisez l'éditeur de texte de votre choix pour créer un fichier policy.yaml.

  2. Ajoutez ce qui suit au fichier policy.yaml que vous avez créé :

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    Remplacez les éléments suivants :

    • PROJECT_NAME : nom de votre projet

    • REGION : région dans laquelle votre stratégie est créée, par exemple us-central1

    • POLICY_NAME : nom de votre règle

    • POLICY_DESCRIPTION : description de votre règle

  3. Importez la stratégie de sécurité à l'aide de la commande gcloud network-security gateway-security-policies import :

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

Créer un proxy Web

Console

  1. Dans la console Google Cloud , accédez à la page Proxys Web.

    Accéder aux proxys Web

  2. Cliquez sur Créer un proxy Web sécurisé.

  3. Dans le champ Nom, saisissez un nom pour le proxy Web, tel que myswp.

  4. Dans le champ Description, saisissez une description du proxy Web, par exemple My new swp.

  5. Pour Mode de routage, sélectionnez l'une des options suivantes :

    • Explicite : déploie votre instance Secure Web Proxy en mode proxy explicite.
    • Saut suivant : déploie votre instance Secure Web Proxy en mode saut suivant.
  6. Pour Régions, sélectionnez la région dans laquelle vous souhaitez créer le proxy Web, par exemple us-central1.

  7. Pour Réseau, sélectionnez le réseau sur lequel vous souhaitez créer le proxy Web.

  8. Pour Sous-réseau, sélectionnez le sous-réseau VPC que vous avez créé lors de la configuration initiale.

  9. Facultatif : Dans le champ Adresse IP du proxy Web, saisissez l'adresse IP du Secure Web Proxy.

    Vous pouvez saisir une adresse IP de la plage d'adresses IP du Secure Web Proxy qui se trouve dans le sous-réseau que vous avez créé à l'étape précédente. Si vous ne saisissez pas l'adresse IP, votre instance Secure Web Proxy choisit automatiquement une adresse IP dans le sous-réseau sélectionné.

  10. Pour Certificat, sélectionnez le certificat que vous souhaitez utiliser pour créer le proxy Web.

  11. Pour Règle, sélectionnez la règle que vous avez créée pour associer le proxy Web.

  12. Cliquez sur Créer.

Cloud Shell

  1. Utilisez l'éditeur de texte de votre choix pour créer un fichier gateway.yaml.

  2. Ajoutez ce qui suit au fichier gateway.yaml.

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    Remplacez les éléments suivants :

    • GATEWAY_NAME : nom de cette instance Secure Web Proxy

    • GATEWAY_PORT_NUMBERS : liste des numéros de port pour cette passerelle, par exemple [80,443]

    • CERTIFICATE_URLS : liste des URL des certificats SSL

    • SUBNETWORK : sous-réseau VPC que vous avez créé lors de la configuration initiale

    • ROUTING_MODE : spécifiez le mode de routage du proxy Web requis :

      • EXPLICIT_ROUTING_MODE : déploie votre instance Secure Web Proxy en mode proxy explicite.
      • NEXT_HOP_ROUTING_MODE : déploie votre instance Secure Web Proxy en mode "prochain saut".
    • GATEWAY_IP_ADDRESS : liste facultative des adresses IP de vos instances Secure Web Proxy dans les sous-réseaux de proxy que vous avez créés précédemment dans les étapes de configuration initiale

      Si vous choisissez de ne pas lister les adresses IP, omettez le champ pour laisser le proxy Web choisir une adresse IP pour vous.

  3. Créez l'instance Secure Web Proxy à l'aide de la commande gcloud network-services gateways import :

    gcloud network-services gateways import GATEWAY_NAME \
        --source=gateway.yaml \
        --location=REGION
    

Tester la connectivité

Pour tester la connectivité, utilisez la commande curl à partir de n'importe quelle instance de machine virtuelle (VM) de votre réseau de cloud privé virtuel (VPC) :

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure

Si tout fonctionne correctement, votre instance de Secure Web Proxy renvoie un code d'état 403 Forbidden. Cette erreur confirme les points suivants :

  • L'instance Secure Web Proxy a été déployée et reçoit activement du trafic.

  • La stratégie Secure Web Proxy applique correctement la posture de sécurité par défaut qui consiste à refuser tout le trafic jusqu'à ce que vous définissiez des règles allow spécifiques dans les sections suivantes.

Créer un compte de service et attribuer des rôles IAM

  1. Créez un compte de service : utilisez la commande gcloud iam service-accounts create pour créer un compte de service nommé my-swp-sa dans votre projet Google Cloud.

    gcloud iam service-accounts create my-swp-sa \
        --display-name="Secure Web Proxy service account" \
        --description="Service account for Secure Web Proxy instances"
  2. Attribuez des rôles IAM au compte de service : utilisez la commande gcloud projects add-iam-policy-binding pour attribuer les rôles IAM nécessaires au compte de service afin qu'il puisse gérer ou utiliser les ressources de votre projet Google Cloud .

    Par exemple, pour autoriser le compte de service à utiliser les ressources réseau, accordez-lui le rôle Utilisateur de réseau de Compute (roles/compute.networkUser).

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:my-swp-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.networkUser"

    Remplacez PROJECT_ID par l'ID de votre projetGoogle Cloud .

Créer une règle Secure Web Proxy

Console

  1. Dans la console Google Cloud , accédez à la page Règles SWP.

    Accéder aux règles SWP

  2. Cliquez sur le nom de la stratégie que vous avez créée précédemment, par exemple myswppolicy.

  3. Cliquez sur Ajouter une règle.

  4. Pour chaque règle, procédez comme suit :

    1. Dans le champ Priorité, saisissez l'ordre d'évaluation numérique de la règle. Les règles sont évaluées de la priorité la plus élevée à la plus faible, où 0 correspond à la priorité la plus élevée.

    2. Dans le champ Nom, saisissez un nom pour la règle.

    3. Dans le champ Description, saisissez une description de la règle.

    4. Pour Action, sélectionnez l'une des options suivantes :

      • Autoriser : autorise les demandes de connexion correspondant à la règle.
      • Refuser : pour refuser les demandes de connexion correspondant à la règle.
    5. Pour le champ État, sélectionnez l'une des options suivantes pour l'application des règles :

      • Activé : pour appliquer la règle à votre instance Secure Web Proxy.
      • Désactivé : pour ne pas appliquer la règle à votre instance Secure Web Proxy.
    6. Dans la section Session Match, spécifiez l'adresse e-mail du compte de service que vous avez créé précédemment. Exemple :

        sessionMatcher: "source.matchServiceAccount(SERVICE_ACCOUNT) && host() == 'example.com'"
      

      Pour en savoir plus sur la syntaxe de SessionMatcher, consultez la documentation de référence sur le langage de correspondance CEL.

    7. Dans la section Correspondance de l'application, spécifiez les critères de correspondance de la requête.

    8. Cliquez sur Ajouter une règle.

  5. Pour ajouter une autre règle, cliquez sur Ajouter une règle.

Cloud Shell

  1. Utilisez l'éditeur de texte de votre choix pour créer le fichier rule.yaml.

  2. Pour autoriser l'accès à une URL à partir du compte de service approprié, ajoutez les éléments suivants au fichier rule.yaml que vous avez créé :

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

    Remplacez les éléments suivants :

    • RULE_NAME : nom de cette règle
    • RULE_DESCRIPTION : description de la règle
    • RULE_PRIORITY : priorité de cette règle. Plus le nombre est faible, plus la priorité est élevée.
    • CEL_EXPRESSION : expression CEL (Common Expression Language). Pour en savoir plus, consultez la documentation de référence sur le langage de correspondance CEL.

    Par exemple, pour autoriser l'accès à example.com à partir de la ressource avec le compte de service requis, ajoutez ce qui suit au fichier YAML que vous avez créé pour sessionMatcher :

    ```yaml
    sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
    ```
    

    Remplacez SERVICE_ACCOUNT par le compte de service que vous souhaitez autoriser. Il doit s'agir de l'adresse e-mail du compte de service.

  3. Importez les règles que vous avez créées à l'aide de la commande gcloud network-security gateway-security-policies rules import :

    gcloud network-security gateway-security-policies rules import RULE_NAME \
        --source=RULE_FILE.yaml \
        --location=REGION \
        --gateway-security-policy=POLICY_NAME
    

Tester la connectivité

Vous pouvez tester à nouveau la connectivité pour vérifier que l'ensemble de votre configuration Secure Web Proxy, y compris le compte de service, les règles de stratégie de sécurité et la passerelle, fonctionne comme prévu.

Pour tester la connectivité, utilisez la commande curl à partir de la ressource (par exemple, une instance de VM) avec le SERVICE_ACCOUNT associé :

curl -x https://IPv4_ADDRESS:443 http://example.com 
--proxy-insecure

Remplacez IPv4_ADDRESS par l'adresse IPv4 de votre instance Secure Web Proxy.

Si tout fonctionne correctement, vous recevrez un code d'état 200 OK. Ce code d'état confirme les principaux résultats suivants :

  • Autorisation réussie : cela prouve que le trafic provenant de la ressource est correctement identifié par le compte de service attribué et que cette identité correspond à la règle allow que vous avez ajoutée à la stratégie de sécurité.

  • Fonctionnalité de bout en bout : elle valide que le trafic circule correctement sur le chemin configuré, de la ressource à l'instance Secure Web Proxy, en passant par la règle de sécurité et en atteignant la destination externe.

Étapes suivantes