Utiliser des tags pour créer des stratégies

Cette page explique comment associer des tags Resource Manager à des règles de proxy Web sécurisé. Les tags Resource Manager sont des libellés que vous pouvez associer à différentes Google Cloud ressources, telles que vos instances de machines virtuelles (VM). Vous pouvez utiliser des tags pour appliquer des contrôles d'accès conditionnels sur votre réseau avec des libellés d'organisation existants.

Ces tags vous permettent d'effectuer les actions suivantes :

  • Segmenter les charges de travail : vous pouvez identifier de manière unique différents environnements tels que production ou development, et des types de services tels que frontend ou database.

  • Centraliser le contrôle des accès : vous pouvez baser vos règles de proxy Web sécurisé sur ces tags. Par exemple, vous pouvez créer une règle qui indique que seul le trafic provenant de ressources comportant le tag tag segment=production peut accéder à un ensemble spécifique d'URL.

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 Secure Web Proxy, vous devez d'abord créer une règle de sécurité vide, puis créer un proxy Web qui utilise cette règle.

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

Console

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

    Accéder aux règles SWP

  2. Cliquez sur Create a policy (Créer une règle).

  3. Dans le champ Name (Nom), saisissez un nom pour la règle, par exemple myswppolicy.

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

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

  6. Cliquez sur Create (Créer).

Cloud Shell

  1. Utilisez un éditeur de texte pour créer un fichier policy.yaml.

  2. Ajoutez le code suivant au fichier policy.yaml :

    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 règle est créée, par exemple us-central1

    • POLICY_NAME : nom de votre règle

    • POLICY_DESCRIPTION : description de votre règle

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

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

Créer un proxy Web

Console

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

    Accéder aux proxys Web

  2. Cliquez sur Create a secure web proxy (Créer un proxy Web sécurisé).

  3. Dans le champ Name (Nom), saisissez un nom pour le proxy Web, par exemple myswp.

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

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

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

  7. Pour Network (Réseau), sélectionnez le réseau dans lequel vous souhaitez créer le proxy Web.

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

  9. Facultatif : dans le champ Web proxy IP address (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 en choisit automatiquement une dans le sous-réseau sélectionné.

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

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

  12. Cliquez sur Create (Créer).

Cloud Shell

  1. Utilisez un éditeur de texte pour créer un fichier gateway.yaml.

  2. Ajoutez le code suivant 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
    

    Facultatif : Pour autoriser les applications clientes d'autres Google Cloud régions à se connecter à votre proxy, activez l'accès mondial lorsque vous créez votre instance de Secure Web Proxy.

    Dans le fichier gateway.yaml, ajoutez le champ allow_global_access et définissez-le sur true.

    Important : Vous ne pouvez activer allow_global_access que lorsque vous créez une instance Secure Web Proxy. Vous ne pourrez pas configurer ce paramètre ultérieurement.

    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
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    allow_global_access: true
    

    Remplacez les éléments suivants :

    • GATEWAY_NAME: nom de cette instance de proxy Web sécurisé

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

    • CERTIFICATE_URLS: liste des URL de 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 de Secure Web Proxy en mode saut suivant
    • GATEWAY_IP_ADDRESS : liste facultative d'adresses IP pour vos instances de Secure Web Proxy dans les sous-réseaux de proxy que vous avez créés précédemment lors des é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 de Secure Web Proxy à l'aide de la gcloud network-services gateways import commande :

    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 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 règle de Secure Web Proxy applique correctement la stratégie de sécurité par défaut consistant à refuser tout le trafic jusqu'à ce que vous définissiez des règles allow spécifiques dans les sections suivantes.

Créer et associer des tags Resource Manager

  1. Créer des clés et des valeurs de tags sécurisés

    Exemple : Pour créer un tag pour les environnements restreints, procédez comme suit :

    1. Créez la clé de tag (access-level) à l'aide de la gcloud resource-manager tags keys create commande avec l'objectif défini sur GCE_FIREWALL.

    2. Récupérez l'ID de la clé de tag à partir de la sortie de la commande de création ou à l'aide de la gcloud resource-manager tags keys list commande. Vous avez besoin de cet ID pour lier les valeurs de tag à cette clé de tag spécifique.

    3. Créez la valeur de tag (restricted) à l'aide de la gcloud resource-manager tags values create commande, en spécifiant l'ID de la clé de tag comme parent.

    # Create the tag key
    # The output provides a unique ID, such as "tagKeys/1234567890"
    
    gcloud resource-manager tags keys create "access-level" \
        --parent="organizations/1234567890" \
        --purpose="GCE_FIREWALL" \
        --purpose-values="execution_env=ANS"
    
    # Create the tag value and connect it to the key
    # The "--parent" flag identifies to which key this value belongs
    
    gcloud resource-manager tags values create "restricted" \
        --parent="tagKeys/1234567890"
    
  2. Associer des tags à des instances de VM

    L'association de ces tags associe le trafic sortant de vos instances de VM à une identité de tag spécifique, ce qui permet au proxy de reconnaître la charge de travail et d'appliquer vos règles de sécurité.

    Exemple : Supposons que vous disposez d'une instance de VM nommée internal-tool. Vous pouvez associer la valeur de tag restricted à internal-tool à l'aide de la gcloud resource-manager tags bindings create commande. Cette attribution de tag permet à votre proxy d'identifier le trafic provenant de l'instance de VM internal-tool.

    # Attach the "restricted" tag to a specific VM instance
    
    
    gcloud resource-manager tags bindings create \
        --parent="//[compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool](https://compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool)" \
        --tag-value="tagValues/987654321"
    

Créer une règle de proxy Web sécurisé

Console

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

    Accéder aux règles SWP

  2. Cliquez sur le nom de votre règle, par exemple myswppolicy.

  3. Cliquez sur Add rule (Ajouter une règle).

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

    1. Pour Priority (Priorité), saisissez un ordre d'évaluation numérique pour 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 Name (Nom), saisissez un nom pour la règle.

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

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

      • Allow (Autoriser) : pour autoriser les requêtes de connexion correspondant à la règle.
      • Deny (Refuser) : pour refuser les requêtes de connexion correspondant à la règle.
    5. Dans le champ Status (État), sélectionnez l'une des options suivantes pour l'application de la règle :

      • Enabled (Activé) : pour appliquer la règle à votre instance Secure Web Proxy.
      • Disabled (Désactivé) : pour ne pas appliquer la règle à votre instance Secure Web Proxy.
    6. Dans la section Session match (Correspondance de session), spécifiez l'ID unique du tag que vous avez créé dans la section précédente. Exemple :

      sessionMatcher: "source.matchTag('TAG&&_VALUE')  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 Application match (Correspondance d'application), spécifiez les critères de correspondance de la requête.

    8. Cliquez sur Add rule (Ajouter une règle).

Cloud Shell

  1. Utilisez un éditeur de texte pour créer le fichier rule.yaml.

  2. Pour autoriser l'accès à une URL à partir du tag requis, ajoutez le code suivant au fichier rule.yaml :

    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 ; un nombre inférieur correspond à une priorité plus é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 du tag requis, ajoutez la ligne sessionMatcher suivante au fichier YAML :

    sessionMatcher: "source.matchTag('TAG&&_VALUE')  host() == 'example.com'"
    

    Remplacez TAG_VALUE par le tag que vous souhaitez autoriser. Assurez-vous que le tag respecte le format d'identifiant de ressource numérique, par exemple tagValues/567890123456.

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

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

Tester la configuration des règles

Vous pouvez tester à nouveau la connectivité pour vérifier que votre règle Secure Web Proxy, qui repose sur les tags Resource Manager pour l'identité, fonctionne comme prévu.

Pour tester la connectivité, utilisez la commande curl à partir de n'importe quelle VM associée au tag TAG_VALUE approprié.

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 recevez un code d'état 200 OK ou 403 Forbidden. Ces réponses confirment les principaux résultats suivants :

  • Succès basé sur les tags : un code d'état 200 OK valide que le trafic d' une VM à laquelle le tag Resource Manager approprié est associé correspond à la règle et est autorisé à passer par le proxy. Cette correspondance vérifiée entraîne une connexion réussie.

  • Refus basé sur les tags : un code d'état 403 Forbidden vérifie que l'accès au trafic d'une VM sans le tag spécifié ou avec un tag incorrect est correctement refusé par la règle. Cette application prouve que votre segmentation et votre application basées sur les tags fonctionnent comme prévu.

Étape suivante